daltomi
Registrado: 28 Abr 2007 Mensajes: 335 Ubicación: Argentina
| Publicado: 24/10/2013 2:24 pm | | | Título: |
| Buenas.
Explico por partes y muy resumido.
Básicamente un motor de juegos (game engine) se divide en capas o niveles.
* Un render engine, es el que se comunica directamente el la tarjeta de vídeo, maneja las texturas, formas geométricas, etc. Ejemplo: Direct3D, OpenGL.
* Un graphic engine, utiliza algún render engine exclusivamente, o ambos. Reúne una serie de algoritmos que permite optimizar la creación de objetos gráficos, por ejemplo tienen LOD (nivel de detalle según distancia), grafos de escena, maneja terrenos, culling(no procesar aquello que no está en pantalla), y un muy largo etc. Ejemplo: OpenSceneGraph, Irrlicht, Ogre3D.
* Un audio engine, se comunica con la tarjeta de audio(directa o indirectamente), permite manejar audio 2D/3D, también puede utilizar un algoritmo de LOD por ejemplo para reproducir audio con volumen alto o bajo según la posición de la cámara. Los formatos de archivos de audio(ogg, mp3) generalmente se leen con una librería externa. Ejemplo: OpenAL, DirectSound.
* Un physic engine, se encarga de la simulación de objetos: velocidad, colisión, gravedad, etc. Estos frameworks no dibujan nada en pantalla, sólo devuelven números, de los cuales tú te encargas de representarlos en pantalla mediante algún graphic engine. Ejemplo: Box2D(famoso por Angry Birds), Bullet, PhysX, etc.
Todas estas cosas reúne un game engine, pero además puede tener su propio editor visual de objectos, manejo de redes, un lenguaje de scripting y muchos plugins. Generalmente implementan los objectos de escena en forma de Actores. Ejemplo: Delta3D, Unity3D, CrystalSpace, etc.
Existen otros frameworks que a si mismos no se consideran un game engine porque no reúnen todas las características, aunque algunos se amplían mediante plugins. Ejemplo: SDL, SFML, ClanLib, Allegro, etc.
Saludos. |
|