Hablar de juegos para UNIX siempre ha sido un poco un contrasentido ya que no ha sido un sistema operativo de escritorio en los últimos quince años, justo los que han coincidido con el auge de la informática personal y por lo tanto con el de los juegos informáticos. Con la aparición de Linux empezamos a acostumbrarnos a que en nuestro /usr/games aparecieran simpáticos programas como xbill y xboard que nos permitían pasar el tiempo mientras nuestro último núcleo compilaba. Ahora bien, una vez que GNU/Linux se consolida como una plataforma con futuro, tanto en el campo del servidor (donde ya es presente) como en el del escritorio, es lógico que vayan apareciendo juegos.
Pese a que están apareciendo juegos propietarios para Linux, éstos no nos interesan en el artículo actual ya que esta columna es sobre software libre y la venta de juegos para Linux nos interesa tanto como el regalo de StarOffice o la presunta publicación del código fuente de Solaris. Porque si hay algo que está surgiendo en estos momentos en el campo del software libre son los juegos libres, que junto a las herramientas libres de productividad (K Office y GNOME Office) van a ser las estrellas del software libre el año que viene, un año del 2000 que será el año definitivo del software libre en el escritorio, como este 1999 que lo ha sido del servidor.
Hoy vamos a intentar analizar en qué se benefician los juegos de la filosofía del software libre, qué ventajas competitivas tienen frente al software propietario y qué armas tiene éste último para intentar sobrevivir. A lo largo que todo el artículo también nombraremos (y enlazaremos) a los juegos y proyectos más interesantes dentro del software libre.
Lo primero que necesita un programador de juegos (técnicamente hablando) es el modo de acceder a los recursos del sistema para plasmar sus ideas. En esta primera capa hay que hablar del soporte del núcleo y de las librerías necesarias para no tener que tratar directamente con el hardware.
El soporte de hardware es algo que nos está dando muchas sorpresas últimamente ya que los fabricantes de hardware se han dado cuenta que si soportan Linux tienen un margen mayor de ventas, y que además una vez publicado los controladores hardware bajo una licencia como la GPL prácticamente se pueden desentender de ellos ya que la comunidad los mantiene para su propio beneficio. Éste ha sido el camino seguido por 3dfx, Creative Labs y 3Com como últimos conversos y otros muchos más hasta este momento.
Por otro lado en lo que respecta a las librerías gráficas, los juegos con poca carga gráfica pueden realizarse directamente sobre cualquiera de los dos estándares actuales de diálogos gráficos, GTK+ y QT, sabiendo que podrán ejecutarse sobre cualquier máquina Linux sin importar qué distribución esté instalada. Este es el camino lógico para juegos de estrategia como FreeCiv y pequeños entretenimientos como los solitarios de GNOME y KDE.
Pero esos son juegos para adultos, lo que a los niños (los verdaderos compradores de juegos) les "mola mazo" son las pantallas tridimensionales, la sangre saliendo en bonitas fuentes rojas. Aquí se está haciendo un gran avance, gracias a las librerías OpenGL de aceleración gráfica, el equivalente de DirectX en el mundo Windows. Sobre estas librerías funcionan simuladores de vuelo como FlightGear o juegos tridimensionales como mHockey.
Las librerías OpenGL fueron diseñadas por Silicon Graphics (ahora SGI) para sus avanzadas estaciones gráficas basadas en UNIX, más tarde Microsoft las intentó incorporar a sus sistemas operativos para dar una apariencia profesional a su subsitema gráfico. Ahora es el mejor momento de OpenGL en soporte hardware dentro de tarjetas gráficas destinadas a consuma masivo y, paradójicamente, ahora Microsoft ha discontinuado el soporte de esa tecnología, ¿Por qué? Porque su uso se está extendiendo en Linux (gracias a la implementación libre MesaGL) y no es una tecnología que controle directamente, como siempre no lo hace por el bien de los usuarios sino por aumentar su cuota de mercado.
Quizás el punto más débil (no tanto por implementación sino por falta de estandarización) sea el soporte de sonido. Por un lado el sonido actual en el núcleo (la OSS) tiene un serio problema de profesionalización, los diseñadores originales empezaron a vender soporte para tarjetas de sonido avanzadas y, ahora que los fabricantes están desarrollando controladores libres, están perdiendo gran parte de sus ingresos y, lo que es peor, su parte de la noosfera ya que la comunidad libre respondió (siempre responde) con una nueva arquitectura de sonido ALSA que será la que se impondrá en poco tiempo.
Junto a este soporte hardware están surgiendo librerías de juego multiplataforma, como la ClanLib que permiten que los juegos desarrollados para Linux se puedan usar en otros sistemas operativos como Windows, como pasa con Pingus.
Una vez que el programador se siente cómodo con sus librerías empieza la tarea real de programación, lo que a veces se conoce como tirar líneas, la creación del motor que generará la acción y responderá al jugador. Esto es lo que se confunde normalmente con el juego en sí, y es donde reside la dificultad técnica del mismo. Este es el apartado donde tienen aplicación las técnicas convencionales de desarrollo de software libre, depuración de código, desarrollo cooperativo, mejora incremental y adecuación al usuario.
Pero la mayor ventaja reside esencialmente en que el número de motores necesarios para todos los juegos es mucho más limitado (es aproximadamente un par de ordenes de magnitud menor) que el número total de juegos. Aquí se produce por lo tanto la reutilización real de código que no se puede dar de un modo global en software propietario. Mientras que en el mundo propietario tanto Sierra como LucasArts como otras muchas empresas tuvieron que desarrollar su propio motor de aventuras gráficas, en el softwale libre con una única implementación lo suficientemente flexible hubiese sido suficiente para todos los juegos.
El sistema ya ha sido usado por el software libre en muchos otros proyectos, así la extensibilidad del editor Emacs lo convirtió a lo largo de su historia en un cliente de correo, un entorno integrado de desarrollo, un navegador Web y hasta en un psiquiatra de alta rentabilidad; otros ejemplos son el avanzado editor de gráficos Gimp, el gestor de ventanas Sawmill y muchos más.
Esto ya está sucediendo con varios motores de juego libres, el primero que me viene a la mente es el motor de solitarios llamado Asleriot que viene con la distribución de juegos de GNOME, basada en una arquitectura común y en un lenguaje de extensión como Guile, se puede desarrollar cualquier juego solitario de cartas en un tiempo mínimo. Otros muchos están surgiendo para juegos de plataformas, tridimensionales en primera persona como LxDoom, simuladores de vuelo, etc.
Algo que tiene relación con la configurabilidad del motor y que es igual de importante para el éxito de un juego es el diseño de las fases, lo que en la época de los 8 bits llamábamos "pantallas". Quizás esto es lo que más problemas puede generar en un juego libre, ya que los genios de la programación no suelen ser (salvo honrosas excepciones) grandes artistas.
Para solucionar esto casi todos los juegos libres se distribuyen con un editor de fases, lo cual contribuye a generar un tercer nivel de cooperación, ya que cualquier jugador sin conocimientos de programación puede aportar parte de su experiencia creando nuevos niveles de juego que luego se podrán distribuir libremente al resto de la comunidad.
Para ser sinceros esta cooperación no es un invento del software libre sino algo que ya había sido utilizado históricamente por el software propietario varias veces. Para no ir muy lejos cabe recordar la pluralidad de niveles que se publicaron para el Doom, los Lemmings e incluso para un juego que acabó en manos de Microsoft (el Flight Simulator) y que a partir de ese momento perdió todas sus cualidades de extensibilidad, y con ellas toda la comunidad que lo apoyaba.
El caso del Flight Simulator es arquetípico en el comportamiento de las empresas de software propietario, y en particular de Microsoft, un software abierto y libremente extensible deja la puerta entornada para que otras empresas hagan desarrollos para mejorar el producto (lo cual es bueno para los usuarios) y la respuesta de la empresa inicial no es competir con mejores productos, por supuesto, sino cerrarlo y así evitar que otras empresas se lleven parte del pastel. Esa es la "libertad de innovación" que es buena para los usuarios según el señor Bill Gates.
De este modo el software libre está en una muy buena posición para hacerle sombra a las empresas actuales, al menos en los juegos para ordenador. Otra historia son los juegos para consolas aunque quizás deberíamos tener en cuenta que la plataforma de desarrollo de la PlayStation 2 es Linux, que las grabadoras de CD están al cabo de la calle, quizás en un futuro las consolas de juegos alcancen cierto grado de "libertad", ¿Quién sabe?