DECISIÓN DEL MOTOR GRÁFICO

Tamaño: px
Comenzar la demostración a partir de la página:

Download "DECISIÓN DEL MOTOR GRÁFICO"

Transcripción

1 DECISIÓN DEL MOTOR GRÁFICO Jordi Catà v.1.0: Jordi Catà v.2.0: Revisat Àlex Méndez:

2 TABLA DE CONTENIDOS PROBLEMA... 3 ALTERNATIVAS... 3 DECISIÓN... 6 CONCLUSIÓN... 7 ANEXO... 8 DESCRIPCIÓN CARACTERÍSTICAS... 8 Crystal Space... 8 Fly 3D... 8 Unreal... 9 Genesis 3D... 9 Torque (V12) Quake TABLA DE CARACTERÍSTICAS

3 PROBLEMA Estamos interesados en implementar métodos de iluminación global, como por ejemplo las obscurances, en tiempo real, dentro de un motor gráfico pensado para videojuegos. De esta manera este documento refleja el análisis de las diferentes propuestas y tiene como objetivo la elección del que más se adecue a nuestras necesidades. No se contempla la parte de interfaz o experimentación de IA se deja de lado de forma intencional? ALTERNATIVAS Con la finalidad de elegir el motor gráfico en el que implementar los temas de iluminación global hacemos un análisis de diferentes paquetes. Los candidatos son: Crystal Space Fly3D Unreal Genesis3D Torque (V12) Quake 2 A continuación se comentan brevemente las diferentes posibilidades. Es preciso comentar que en el Anexo se detallan las diferentes características de cada uno de ellos. Crystal Space Desarrollado por Jorrit Tyberghein, basado en renderizado en portales, BSP, Z- Buffering y radiosidad. Entre todas sus principales características destacamos la gran portabilidad y la gran escalabilidad proporcionada por el sistema de plugins y, además, bajo licencia LGPL. Las plataformas soportadas son UNIX (Linux, y Solaris), DOS, Macintosh, Amiga, Windows, BeOS, NextStep, Rhapsody y ports OpenStep. Dirección Fly3D Desarrollado por Paralelo Computaçao, basado en renderitzado por árboles BSP, PVS y portales, entre sus características destacamos la escalabilidad proporcionada por su sistema de plugins. La plataforma que soporta es Windows. 3

4 Licencia libre sin coste y acceso a todo el código fuente. Dirección Unreal Motor gráfico del juego Unreal desarrollado por la empresa Epic MegaGames basado en una extensión del renderizado en portales conocido como Dynamic Scene Graph Technology (DSG), BSP y radiosidad. Su principal característica es la gran escalabilidad (muy modular). Se encuentra disponible para las plataformas Linux, Windows, Macintosh, Playstaion 2 y Xbox. Para desarrollar con este motor se tiene que adquirir una licencia (USD USD ) que da acceso a todo el código fuente, a las herramientas y juegos. El motor, sin embargo, puede utilizarse en términos de desarrollo de juegos sin costo adicional, por lo que para trabajos y desarrollos que hagan uso del motor gráfico sin tratar la parte de render (como son los desarrollos y proyectos de IA e interfaces) el motor es una herramienta posible. Dirección Genesis3D Desarrollado por Eclipse Entertainment basado en renderizado en portales, BSP y radiosidad. La única plataforma soportada es Windows. Bajo licencia libre y derecho a modificar el código fuente, a cambio de tener que mostrar el logotipo del motor en las aplicaciones que lo utilicen o bien bajo licencia comercial de coste USD 10,000 por título, para que no salga el logotipo de genesis 3D y código abierto. Dirección Torque (V12) Motor gráfico utilizado en el juego Tribes 2 de Dinamix basado en renderizado en portales. Desarrollado para las plataformas, tanto el cliente como el servidor, Windows, Mac OS 9/X y en preparación Linux. Es necesaria licencia (USD 100) que da acceso al código fuente. Quake 2 4

5 Es el motor grafico del videojuego Quake 2, desarrollado por John Carmak de Id. Software. Se basa en el renderizado por árboles BSP y radiosidad. Soporta plataformas Windows, Linux i Macintosh. Su Licencia oscila entorno los USD que da acceso al codigo fuente. 5

6 DECISIÓN Nos basamos en las siguientes características para decidir el motor que utilizaremos en el desarrollo: Mínimo coste de obtención de licencia Conocimiento previo. Portabilidad. Escalabilidad. Los diferentes aspectos son comentados a continuación: El coste de los motores depende del tipo de licencia bajo la que se distribuye. Analizando las posibilidades observamos que tenemos tres tipos de licencia: Libre, LGPL y propias. Con licencia libre tenemos el Fly3D, con licencia LGPL tenemos el Crystal Space y bajo licencia propia encontramos el Unreal, Quake 2 y el Genesis3D. El motor de Unreal como ha sido comentado anteriormente se encuentra bajo licencia propia, en este caso implica que para poder desarrollar con este motor se debe adquirir una licencia que da acceso al código fuente, herramientas y juegos. Esta licencia puede costar del orden de USD , con lo que sobrepasa enormemente cualquier presupuesto de la universidad. Un caso parecido es el del motor de Quake 2, cuya licencia es de USD Con el Genesis3D tenemos dos tipos de licencias propias, una libre y otra comercial. El primer caso nos encontramos con que al desarrollar una aplicación con este motor nos aparecerá al inicio de esta el logotipo de este, y además el código está sujeto a la licencia por consiguiente nuestro código será libre. En el segundo caso no nos aparece el logotipo y el código que desarrollemos no está sujeto a la licencia libre, y su costo suma USD por título producido. Bajo licencia totalmente libre tenemos el Fly3D por lo que podemos modificar el código fuente y podemos utilizar parte de este para nuestros propósitos, sin tener que quedar afectados por ningún tipo de licencia. Por último encontramos el Crystal Space que se encuentra bajo licencia LGPL 1, por tanto podemos modificar el código libremente bajo ciertas condiciones. Conocimiento previo: Varios de los componentes del equipo de gráficos en Girona y Castellón han utilizado previamente el motor de juegos Crystal Space, lo que supone un ganancia en tiempo de desarrollo al tener que estudiar de forma mínima el motor. 1 LGPL: Lesser General Public License, o Licencia Pública General Menor es una licencia de costo libre pero que asegura que cualquier modificación del código o cualquier librería añadida sólo puede ser distribuida mediante la misma licencia LGPL. Para más información ver 6

7 La Portabilidad, un factor que en parte nos condiciona por el hecho de poder desarrollar de una manera independiente de la plataforma. De esta forma tendremos un amplio abanico de sistemas donde escoger El motor más portable es el Crystal Space dando soporte para nueve plataformas, seguido por Unreal, cinco plataformas, y Torque y Quake 2, tres plataformas. La escalabilidad del motor nos permite extender las posibilidades de éste añadiendo nuevas funciones y características por medio de plugins y/o módulos externos. De más a menos tenemos Unreal, Crystal Space y Fly3D que están basados en sistemas de plugins con la finalidad de extender sus funcionalidades. CONCLUSIÓN Haciendo un pequeño resumen observamos que Crystal Space reúne las condiciones para ser el motor de juegos elegido. Primero, no supone ningún coste económico, ya que tiene licencia LGPL y sus condiciones no nos aportan ningún problema, ya que las funcionalidades que nosotros añadamos pueden, en caso de ser distribuidas, ser LGPL igualmente. Segundo, es muy portable, lo que nos permite escoger la plataforma de desarrollo. En tercer lugar es muy escalable. En último lugar, y determinante para su elección, tenemos un conocimiento previo del motor, lo que supone ganancia en tiempo al no tener que estudiarlo previamente. 7

8 ANEXO DESCRIPCIÓN CARACTERÍSTICAS Crystal Space Las plataformas soportadas son UNIX (Linux, y Solaris), DOS, Macintosh, Amiga, Windows, BeOS, NextStep, Rhapsody y ports OpenStep. Las apis soportadas son OpenGL para Windows, Linux, Beos, Macintosh y OS/2, Direct3D para Windows y Glide para Linux y Windows. Renderizado en Sectores y Portales, BSP, Z-Buffer, Sistema de partículas, terrenos, radiosidad, C-buffer y superficies curvas y superficies reflectantes. Respecto las luces, soporta Lightmaps, Bumpmapping, Phong y Gouraud, luces dinámicas, multicolores y radiosidad precalculada para los Lightmaps. Los formatos con los que trabaja son 3DS, MD2 (Quake 2), OBJ, POV y ASE. Trebaja las texturas con Texture mapping, Mipmapping, Texturas procedurales, dinámicas y multitextura. Incorpora el lenguaje script Python y LUA. Su sistema de visibilidad esta basado en una combinación de portales, octrees, arboles BSP y C-buffer. Incorpora, a más, detección de colisiones basado en estructures jerárquicas de cajas englobantes, jerarquía de objetos, meshes progresivas con LOD, Sprites 2D y 3D, Superficies de Bezier, Motor de simulación de modelage dinámico (librería física). Fly 3D Las plataformas que soporta es Windows con OpenGL y Direct3D. El renderizado se basa en árboles BSP, PVS (Potencial Visibility Set) y Sistema de partículas. Implementa luces estáticas y dinámicas, sombras dinámicas soft-shadows, mapas de sombras dinámicas, Lightmaps y iluminación por vértice especular y difusa para objetos dinámicos. Incorpora textura detallada y multitextura. 8

9 Otras características son sistema de plugins (DLL s), sistema de detección de colisiones, Exportador / importador de 3Dstudio MAX, LOD para caras curvadas, Quake 3 importador (geometría, texturas y superficies curvas), Inteligencia artificial (A* optimizado) y meshes animadas. Unreal Se encuentra disponible sobre las plataformas Linux, Windows, Macintosh, Playstaion 2 y Xbox. Utiliza el sistema DSG ( Dynamic Scene Graph Technology ) que és una extensión natural del renderizado en portales, interpolación de meshes, radiosidad, árboles BSP, LOD, superficies curvas y superficies reflectantes. Incorpora luces multicolores, dinámicas, Lightmaps, Raytracing y enveloped lighting. Soporta nativamente el formato DXF En el tema de texturas incorpora Texture mapping, mapas de sombras, mapas de niebla, textura detallada para definir objetos muy detallados, texturas procedurales, texturas en tiempo real de ondas (océanos, lava, etc.), 12 niveles de mipmapping, animación de texturas (animadas), Texturas procedurales, dinámicas y multitextura. Trabaja con lenguaje script propio nombrado UnrealScript, que consiste en un lenguaje de scripting semi-compilado para acceder a la lógica del juego y usar el potencial del motor gráfico propietario. La idea detrás de este scripting permite trabajar en una interfaz de alto nivel para controlar los objetos en un juego. Las ventajas de este scripting radican en la velocidad del proceso de desarrollo y en la flexibilidad y capacidad de extensión de un proyecto, teniendo como desventajas la cuestión de la velocidad al tratarse de pre-compilados. El desarrollo de juegos y herramientas que hacen uso del motor gráfico de Unreal se lleva a cabo con UnrealED, el editor de mapas para el motor grafico de Epic Games que es utilizado en juegos como Unreal, Unreal Tournament, Rune, Deus EX..etc. Con UnrealED es posible crear gran variedad de mapas y contruir con total libertad, por ejemplo paisajes urbanos, el espacio, vehículos, agua, etc, además de implementar efectos como el sonido, música, luces, controlar la gravedad, etc. De entre otros detalles destacamos: detección de colisiones cilíndrica, Superficies curvas con LOD, Mapas de entorno, Inteligencia Artificial avanzada (path- finding y sistema de navegación), Sistema físico adaptable, Sprites 3D, Sonido digital 3D. Genesis 3D La única plataforma soportada és Windows con las apis Direct3D y Glide. 9

10 Renderizado por Portales, árboles BSP, radiosidad y LOD. Incorpora luces multicolores y dinámicas. Puede trabajar nativamente con el formato de ficheros de animación de 3Dstudio MAX. Texture mapping, textura translúcida, morphing de texturas, texturas animadas y procedurales. Además destacamos Sprites 3D, sombras dinámicas, jerarquía de objetos, detección de colisiones. Torque (V12) Desarrollado para las plataformas, tanto el cliente como el servidor, Windows, Mac OS 9/X y en preparación Linux, con los siguientes apis OpenGL para Mac y Linux y OpenGL y DirectX para windows. Se basa en Renderizado en sectores y portales, sistema de partículas y terrenos. En el tema de luces encontramos Lightmaps animados, luces por vértice y multipaso. Soporta Texture mapping y mipmapping, multitexturas, textura detallada, mapas de entorno y texturas animadas. Incorpora también meshes progresivas con LOD (niveles de detalle), Plugins para scripting, detección de colisiones, sombras proyectadas de objetos (recorte contra el entorno), exportadores a 3Dstudio MAX y Milkshape y Plugins 3Dstudio MAX. Quake 2 Desarrollado para plataformas Windows, Linux y Macintosh soportando las apis OpenGL, también existe un port para Direct3D. Trabaja los renderizados con arboles BSP y radiosidad. Incorpora luces dinámicas, multicolores, Lightmaps. Implementa su lenguaje de script llamado QuakeC, así como el uso de DLLs. Trabaja con su formato propio llamado MD2, muy extendido entre diferentes motores gráficos y diferentes editores. 10

11 TABLA DE CARACTERÍSTICAS CrystalSpace Quake2 V12 Unreal Fly3D Genesis3D RENDERIZADO Zbuffer rendering Sí Portal rendering Sí Sí DSG Sí Sí BSP rendering Sí Sí Sí Sí Sí Radiosity Sí Sí Sí Sí Stereo rendering No Z-sorting No Span-buffer No Fogging Sí Sí Sí Sí Sí Level of Detail Sí Sí Sí Sí Sí Halo / Corona Sí Sí Sí Anti-aliasing Sí Motion blur No Lens flare Sí Sí Mirrors Sí Sí Sí Sí Particle system Sí Sí Sí Sí (Motor Landscape/Voxel terrenos) / No Sí Sí Patch/curved surf Sí Sí Sí Reflective surfaces Sí Sí LUCES Colored lighting Sí Sí Sí Sí Sí Point Lighting Sí Sí Sí Dynamic Lighting Sí Sí Sí Sí Sí Lightmap Rendering Sí Sí Sí Sí Phong Shading Sí Bump mapping Sí Sí Gouraud-shading Sí No 3D sprites Sí Sí Sí Sí 11

12 APIS OpenGL Sí Sí Sí WIN,MAC Through port Sí No Direct3D Optional port for windows Port Sí (WIN) Through port Sí Sí Glide Sí Sí QuickDraw3D No TEXTURAS Texture mapping Sí Sí Sí Sí Sí Persp. Texture Sí Sí Sí MIP-mapping Sí Sí Sí Sub-pixel map Sí Sí Sí Procedural textures Sí Sí Sí OTROS Degrees of freedom 6 Network support Low-level Sí Sí Sí Sí Low-level Hierarchical obj. Sí Sí Collision detect Hierarchical bounding box Sí 3D sound Sí Sí Sí Sí Sí Cartoon No Sí Scene graph No Language C++ C++ C++ Scripting Language Sí (Python y LUA)QuakeC Sí UnrealScript No No Win, Mac, Platform All All Linux Win, Mac All Windows Source Sí Sí Sí Sí No Cost LGPL $ apr. $100 $ aprlibre Libre o $ DS, MD2 (Quake), OBJ, MD2 DXF 3DS, MD2 (Quake) File formats POV, ASE 12