Engines 3D

Hay, literalmente, decenas de engines 3D que puedes usar para crear un videojuego en Python. Ante tal avalancha, el problema es cuál elegir. Tienes que tener claro, en cualquier caso, que no hay una única respuesta. La decisión depende de muchos factores, como experiencia personal, conocimientos previos, tiempo disponible... Nosotros nos vamos a ceñir a motores tridimensionales libres. Respecto de los privativos que son gratuitos, suelen ser versiones reducidas de las versiones comerciales (como pasa con Unity, por ejemplo). Son geniales también, por supuesto, pero están sujetas a su licencia de uso específica y a la política de la empresa que lo posee, política que puede cambiar en el futuro. Esto tiene sus ventajas y sus inconvenientes. Por una parte, los motores de este tipo son muy potentes; por la otra, la capacidad de personalización del motor y su adaptación a otras plataformas están claramente mermados (salvo su producto final, en algunos casos).
Nuestra elección, como hemos dicho, recae en engines libres, con los que podemos trabajar desde cualquier plataforma (Linux, Mac OS X, Windows... ) y cuyo resultado puede ejecutarse también en cualquier plataforma. No te preocupes; no creas que no pueden hacerse grandes cosas. Algunos engines libres son tan potentes como los privativos. Y el aprendizaje de uno siempre facilita el aprendizaje de otro. ¿Sigues pensando que sólo hay buenos juegos en Windows? Hay mil sitios por internet donde podrás darte cuenta de lo contrario. Mira, por poner solo par de ejemplos, aquí

http://www.penguspy.com/#/All/free_and_commercial/sort=1/view=1/limit=0

o aquí

http://www.flightgear.org/Gallery-v2.0/

Lo que sigue tampoco está exento de subjetividad; cada programador tiene sus gustos. A este respecto, aquí tienes el enlace al video de una charla sobre el tema, desde el punto de vista de la creación de un videojuego profesional:

http://medialab-prado.es/article/programacion_de_videojuegos_en_software_libre

Este wiki, como sabes, está creado en el marco de una materia de bachillerato durante un curso académico. Alguno de los engines que se nombran en el video anterior quedan por encima de las posibilidades reales de un alumno que se enfrenta por primera vez a esta tarea. Quizá no sea tu caso si tienes experiencia previa en modelado o en otros lenguajes de programación (generalmente los engines son programables desde varios lenguajes; son los llamados bindings). Entre estos, digamos, 'engines de aprendizaje costoso' podríamos citar:

  • OpenGL ( pyOpenGL ) : Se trata de las librerías 3D que están en el corazón de prácticamente todo el resto de engines. Extremadamente potentes, también es extremadamente difícil usarlas directamente para crear un videojuego....
  • Ogre3D ( Python-Ogre ) : Su motor gráfico es excelente y está bien documentado. El inconveniente es que es un motor gráfico 3D general y necesita de librerías extras para implementar lo que se necesita en un videojuego (como colisiones, etc). Afortunadamente, la comunidad entorno al proyecto tiene gran parte del trabajo hecho.
  • CrystalSpace ( PyCrystal ) : De lo mejorcito. Prácticamente tan potente como Ogre3D pero con el añadido de todas las librerías que se necesitan para crear un videojuego. Su estructura, por otra parte, es algo caótica.

Y, entonces, ¿qué engine uso para aprender y, a pesar de todo, conseguir un juego decente? Aquí hay que tener en cuenta que lo ideal es que tengamos acceso a una buena documentación (casi siempre en inglés) o unos tutoriales que nos permitan comprender el funcionamiento del motor gráfico. Voy a citar 4, matizando el porqué:

  • Pyggel : Se trata de un binding de Python para no tener que usar directamente OpenGL y con el propósito de hacer la curva de aprendizaje suave. La documentación no es muy extensa, tenemos más bien unos cuantos programas con comentarios de cómo se usa cada elemento de la librería. La ventaja es que es relativamente sencillo. La desventaja es que no es muy potente que digamos, y si necesitamos más no tenemos más remedio que acudir a OpenGL puro y duro. En definitiva; si quieres algo muy sencillo en 3D, éste es tu engine. Ejemplos: 1 .
  • Soya3D : En la mayor parte de los casos, ésta tendría que ser tu elección. Nos encontramos aquí con un muy buen engine, de fácil aprendizaje y muy documentado. Después de instalarlo, si te descargas la última versión de los tutoriales de su página web (que incluye una guía en pdf, curiosamente más actualizada que la que se puede descargar directamente de la web), tienes una gran cantidad de material progresivo con el que aprender. Si tienes experiencia con modelado, este motor te permite usar tu trabajo, por supuesto. No podía ser de otra manera... Ejemplos: 1 , 2 y 3 .
  • Blender Game Engine : Si hablamos de modelado y software libre, hablamos de Blender, el programa por excelencia. Es un mundo en sí mismo, permitiendo crear desde los objetos 3D más sencillos a los universos más complejos. Lleva incorporado un engine de juegos, programable gráficamente y con Python. Las únicas limitaciones que puedes encontrarte es que cuanto mayor es la complejidad de tu proyecto, más le costará a tu ordenador 'mover' la escena, ya que no está optimizado para proyectos muy grandes (y cuando decimos grandes, queremos decir grandes). ¿Documentación? Toda la del mundo. Como inconveniente, si no has utilizado antes programas de modelado, la curva de aprendizaje es muy elevada. Ejemplos: 1 , 2 , 3 y 4 .
  • Panda3D : Si quieres potencia, aquí la tienes. Este engine fue desarrollado en sus inicios por Disney para sus propios proyectos y luego fue liberado. No sólo lo usa el mundo libre; también lo podemos encontrar en juegos comerciales. Sus bindings para Python están muy desarrollados. A cambio, el engine es lo suficientemente complejo como para que te cueste un tiempo considerable familiarizarte con él. Ejemplos: 1 , 2 y 3 .

Eso es todo. La elección depende de ti... ¡Buena suerte!