Juegos en Linux:
Marathon (y sus secuelas)

Cómo ejecutar Marathon en GNU/Linux

Introducción

¿Alguien recuerda Marathon? A muchos de vosotros el nombre os sonará exótico, y se trata no obstante de un arcade casi legendario para los usuarios de Mac OS de los años noventa. Tal vez como Doom entre los jugones de PC, ¡pero con un argumento inteligente! Así que no sólo disparabas armas variadas sobre monigotes feos, sino que además participabas en una historia. Una historia de ciencia-ficción sobre naves espaciales, alienígenas buscando problemas e inteligencias artificiales.

En realidad, aquí vamos a hablar no de un único arcade, sino de una trilogía creada por Bungie en aquella época, y que consta de los siguientes títulos:

  • La primera entrega, publicada en 1994 para Mac OS, con el nombre de Marathon.
  • Marathon 2: Durandal, que apareció en 1995 para Mac OS y Windows 95.
  • Y, por último, en 1996 llegó a las tiendas Marathon Infinity, de nuevo sólo para los ordenadores de Apple.

Los tres pueden disfrutarse en Linux gracias a que Bungie liberó el código fuente de Marathon 2, y a partir de él un grupo de programadores ha creado un motor gráfico gratuito, llamado Aleph One. Para jugar, basta con instalar Aleph One, y los archivos de datos del título de la serie que os interese.

Así que sin más cháchara pongámonos manos a la obra.

Requisitos:

De software:

En primer lugar, el principal requerimiento son las librerías SDL. A saber:

Salvo en el caso de SDL_sound, que emplea una numeración diferente, usad las versiones 1.2.x. SDL 2.0 es una nueva generación de estas librerías, con otro funcionamiento interno, y no mantiene la compatibilidad con la rama antigua.

Si pensáis descargarlas de vuestros repositorios de paquetes, mediante Synaptic, Urpmi y demás herramientas similares, tened en cuenta que algunas distribuciones de Linux dividen cada librería en dos paquetes distintos: uno con la librería propiamente dicha —en Debian tendríamos, por ejemplo, libsdl-net-1.2—, y otro con los headers, el código fuente necesario para compilar programas que dependan de ella —en este caso, libsdl-net1.2-dev—. En este tutorial vamos a compilar Aleph One, así que harán falta los dos.

Hay alguna cosa más:

  • Obviamente, un compilador de C y C++ (en Linux, GCC; suele venir ya instalado con el sistema).
  • Las librerías Boost de C++, versiones 1.37 y superiores.
  • Librería Zziplib.
  • Librería Libsndfile.
  • Librerías Libogg y Libvorbis (opcionales, pero recomendables para escuchar música en formato OGG).
  • Libmad (opcional).
  • El entorno de ejecución Lua (opcional, aunque recomendable).
  • El códec de sonido Speex (opcional, sólo por si queréis hablar por micrófono con otros jugadores).
  • Librería Libsmpeg (opcional).
  • Y, por último, FFmpeg (opcional).

Conseguidlas también de vuestros repositorios, incluyendo los paquetes "dev" o "devel" correspondientes. Se trata de una lista larga, aunque de algunas —Speex, FFmpeg— creo que podréis prescindir la mayoría de vosotros sin inconvenientes.

De hardware:

Versiones modernas de Aleph One requieren OpenGL 2.0, y para eso necesitaréis una tarjeta gráfica compatible. En 2014 dudo que esto represente un problema. Bueno, salvo para mí, que sigo con una Nvidia TNT2, tecnología punta de 1999. En teoría resulta posible, de todas formas, compilar Aleph One sin soporte para OpenGL —mediante la opción --disable-opengl, mirad más abajo—, aunque parece que los autores ya no piensan demasiado en ello y por lo tanto la compilación puede fallar así.

Configuración e instalación:

Ya con todas las librerías necesarias instaladas, llegó el momento de compilar Aleph One. Aunque primero hay que descargarlo de su página oficial. Así que os dirigís a:

Y allí miráis ya en el extremo inferior de la página, bajo la sección More Games; seguramente veréis una etiqueta que anuncia Download for Linux. Clicar en ella debería, tras una corta espera, iniciar automáticamente la descarga desde los archivos de Sourceforge. En el momento de escribir esto, el fichero en cuestión se llama AlephOne-20140104.tar.bz2, aunque eso cambiará lógicamente en futuras versiones.

Compilar Aleph One

Supongamos que nos hemos descargado el tarball —es decir, el archivo .tar.bz2 mencionado en el párrafo anterior— en la carpeta /home/pepito/descargas. Antes que nada, habrá que descomprimirlo:

$ cd descargas
$ tar -jxvf AlephOne-20140104.tar.bz2

[...]

Y entramos al directorio principal del código de Aleph One, que acabamos de descomprimir:

$ cd Aleph*
$ pwd

/home/pepito/descargas/AlephOne-20140104

Si examináis los contenidos de esta carpeta —escribiendo, por ejemplo, ls en la terminal—, os encontraréis con un archivo ejecutable con el nombre de configure. Representa el primer paso de la compilación, y sirve para determinar cómo está configurado vuestro sistema, qué directorios de instalación deseáis utilizar, y qué características opcionales queréis incluir en vuestra copia de Aleph One.

Así que lo ejecutamos:

./configure --disable-ffmpeg --disable-speex

Notad que yo aquí he usado dos opciones de ejecución —"--disable..."— para desactivar un par de cosas que creo que no me hacen falta. Si no estáis seguros, podéis ver todos los ajustes que permite efectuar configure tecleando un comando como éste:

./configure --help | less

Y, en todo caso, siempre queda la posibilidad de lanzar "./configure" a secas, de modo que la compilación se efectúe con las opciones por defecto, y ver qué pasa. Debería funcionar, siempre y cuando reunáis todas las librerías enumeradas antes.

Si configure ha terminado sin errores, es la hora de proceder a la compilación en sí:

$ make
[...]
[...]
[...]

Este paso suele llevar un rato, durante el cual veréis en la consola largas secuencias de comandos de GCC, ejecutándose uno tras otro. Mientras no se interrumpan con algún fallo, nada de qué preocuparse. Matad el tiempo jugando al comecocos, salid a pasear al perro, llamad por teléfono a vuestra suegra, o algo.

Cuando make termine, queda instalar la copia compilada de Aleph One en el sistema:

$ su root
Password: ← Aquí la contraseña del administrador.
# make install
# exit

Y con eso habréis terminado con Aleph One. Además, de esta forma casi habréis aprendido a compilar la mayoría del software para Linux, porque este sistema de "configure; make; make install" es el más común para ello. De hecho, Aleph One resulta un poco más complicado que la media, debido a su larga lista de dependencias, así que si habéis completado con éxito esta parte del tutorial podéis sentiros satisfechos de vosotros mismos.

Hey, espera un momento, ¡no logro compilar Aleph One!

Bien, no os desmoralicéis, esto es bastante probable que os ocurra. Los autores de Aleph One no parece que prueben muy a fondo diferentes configuraciones, y el sistema de compilación resulta pues un tanto quisquilloso y puede fallar de muchas maneras. Como muestra de ello, yo no he conseguido compilar una copia sin soporte para OpenGL, aunque teóricamente sea posible.

Sin embargo, en Arcades 3D os ofrecemos otra solución: ¡binarios ya compilados! Podéis conseguirlos, por ejemplo, usando Wget en una terminal:

$ wget http://www.arcades3d.net/linux/archivos/AlephOne-20140104_bin.tar.xz

Esto descargará el archivo .tar.xz en cuestión, y lo guardará en la carpeta en la que os encontréis. A continuación hay que descomprimirlo:

$ xzcat AlephOne-20140104_bin.tar.xz | tar -xvf -

Y, por último, instalar Aleph One en el sistema:

$ cd AlephOne-20140104_bin
$ su

Password:
# ./instalar.sh

¡Y ya está!

Con estos binarios he adjuntado las librerías que utilicé al prepararlos, para que le funcionen a la mayor cantidad de gente posible. Éstas se copiarán al directorio /usr/local/share/AlephOne/libs. De todas formas, sí que necesitaréis instalar por vuestra cuenta SDL 1.2.

Instalar los juegos

Las tres entregas de la serie Marathon se hallan disponibles de forma gratuita —y legal :risa:— en la página oficial de Aleph One. No creo que os cueste orientaros en ella. Simplemente clicáis sobre el juego que os interese; y en la siguiente pantalla, bajo la etiqueta de Linux, en Download Game Files.

El archivo que os descarguéis de allí vendrá comprimido en formato ZIP. En el caso del primer Marathon, por ejemplo, se llama Marathon-20140104-Data.zip. Lo dejamos en una carpeta temporal, y lo descomprimimos:

$ cd /home/pepito/descargas
$ unzip Marathon-20140104-Data.zip

Esto crea otra carpeta llamada Marathon, que habrá que mover al directorio de datos de Aleph One —por defecto, si no lo habéis cambiado en la compilación, /usr/local/share/AlephOne—. Para esto os harán falta permisos de administrador:

$ su root
Password:
# mv -v Marathon /usr/local/share/AlephOne/
# exit

Sólo un paso más: crearemos un pequeño script para ejecutar fácilmente el primer Marathon, que acabamos de copiar, mediante Aleph One. Así que abrís vuestro editor de textos, escribís en él lo siguiente, y guardáis el resultado en un archivo que bautizaremos como alephone-marathon1:

#!/bin/sh
alephonedatos="/usr/local/share/AlephOne"
export ALEPHONE_DATA="$alephonedatos:$alephonedatos/Marathon"
/usr/local/bin/alephone "$@"

Acto seguido, le dais permisos de ejecución, y lo movéis a /usr/local/bin:

$ chmod a+x alephone-marathon1
$ su

Password:
# mv alephone-marathon1 /usr/local/bin

Y de este modo, para empezar a jugar bastaría con teclear alephone-marathon1 en una terminal.

Este método es quizás un poco más rebuscado de lo estrictamente necesario. Sin embargo, posee la ventaja de que os permite instalar al mismo tiempo los tres Marathon. Cada uno quedaría guardado en su propio directorio dentro de /usr/local/share/AlephOne, y podríais iniciarlo con su propio script de arranque.

¡Y listo! ¡A jugar todo el mundo!


Lo que todos estabais esperando, capturas de pantalla que demuestren que el invento funciona. Tomadas en un Pentium IV a 2 GHz, y con 1'5 GB de memoria RAM.

Aquí estoy iniciando el primer Marathon:

Marathon corriendo en FLWM

Y en esta otra imagen llevo ya un ratito jugando. Me encuentro en el segundo nivel, divirtiéndome con los monstruos que esperan en él. Utilizo el modo de renderización por software, sin aceleración gráfica, pero Aleph One permite también gráficos por OpenGL:

Comienza la acción

- Karnizero redactó la primera versión de este manual en noviembre de 2005.
- Reescrito casi por completo en febrero de 2014 por Eye del Cul.


Cumple con el estándar HTMLCumple con el estándar CSSApta para cualquier navegador

Podéis copiar libremente cualquier contenido de esta página. Si se trata del texto o las imágenes, mencionad la fuente (www.arcades3d.net)...