Alternativas libres para el desarrollo de videojuegos.

Autor:

Francisco Javier Tapia Merino

Introducción:
Numerosos motores son actualmente conocidos en la industria del videojuego que permiten el desarrollo de videojuegos de forma sencilla y estructurada con poco esfuerzo. Unity3D, Unreal Engine, CryEngine, GameMaker, etc. Todos ellos, aunque muy completos y sencillos de usar, son privativos, y no tienen el código abierto, lo cual los hace poco recomendables para que estudiantes que desean introducirse en este mundo aprendan las bases sobre las que se estructuran estos. Además algunos de ellos imponen  condiciones al usuario respecto a la distribución de los productos resultantes.
El trabajo realizado pretende introducir algunas herramientas de desarrollo orientadas a la industria del videojuego y de cualquier forma de contenido gráfico que permitan al usuario completo acceso y control sobre sus funciones y la distribución de los productos resultantes.

Contenidos:
El presente documento pretende suponer una breve introducción a las tecnologías libres mas comunes, presentar estas y dar un breve tutorial de su uso mas básico. En ningún caso se pretende que el lector salga dominando ninguna de estas, si no que se pretende darlas a conoces lo suficiente como para que su  posterior estudio sea lo mas cómodo posible.
Nos centraremos en librerías orientadas a gráficos 2D como son SDL y pygame, por ser mas sencillas y accesibles para un publico con poca o ninguna experiencia en gráficos por computador.
Se mencionarán brevemente algunos recursos para el desarrollo de programas 3D, por último se mencionará una librería enfocada únicamente a simular comportamientos físicos, sin considerar los gráficos.
Aparte de las librerías tratadas en este documento existen otras muchas igualmente válidas y para multitud de plataformas y lenguajes. Algunas son:

  • Allegro (C)
  • Cocos2D, Cocos2D-x, Cocos2D-html (C++, python, javascript)
  • HaxeFlixel (Haxe)
  • LibGDX (java)
  • Ogre3D (C++)
  • SFML (C++)

 

OpenGL:
OpenGL representa el estándar en la industria para el desarrollo de gráficos por computador tanto para 2D como 3D. Originariamente en C, aunque portada actualmente a numerosos lenguajes y plataformas, OpenGL permite la generación de gráficos de forma altamente eficiente, y controlada por el usuario, con capacidad de interacción hardware a bajo nivel para sacar el máximo partido de este.
OpenGL se distribuye para desarrolladores bajo una licencia de software libre B, muy similar a la BSD, X y Mozilla. Sin embargo, las empresas que desean desarrollar hardware compatible con OpenGL deben  comprar un licencia privativa.
Se ha optado por no incluir un tutorial de OpenGL como aprte de este trabajo. Debido a la gran profundidad y complejidad de OpenGL nos arriesgamos a introducir malas prácticas intentado hacer una explicación resumida que pueda estar contenida en este documento. En su lugar se recomienda comenzar usando las otras librerías que mencionamos. Ambas librerías, SDL y pygame, se basan en OpenGL limitando el acceso a bajo nivel y simplificando su uso de cara al usuario novel.

SDL:
Simple DirectMedia Layer es una librería de desarrollo multiplataforma diseñada para proveer de acceso de bajo nivel a audio, teclado, ratón joystick y hardware gráfico por medio de OpenGL y Direct3D.
SDL está escrito en C y permite su uso en C++, además existen numerosas adaptaciones para otros lenguajes.
SDL 2.0 se distribuye bajo licencia zlib, la cual permite su libre redistribución tanto de forma libre como comercial.

Pygame:
Pygame es un conjunto de módulos diseñados para la creación de juegos. Pygame añade funcionalidad sobre SDL. Esto permite la creación de juegos y contenido multimedia en lenguaje Python. Pygame es altamente portable y puede ejecutarse en casi cualquier plataforma y sistema operativo.
Pygame se distribuye bajo licencia LGPL 2.1, por tanto permite la distribución, tanto libre como comercial, del contenido creado con ella.

El trabajo completo con el tutorial de SDL y pygame así como el código mostrado de ejemplo están disponibles en GitHub.

Box2D:
Box2D es un motor en C++ para la simulación de sólidos rígidos en 2D. Se distribuye bajo licencia zlib.
La librería incluye numerosos módulos que permiten simular multitud de comportamientos como: detección de colisiones continuas, sistemas de sólidos con diversos tipos de ligaduras, apilamientos de diferentes formas geométricas, sistemas en árbol para la gestión de cuerpos, etc.
Toda la funcionalidad de la librería esta orientada a la simulación física y numérica y, por tanto, es necesario el uso de otras herramientas para visualizar los elementos en pantalla.

Referencias:

La memoria final puede descargarse también desde Dropbox.

Para acabar, puede descargarse un prototipo de un juego realizado enteramente en pygame como  participación en una Game Jam de 48 horas desde mi página de itch.*

*Como se ha mencionado, el prototipo se hizo en menos de 48 horas y no es un ejemplo fiel a seguir a la hora de crear un juego completo de calidad.