• Domingo 28 de Abril de 2024, 22:45

Autor Tema:  Pregunta A Ruben3d  (Leído 2235 veces)

bob esponja

  • Miembro MUY activo
  • ***
  • Mensajes: 411
    • Ver Perfil
    • http://marianoguerra.blogspot.com
Pregunta A Ruben3d
« en: Domingo 23 de Mayo de 2004, 21:52 »
0
ruben en un tema anterior comentaste que estabas terminando un engine 2d.
yo estoy haciendo una libreria orientada a objetos que maneja los diversos modos de la vga en modo texto y grafico y escribi un simulador de particulas muy simple
quisiera saber si un engine 2d se asemeja a eso o es otra cosa
 de que consta?
permite dibujar formas?
en que lenguaje lo programaste?

gracias por la respuesta de antemano.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Pregunta A Ruben3d
« Respuesta #1 en: Lunes 24 de Mayo de 2004, 07:17 »
0
Un engine 2d
es una conjunto de utilidades(metodos, clases, enumeraciones, interfaces etc)
que permiten trabajar todos los aspectos relativos al manejo de graficos en dos dimensiones entres estos:

retrasado vertical
tiempos
sincronizacion
sprites
backgrounds
tecnicas de animcacion como: doublebuffer, triplebuffer, pageflipping etc
definicion de colores de transparencia
manejo de espacions de memoria en la memoria de video o en memoria del pc o incluso en el stack...
operaciones logicas con bits
dibujo de pixeles
dibujo de imagenes provenientes de varios formatos graficos(jpg, dib, bmp, png)
efectos graficos a nivel de bits
control de clippers

entre otros muchos..
ahora si el engine2D es para videojuegos tambien deberia tener:


anejo de sprites en formatos completos (es decir el dibujo con informacion  relativa al mismo, como por ejemplo segmentos de imagen tiempos, archivos anexos, colores de transparencia, regiones rectangulares etc)
manejo de escenas compuestas por sprites
cargadores de escena y de personajes dinamicos (es decir que no importa si en el futuro se anexa una escena nueva este debe poderla cargar sion modificar el codigo de cargue)
manejo de items por personajes,
atributos de personajes,
atributos de items
deteccion de colisiones
manejo de variables de entorno como por ejemplo la gravedad
administrador de partidas capaz de cargar, guardar, crear, borrar archivos de avance del usuario, perferiblemente capaces de contener informacion relativa a las escenas, los personajes y los items de los personajes...etc
y mas y mas y mas y mas y mas...
ufff

El engine puede ser de dos tipos..
del tipo liviano: son engines que poseen codigo readaptable a otros proyectos haciendo pequeños cambios
del tipo robusto : son engines que no n ecesitan ningun cambio y tal como estan sriven para hacer multiples videojuegos sin siquiera meterle la mano al codigo base(ejemplo Blitz3D, el motor de SquareSoft, o el GAmeMaker que me parece malisimo pero que es un ejemplo)

en fin hay mucho que hablar de engines... en especial si aparte de orientarlos solo a la àrte grafica tratamos de orientarlos a todo lo que envuelve hacer videojuegos..

Para mi trabajo de grado, el videojuego, estamos elaborando un engine liviano... y si que tiene trabajo...
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Pregunta A Ruben3d
« Respuesta #2 en: Lunes 24 de Mayo de 2004, 07:24 »
0
:whistling:  :blink: OOOPpppppppps


que pena no me fije bien en  que era para ruben 2d sorry.
 :whistling:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Pregunta A Ruben3d
« Respuesta #3 en: Lunes 24 de Mayo de 2004, 12:03 »
0
Hola.

Lo que describes es más bien una librería gráfica, a la que le adjuntas un sistema de partículas.

El engine que mencioné está programado en C++ usando como librería gráfica OpenGL. Entre otras, posee actualmente las siguientes características:

- Sistema de ficheros que permite acceder de manera transparente a archivos que estén en el disco o en un PAK de Quake, con soporte para redireccionar todos los accesos (para mods) y para poder parchear el contenido con sólo dejar en el mismo directorio el PAK con los cambios (gracias a prioridades).

- Sistema para aislar al programador del juego del API de Windows (crear ventanas, mensajes de Windows, etc).

- Sistema de gestión de eventos de entrada (ratón, teclado).

- Sistema de gestión de tiempo, con duración del último cuadro, FPS, cronómetros, cuentas atrás (versiones pausables), pausas por espera activa o SO, etc.

- Sistema de gestión de configuración, que permite crear variables en tiempo de ejecución de varios tipos, modificarlas, cargarlas y guardarlas en disco.

- Sistema de menús, que permite crear varias pantallas con enlaces entre ellas, crear opciones para cambiar las variables dinámicas y extender por herencia para rehacer el método Draw() para así poder cambiar totalmente su aspecto.

- Sistema para gestionar texturas, con soporte para texturas animadas de manera transparente, duplicar texturas (sin duplicar el almacenamiento de cada una), y métodos Play(), Stop(), Rewind(), etc. Es fácilmente extendible para soportar nuevas extensiones, gracias a que define una interfaz para registrar nuevos cargadores.

- Sistema de fuentes, con soporte para múltiples tipos basados en texturas del sistema de texturas (por lo que soporta fuentes animadas).

- El renderer propiamente dicho, con soporte para alpha blending y tintado de texturas.

- Librería matemática con soporte para vectores 2D, 3D y 4D (coordenadas homogéneas), círculos 2D, rectángulos 2D, quads 2D y matrices de orden 4. También diversas colisiones entre ellos y generación de números aleatorios.

- Sistema de log para facilitar la depuración.

- Definición de entidades del juego, ayudantes (estilo al Gizmo de 3dsmax), colisionables, etc.

- Gestor de escena con eventos de colisión programables, movimientos jerárquicos (es muy fácil hacer un sistema planetario con satélites en torno a planetas, y montar naves de múltiples piezas, con eventos de colisión diferentes para cada una).

- Interfaz a extender por el programador para registrar el código del juego en el engine y que lo use.

Aún me queda por hacer:

- Que funcione el sistema de partículas y estabilizar el interfaz de uso.
- Profiler, para sacar el tiempo que gasta en cada parte y ver dónde hay que optimizar y eliminar cuellos de botella.
- Sonido!
- ?Que el código del juego vaya en un dll y no haya que recompilar todo?

Como ves, el engine gestiona más que sólo pintar por pantalla. Si tienes alguna duda en alguno de estos campos, no dudes en preguntar.

Un saludo.

Ruben3d

yo_aprendiz

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Re: Pregunta A Ruben3d
« Respuesta #4 en: Martes 25 de Mayo de 2004, 15:46 »
0
Hola,
 ¿Donde puedo encontrar información para crear ENGINE(webs,ejemplos,libros...)?
 ¿Teneis vuestras ENGINE a disposición en alguna WEB?

 Gracias.

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Pregunta A Ruben3d
« Respuesta #5 en: Martes 25 de Mayo de 2004, 16:21 »
0
Hola.

Citar
¿Donde puedo encontrar información para crear ENGINE(webs,ejemplos,libros...)?

Lo más normal es encontrar información sobre cómo crear algunas partes en concreto, como el grafo de escena, el sistema de colisiones, etc. Tú ya debes ver cómo ensamblar todo. De todas formas aqui tienes una serie de artículos que van explicando el desarrollo en C++ de un engine 3d desde el inicio (no está aún acabada la serie):
Enginuity

Citar
¿Teneis vuestras ENGINE a disposición en alguna WEB?

No. Además, el interfaz de uso aún está sujeto a cambios y hay partes que hay que saber utilizar (o dicho de otra manera, o se utiliza como yo he pensado o falla). Cuando llegue a la primera versión estable (0.1, con el sistema de partículas más o menos funcional) no me importaría publicar el código: mejor que alguien lo pueda aprovechar por internet a que esté cogiendo polvo en el disco duro.

Un saludo.

Ruben3d

yo_aprendiz

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Re: Pregunta A Ruben3d
« Respuesta #6 en: Miércoles 26 de Mayo de 2004, 16:05 »
0
Muchas gracias Ruben3d, a ver si cuando termines la versión estable de tu engine lo pasas para que tengamos algo  de referencia, toda la información que se tenga es poca, :comp: , y nunca viene mal.