Alone in the Dark (el primero) es uno de mis juegos favoritos. Cumple todos los requisitos: no sólo es bueno de narices, básicamente creó un nuevo género (el survival horror, o "terror y supervivencia"), y además de eso su aspecto técnico era impresionante, con una tecnología subyacente que era estado del arte por entonces, lo cual podría pasarte desapercibido si nunca te molestaras en descubrirlo.

Por supuesto, un culto de seguidores creció en torno a él que todavía persiste, con aficionados analizando en detalle su motor por motivos como el desarrollo de una alternativa de código abierto, el aprovechamiento de fallos para arañar unos segundos durante un speedrun, o la extracción de recursos de los archivos del juego, además de muchos otros que te puedas imaginar.

Uno de esos proyectos es Room Viewer, "visor de habitaciones" (hecho por el usuario tigrou), una aplicación que a pesar de su nombre no sólo permite visualizar los mapas y la ubicación de entidades en ellos, sino también inspeccionar los modelos 3D y sus animaciones.

El programa Room Viewer para Alone in the Dark, mostrando el modelo del jugador Edward Carnby con una escopeta, así como sus animaciones y detección de colisiones.

También puedes exportar el modelo actual a formato .obj (Wavefront OBJ), pulsando la tecla X. El archivo resultante se puede importar desde editores 3D como Blender, aunque conseguir que se renderice correctamente (tal y como se ve en Room Viewer) no es inmediato, y los .obj no almacenan información compleja sobre materiales. Para automatizar este proceso desarrollé un script de Python para Blender que lo hace todo por ti. Conseguirlo fue más fácil de lo que parece porque Blender se ejecuta de forma acoplada con un subsistema de Python, y cada acción o botón de la interfaz gráfica tiene una instrucción equivalente en dicho lenguaje.

El primer paso es hacerte con Blender. Bastaría con la versión portable comprimida en ZIP, para que no tengas que instalarlo. Después, coge la textura noise.png (que algunas de las superficies usan para crear un patrón de "ruido") del repositorio de Room Viewer, y guárdala en algún sitio (por simplicidad, yo la coloqué en la misma carpeta donde está el ejecutable de Blender). Finalmente, abre una terminal de comandos (por ejemplo, PowerShell en Windows) y lanza el script, especificando el OBJ de entrada y (opcionalmente) el archivo .blend que quieres de resultado (o de lo contrario se llamará por defecto untitled.blend).

El script funciona tanto en Linux como en Windows. Especificar el nombre del archivo de salida es opcional.

Si tienes muchos archivos de modelos para convertir, puedes procesarlos todos en serie escribiendo un script para tu sistema operativo. Aquí tienes un ejemplo en PowerShell que lo ejecutará para todos los .obj presentes en la carpeta actual (guárdalo con extensión .ps1):

Get-ChildItem .\*.obj | Foreach-Object `
	{.\blender.exe --background --python .\convert_aitd_obj.py -- -f $_.Name -o "$($_.BaseName).blend"}

El/los archivo(s) resultante(s), con extensión .blend, aparecerán en la misma ruta. Ya puedes arrancar Blender para comprobar los resultados.

El modelo debería verse correctamente nada más abrirlo con Blender.

Y, si abres el visor de materiales (ventana Nodos de sombreado) podrás confirmar que todos los materiales y sus nodos han sido configurados correctamente. El juego utiliza las siguientes clases de materiales:

  • Sin sombreado (shadeless): una textura estándar con un único color plano.
  • Ruido (noise): mezcla el patrón de la textura noise.png mencionada anteriormente con un color base.
  • Cristal (glass): superficies con un grado variable de transparencia (pero que también poseen un color que afecta a lo que sea vea a través).
  • Metal: también un color simple, pero con un gradiente que varía acorde al ángulo de visión, lo cual hace el efecto de un sombreado (shader) reflectante muy simple.

No todos los modelos de AITD tienen todos los tipos de material. Mira las "ranuras" de los mismos para ver cuáles están en uso.

Descarga