Nuevos lenguajes para la programación de juegos

Es posible crear juegos en una gran diversidad de lenguajes, en realidad, casi cualquier lenguaje podría ser apto para crear juegos de algún tipo. Sin embargo, siempre existió un pequeño conjunto de lenguajes que fueron - y suelen ser - los más elegidos a la hora de crear videjuegos. El 96% de los juegos AAA se encuentran desarrollados en C/C++ por ser - como muchos de ustedes ya sabrán - un lenguaje que permite crear aplicaciones de alta performance ya que combina características de lenguaje de alto y bajo nivel además de poseer una gran cantidad de librerías y herramientas disponibles.

En los últimos años y con el advenimiento de nuevas plataformas - como la web y los teléfonos celulares - muchos otros lenguajes entraron en boga como Java, Actionscript, Python, y Lingo.

En muchos casos la decisión de que lenguaje adoptar está marcada por la plataforma seleccionada, es decir, si deseamos crear un juego para teléfonos celulares definitivamente no podremos optar por Delphi. En otras ocasiones tenemos un cierto margen de selección - por ejemplo en el caso de querer crear un juego para PC/Windows. Allí es donde más se suele abrir el juego debido a la gran cantidad de opciones con la que contamos; si deseamos crear un juego sencillo - como podría serlo un side scroller 2D - y contamos con poco tiempo / presupuesto, tal vez C/C++ no sea la mejor opción. Existen otros lenguajes más productivos que nos permitirían crear el mismo juego en menos tiempo y dejaría concentrarnos en el gameplay en sí mismo y dejar de lado problemas específicos de programación que sólo nos sacan tiempo.

Hasta aquí no he dicho nada nuevo. Muchos de ustedes podrán pensar que ahora voy a salir con el DarkBasic, BlitzBasic, Visual Basic (con algún game engine relacionado), Python (PyGame), pero no. Existen otros lenguajes que hasta ahora no se habían utilizado demasiado en videojuegos pero que ahora comienzan a crecer en este ámbito. Más específicamente me refiero a C#, D y Objective-C.

De estos lenguajes, tal vez C# sea el candidato más serio a convertise en un arma de uso común. Gracias al Game Studio Express y XNA, el lenguaje ganó muchos adeptos en el desarrollo de juegos desde hace un año para acá. ¿Cuáles son las principales ventajas, desventajas y usos de estas nuevas herramientas? Empecemos en esta primera parte del artículo por C#…

C# es un lenguaje creado por Microsoft y es el exponente principal de la familia de lenguajes .NET. Recientemente Microsoft lanzó el Game Studio Express - un conjunto de herramientas que permite desarrollar videojuegos para PC y XBOX 360 de modo gratuito - y optó por utilizar C# como lenguaje de programación principal para dicha plataforma. C# es un lenguaje poderoso, moderno y bien diseñado que cualquier programador aprender a querer al poco tiempo de utilizarlo. Si le sumamos a esto el poder contar con herramientas (como el Visual Studio) que potencian aún más sus cualidades tenemos a un excelente exponente para programadores de todos los niveles.

No tardó mucho la comunidad en llenar la red con tutoriales, artículos, sitios dedicados y usos diversos de este lenguaje. Y los videojuegos no podían ser una excepción. En lo particular utilicé C# para crear un pequeño prototipo llamado Extra Damage. Este prototipo lo creé junto Julián Callens como experimento para estudiar diversos aspectos del desarrollo con C# y para ver hasta que punto cumplía la promesa de otorgar una alta productividad (algo que necesitábamos ya que deseábamos participar de un concurso de videjuegos próximo a realizarse). La realidad es que la promesa la cumplió con creces, desarrollar Extra Damage con C# fue un verdadero placer. El proyecto estuvo dividido en dos: el motor de juegos (creado al mismo tiempo y también en C#/Managed DirectX) y el juego propiamente dicho.

Extra Damage

Los errores que se iban apareciendo eran muy fácilmente removidos haciendo uso del buen depurador dl Visual Studio, además de nunca ser errores de bajo nivel, aquellos crípticos que podrían aparecer en C++ (por, por ejemplo, acceder a una estructura una alineación de miembros distinta a la esperada). Era un verdadero placer codificar algo, presionar el botón “Start Debugging” y ver el proyecto en marcha dos segundos después (adiós tiempos extensos de compilación y linkeo del C++). Pero desgraciadamente no todo fue color de rosa. Los problemas graves comenzaron en la fase de deployment, gracias a los requerimientos de instalación que posee cualquier aplicación .NET.

El Extra Damage ocupaba aproximadamente 10 Mb, pero requería casi 10 veces más espacio de instalador si contábamos el agregado de los runtimes de DirectX y el .NET framework. Si bien había visto que esto podría ser un problema confié que herramientas como el Salamander .NET Linker podrían ayudarme llegado el momento. Confié mal.

El Salamander no sirvió para nada. El juego compilado nativamente crasheaba indefectiblemente. Por lo tanto tuve que realizar un instalador que invocaba al instalador del .NET framework y el instalador de DirectX 9.0c.

No es un detalle menor. No utilizaremos C# en juegos AAA, no por ahora al menos, pero si parecía ser una buena opción para juegos independientes de distribución electrónica. Desgraciadamente para ello el tamaña del instalador y los prerequisitos son fundamentales.

Si Windows Vista hubiese tenido una penetración mayor el problema se hubiese reducido en magnitud ya que Windows Vista posee el .NET framework 3.0 preinstalado así como DirectX, pero dadas las circunstancias parece que Windows XP se quedará con nosotros algunos años más.

C# sigue siendo una buena opción, bajo ciertas consideraciones y tiene un muy buen futuro en el mundo de los videojuegos. Actualmente es muy utilizado en muchos estudios de juegos para la creación de herramientas (ej: editores de niveles).

En la próxima parte de este artículo haremos una introducción al lenguaje D y veremos porque parece que será una buena opción para el desarrollo de videojuegos.

Comments

  1. January 14th, 2008 | 10:16

    Excelente nota.
    En este momento estoy aprendiendo a programar en java para hacer juegos en celulares. Ya sé usar c++.. pero c# escuché comentarios muy buenos para su facilidad y prestaciones en su uso en desarrollo de videojuegos más que nada. Estoy ansioso por ver el xna.
    Saludos.

  2. January 17th, 2008 | 9:56

    […] mencioné en la primera parte de esta nota (que puede encontrar aquí) existen nuevas alternativas para el desarrollo de juegos, no porque sean lenguajes realmente […]

Leave a reply