COMPARATIVA DE MOTORES GRÁFICOS PARA VIDEOJUEGOS
COMPARATIVA DE MOTORES GRÁFICOS PARA VIDEOJUEGOS
COMPARATIVA DE MOTORES GRÁFICOS PARA VIDEOJUEGOS
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>COM<strong>PARA</strong>TIVA</strong> <strong>DE</strong><br />
<strong>MOTORES</strong> <strong>GRÁFICOS</strong><br />
<strong>PARA</strong> VI<strong>DE</strong>OJUEGOS<br />
Jordi Catà v.1.0: 27-04-2002<br />
Jordi Catà v.2.0: 06-05-2002<br />
Revisado Àlex Méndez: 08-05-2002
TABLA <strong>DE</strong> CONTENIDOS<br />
PROBLEMA..................................................................................................................... 3<br />
ALTERNATIVAS ............................................................................................................ 3<br />
<strong>DE</strong>CISIÓN........................................................................................................................ 5<br />
CONCLUSIÓN................................................................................................................. 6<br />
ANEXO............................................................................................................................. 7<br />
<strong>DE</strong>SCRIPCIÓN CARACTERÍSTICAS....................................................................... 7<br />
Crystal Space............................................................................................................. 7<br />
Fly 3D....................................................................................................................... 7<br />
Unreal........................................................................................................................ 8<br />
Genesis 3D................................................................................................................ 8<br />
Torque (V12)............................................................................................................. 9<br />
Quake 2..................................................................................................................... 9<br />
TABLA <strong>DE</strong> CARACTERÍSTICAS ........................................................................... 10<br />
2
PROBLEMA<br />
Estamos interesados en implementar métodos de iluminación global, como por ejemplo<br />
las obscurances, en tiempo real, dentro de un motor gráfico pensado para videojuegos.<br />
De esta manera este documento refleja el análisis de las diferentes propuestas y tiene<br />
como objetivo la elección del que más se adecue a nuestras necesidades.<br />
ALTERNATIVAS<br />
Con la finalidad de elegir el motor gráfico en el que implementar los temas de<br />
iluminación global hacemos un análisis de diferentes paquetes. Los candidatos son:<br />
• Crystal Space<br />
• Fly3D<br />
• Unreal<br />
• Genesis3D<br />
• Torque (V12)<br />
• Quake 2<br />
A continuación se comentan brevemente las diferentes posibilidades. Es preciso<br />
comentar que en el Anexo se detallan las diferentes características de cada uno de ellos.<br />
• Crystal Space<br />
Desarrollado por Jorrit Tyberghein, basado en renderizado en portales, BSP, Z-<br />
Buffering y radiosidad. Entre todas sus principales características destacamos la gran<br />
portabilidad y la gran escalabilidad proporcionada por el sistema de plugins y,<br />
además, bajo licencia LGPL.<br />
Las plataformas soportadas son UNIX (Linux, y Solaris), DOS, Macintosh, Amiga,<br />
Windows, BeOS, NextStep, Rhapsody y ports OpenStep.<br />
Dirección www.crystal.sourceforge.net<br />
• Fly3D<br />
Desarrollado por Paralelo Computaçao, basado en renderitzado por árboles BSP, PVS y<br />
portales, entre sus características destacamos la escalabilidad proporcionada por su<br />
sistema de plugins.<br />
La plataforma que soporta es Windows.<br />
Licencia libre sin coste y acceso a todo el código fuente.<br />
3
Dirección www.fly3d.com.br<br />
• Unreal<br />
Motor gráfico del juego Unreal desarrollado por la empresa Epic MegaGames basado<br />
en una extensión del renderizado en portales conocido como Dynamic Scene Graph<br />
Technology (DSG), BSP y radiosidad. Su principal característica es la gran<br />
escalabilidad (muy modular).<br />
Se encuentra disponible para las plataformas Linux, Windows, Macintosh, Playstaion 2<br />
y Xbox.<br />
Para desarrollar con este motor se tiene que adquirir una licencia (USD 250.000 -<br />
USD 500.000) que da acceso a todo el código fuente, a las herramientas y juegos.<br />
Dirección www.epicgames.com<br />
• Genesis3D<br />
Desarrollado por Eclipse Entertainment basado en renderizado en portales, BSP y<br />
radiosidad.<br />
La única plataforma soportada es Windows.<br />
Bajo licencia libre y derecho a modificar el código fuente, a cambio de tener que<br />
mostrar el logotipo del motor en las aplicaciones que lo utilicen o bien bajo licencia<br />
comercial de coste USD 10,000 por título, para que no salga el logotipo de genesis 3D<br />
y código abierto.<br />
Dirección www.genesis3d.com<br />
• Torque (V12)<br />
Motor gráfico utilizado en el juego Tribes 2 de Dinamix basado en renderizado en<br />
portales.<br />
Desarrollado para las plataformas, tanto el cliente como el servidor, Windows, Mac OS<br />
9/X y en preparación Linux.<br />
Es necesaria licencia (USD 100) que da acceso al código fuente.<br />
• Quake 2<br />
Es el motor grafico del videojuego Quake 2, desarrollado por John Carmak de Id.<br />
Software. Se basa en el renderizado por árboles BSP y radiosidad.<br />
Soporta plataformas Windows, Linux i Macintosh.<br />
Su Licencia oscila entorno los 250.000 USD que da acceso al codigo fuente.<br />
4
<strong>DE</strong>CISIÓN<br />
Nos basamos en las siguientes características para decidir el motor que utilizaremos en<br />
el desarrollo:<br />
• Mínimo coste de obtención de licencia<br />
• Conocimiento previo.<br />
• Portabilidad.<br />
• Escalabilidad.<br />
Los diferentes aspectos son comentados a continuación:<br />
• El coste de los motores depende del tipo de licencia bajo la que se distribuye.<br />
Analizando las posibilidades observamos que tenemos tres tipos de licencia: Libre,<br />
LGPL y propias. Con licencia libre tenemos el Fly3D, con licencia LGPL tenemos<br />
el Crystal Space y bajo licencia propia encontramos el Unreal, Quake 2 y el<br />
Genesis3D.<br />
El motor de Unreal como ha sido comentado anteriormente se encuentra bajo<br />
licencia propia, en este caso implica que para poder desarrollar con este motor se<br />
debe adquirir una licencia que da acceso al código fuente, herramientas y juegos.<br />
Esta licencia puede costar del orden de USD 500.000, con lo que sobrepasa<br />
enormemente cualquier presupuesto de la universidad. Un caso parecido es el<br />
del motor de Quake 2, cuya licencia es de USD 250.000.<br />
Con el Genesis3D tenemos dos tipos de licencias propias, una libre y otra<br />
comercial. El primer caso nos encontramos con que al desarrollar una aplicación<br />
con este motor nos aparecerá al inicio de esta el logotipo de este, y además el<br />
código está sujeto a la licencia por consiguiente nuestro código será libre. En el<br />
segundo caso no nos aparece el logotipo y el código que desarrollemos no está<br />
sujeto a la licencia libre, y su costo suma USD 10.000 por título producido.<br />
Bajo licencia totalmente libre tenemos el Fly3D por lo que podemos modificar<br />
el código fuente y podemos utilizar parte de este para nuestros propósitos, sin<br />
tener que quedar afectados por ningún tipo de licencia.<br />
Por último encontramos el Crystal Space que se encuentra bajo licencia LGPL 1 ,<br />
por tanto podemos modificar el código libremente bajo ciertas condiciones.<br />
• Conocimiento previo: Varios de los componentes del equipo de gráficos en Girona<br />
y Castellón han utilizado previamente el motor de juegos Crystal Space, lo que<br />
supone un ganancia en tiempo de desarrollo al tener que estudiar de forma mínima<br />
el motor.<br />
1 LGPL: Lesser General Public License, o Licencia Pública General Menor es una licencia de costo libre<br />
pero que asegura que cualquier modificación del código o cualquier librería añadida sólo puede ser<br />
distribuida mediante la misma licencia LGPL. Para más información ver<br />
http://www.gnu.org/copyleft/lesser.html.<br />
5
• La Portabilidad, un factor que en parte nos condiciona por el hecho de poder<br />
desarrollar de una manera independiente de la plataforma. De esta forma tendremos<br />
un amplio abanico de sistemas donde escoger<br />
El motor más portable es el Crystal Space dando soporte para nueve<br />
plataformas, seguido por Unreal, cinco plataformas, y Torque y Quake 2, tres<br />
plataformas.<br />
• La escalabilidad del motor nos permite extender las posibilidades de éste<br />
añadiendo nuevas funciones y características por medio de plugins y/o módulos<br />
externos.<br />
De más a menos tenemos Unreal, Crystal Space y Fly3D que están basados en<br />
sistemas de plugins con la finalidad de extender sus funcionalidades.<br />
CONCLUSIÓN<br />
Haciendo un pequeño resumen observamos que Crystal Space reúne las condiciones<br />
para ser el motor de juegos elegido. Primero, no supone ningún coste económico, ya que<br />
tiene licencia LGPL y sus condiciones no nos aportan ningún problema, ya que las<br />
funcionalidades que nosotros añadamos pueden, en caso de ser distribuidas, ser LGPL<br />
igualmente. Segundo, es muy portable, lo que nos permite escoger la plataforma de<br />
desarrollo. En tercer lugar es muy escalable. En último lugar, y determinante para su<br />
elección, tenemos un conocimiento previo del motor, lo que supone ganancia en tiempo<br />
al no tener que estudiarlo previamente.<br />
6
ANEXO<br />
<strong>DE</strong>SCRIPCIÓN CARACTERÍSTICAS<br />
Crystal Space<br />
Las plataformas soportadas son UNIX (Linux, y Solaris), DOS, Macintosh, Amiga,<br />
Windows, BeOS, NextStep, Rhapsody y ports OpenStep.<br />
Las apis soportadas son OpenGL para Windows, Linux, Beos, Macintosh y OS/2,<br />
Direct3D para Windows y Glide para Linux y Windows.<br />
Renderizado en Sectores y Portales, BSP, Z-Buffer, Sistema de partículas, terrenos,<br />
radiosidad, C-buffer y superficies curvas y superficies reflectantes.<br />
Respecto las luces, soporta Lightmaps, Bumpmapping, Phong y Gouraud, luces<br />
dinámicas, multicolores y radiosidad precalculada para los Lightmaps.<br />
Los formatos con los que trabaja son 3DS, MD2 (Quake 2), OBJ, POV y ASE.<br />
Trebaja las texturas con Texture mapping, Mipmapping, Texturas procedurales,<br />
dinámicas y multitextura.<br />
Incorpora el lenguaje script Python y LUA.<br />
Su sistema de visibilidad esta basado en una combinación de portales, octrees, arboles<br />
BSP y C-buffer.<br />
Incorpora, a más, detección de colisiones basado en estructures jerárquicas de cajas<br />
englobantes, jerarquía de objetos, meshes progresivas con LOD, Sprites 2D y 3D,<br />
Superficies de Bezier, Motor de simulación de modelage dinámico (librería física).<br />
Fly 3D<br />
Las plataformas que soporta es Windows con OpenGL y Direct3D.<br />
El renderizado se basa en árboles BSP, PVS (Potencial Visibility Set) y Sistema de<br />
partículas.<br />
Implementa luces estáticas y dinámicas, sombras dinámicas soft-shadows, mapas de<br />
sombras dinámicas, Lightmaps y iluminación por vértice especular y difusa para objetos<br />
dinámicos.<br />
Incorpora textura detallada y multitextura.<br />
7
Otras características son sistema de plugins (DLL’s), sistema de detección de colisiones,<br />
Exportador / importador de 3Dstudio MAX, LOD para caras curvadas, Quake 3<br />
importador (geometría, texturas y superficies curvas), Inteligencia artificial (A*<br />
optimizado) y meshes animadas.<br />
Unreal<br />
Se encuentra disponible sobre las plataformas Linux, Windows, Macintosh, Playstaion<br />
2 y Xbox.<br />
Utiliza el sistema DSG ( Dynamic Scene Graph Technology ) que és una extensión<br />
natural del renderizado en portales, interpolación de meshes, radiosidad, árboles BSP,<br />
LOD, superficies curvas y superficies reflectantes.<br />
Incorpora luces multicolores, dinámicas, Lightmaps, Raytracing y enveloped lighting.<br />
Soporta nativamente el formato DXF<br />
En el tema de texturas incorpora Texture mapping, mapas de sombras, mapas de niebla,<br />
textura detallada para definir objetos muy detallados, texturas procedurales, texturas en<br />
tiempo real de ondas (océanos, lava, etc.), 12 niveles de mipmapping, animación de<br />
texturas (animadas), Texturas procedurales, dinámicas y multitextura.<br />
Trabaja con lenguaje script propio nombrado UnrealScript.<br />
De entre otros detalles destacamos: detección de colisiones cilíndrica, Superficies<br />
curvas con LOD, Mapas de entorno, Inteligencia Artificial avanzada (path-finding y<br />
sistema de navegación), Sistema físico adaptable, Sprites 3D, Sonido digital 3D.<br />
Genesis 3D<br />
La única plataforma soportada és Windows con las apis Direct3D y Glide.<br />
Renderizado por Portales, árboles BSP, radiosidad y LOD.<br />
Incorpora luces multicolores y dinámicas.<br />
Puede trabajar nativamente con el formato de ficheros de animación de 3Dstudio<br />
MAX.<br />
Texture mapping, textura translúcida, morphing de texturas, texturas animadas y<br />
procedurales.<br />
Además destacamos Sprites 3D, sombras dinámicas, jerarquía de objetos, detección de<br />
colisiones.<br />
8
Torque (V12)<br />
Desarrollado para las plataformas, tanto el cliente como el servidor, Windows, Mac OS<br />
9/X y en preparación Linux, con los siguientes apis OpenGL para Mac y Linux y<br />
OpenGL y DirectX para windows.<br />
Se basa en Renderizado en sectores y portales, sistema de partículas y terrenos.<br />
En el tema de luces encontramos Lightmaps animados, luces por vértice y multipaso.<br />
Soporta Texture mapping y mipmapping, multitexturas, textura detallada, mapas de<br />
entorno y texturas animadas.<br />
Incorpora también meshes progresivas con LOD (niveles de detalle), Plugins para<br />
scripting, detección de colisiones, sombras proyectadas de objetos (recorte contra el<br />
entorno), exportadores a 3Dstudio MAX y Milkshape y Plugins 3Dstudio MAX.<br />
Quake 2<br />
Desarrollado para plataformas Windows, Linux y Macintosh soportando las apis<br />
OpenGL, también existe un port para Direct3D.<br />
Trabaja los renderizados con arboles BSP y radiosidad.<br />
Incorpora luces dinámicas, multicolores, Lightmaps.<br />
Implementa su lenguaje de script llamado QuakeC.<br />
Trabaja con su formato propio llamado MD2, muy extendido entre diferentes motores<br />
gráficos y diferentes editores.<br />
9
REN<strong>DE</strong>RIZADO<br />
TABLA <strong>DE</strong> CARACTERÍSTICAS<br />
CrystalSpace Quake2 V12 Unreal Fly3D Genesis3D<br />
Zbuffer rendering Sí<br />
Portal rendering Sí Sí DSG Sí Sí<br />
BSP rendering Sí Sí Sí Sí Sí<br />
Radiosity Sí Sí Sí Sí<br />
Stereo rendering No<br />
Z-sorting No<br />
Span-buffer No<br />
Fogging Sí Sí Sí Sí Sí<br />
Level of Detail Sí Sí Sí Sí Sí<br />
Halo / Corona Sí Sí Sí<br />
Anti-aliasing Sí<br />
Motion blur No<br />
Lens flare Sí Sí<br />
Mirrors Sí Sí Sí Sí<br />
Particle system Sí<br />
Sí (Motor<br />
Sí Sí<br />
Landscape/Voxel terrenos) / No Sí Sí<br />
Patch/curved surf Sí<br />
Reflective<br />
Sí Sí<br />
surfaces Sí Sí<br />
LUCES<br />
Colored lighting Sí Sí Sí Sí Sí<br />
Point Lighting Sí Sí Sí<br />
Dynamic Lighting Sí Sí Sí Sí Sí<br />
Lightmap<br />
Rendering Sí Sí Sí Sí<br />
Phong Shading Sí<br />
Bump mapping Sí Sí<br />
Gouraud-shading Sí No<br />
3D sprites Sí Sí Sí Sí<br />
APIS<br />
OpenGL Sí<br />
Optional port for<br />
Sí<br />
Sí<br />
WIN,MAC Through port Sí No<br />
Direct3D windows Port Sí (WIN) Through port Sí Sí<br />
Glide Sí Sí<br />
QuickDraw3D No<br />
TEXTURAS<br />
Texture mapping Sí Sí Sí Sí Sí<br />
Persp. Texture Sí Sí Sí<br />
MIP-mapping Sí Sí Sí<br />
10
Sub-pixel map Sí Sí Sí<br />
Procedural<br />
textures Sí Sí Sí<br />
OTROS<br />
Degrees of<br />
freedom 6<br />
Network support Low-level Sí Sí Sí Sí Low-level<br />
Hierarchical obj. Sí<br />
Hierarchical<br />
Sí<br />
Collision detect bounding box Sí<br />
3D sound Sí Sí Sí Sí Sí<br />
Cartoon No Sí<br />
Scene graph No<br />
Language<br />
Scripting<br />
C++ C++ C++<br />
Language Sí (Python y LUA)QuakeC Sí<br />
Win, Mac,<br />
UnrealScript No No<br />
Platform All All<br />
Linux Win, Mac All Windows<br />
Source Sí Sí Sí Sí No<br />
Cost LGPL $250.000 apr. $100 $500.000 aprLibre Libre o $10.000<br />
3DS, MD2 MD2<br />
DXF 3DS, MD2<br />
(Quake), OBJ,<br />
(Quake)<br />
File formats POV, ASE<br />
11