17 de abril de 2015

"Creo que hay cosas que no fueron bien explotadas en su día". Entrevistamos a Gasega68k, creador del alucinante Wolfenstein 3D para Megadrive

A día de hoy, Megadrive es una máquina que está bien documentada y que, gracias a nuevas herramientas, está viviendo una segunda juventud. Muchos nuevos proyectos para la máquina de Sega nos han llamado recientemente la atención, como puedan ser las creaciones de 1985 Alternativo y su espectacular proyecto Antarex. Recientemente nos hemos fijado en varios proyectos que, curiosamente, vienen de la misma persona, hecho que ha provocado la inmediata puesta en marcha de la maquinaria de RetroManiac para saber más sobre dichos proyectos.

Nos referimos, por supuesto, a la conversión de Wolfenstein 3D y la demo simulando el modo 7 de F-Zero creadas por Gabriel Goncalves, conocido en el mundillo como Gasega68k. Gabriel ha tenido la amabilidad de contestar a nuestras preguntas y explicarnos un poco más cuánto da de sí un sistema como Megadrive.

Así de bien luce Wolfenstein 3D en Megadrive

RetroManiac: Cuéntanos, ¿por qué te embarcaste en el proyecto de crear una nueva conversión de Wolfenstein 3D para Megadrive?
 
Gabriel Goncalves: Bueno, en realidad no tenía planeado hacerlo. Esto comenzó cuando alrededor de julio de 2012 estaba investigando sobre el raycast y me pregunté cómo sería hacerlo en Megadrive/Genesis; después de intentar con varios métodos, logré hacer dos versiones que funcionaron muy bien, basado en dos fuentes diferentes. Al principio no estaba seguro de si ésto sería sólo una demo, pero cuando lo publiqué por primera vez y vi que recibió buenas críticas, entonces decidí que debía completarlo.

Pruebas de raycasting

RetroManiac: ¿Podrías explicar a nuestros lectores en que consiste el raycasting?

Gabriel: Yo no conocía lo que era un raycast hasta que me puse a averiguarlo hace unos 3 años. Además tampoco soy un experto en ello, pero si quisiera explicarlo de una manera sencilla diría que un raycast es una manera de crear un mundo 3D basado en un mapa en 2D, pero si vamos más a fondo la idea básica es ésta:

Antes que nada, el mapa es una cuadrícula en 2D -en el caso de Wolfenstein es de 64x64- en la que cada cuadrado puede ser 0 (nada, no hay pared) o un valor cualquiera (que vendría siendo una pared y el valor es el número de la textura).

Algunos sprites de enemigos del juego
Por cada columna X de la pantalla (es decir, por cada línea vertical de la pantalla, de izquierda a derecha y dependiendo del ancho del área de visión - si, por ejemplo, es de 320x160, serán 320 veces) se "envía un rayo" (es una manera de decirlo) que comienza desde la ubicación del jugador, con una dirección que depende de hacia dónde está orientado el jugador y la coordenada X de la pantalla.
Entonces este "rayo" avanza hacia adelante en el mapa 2D hasta que encuentra un cuadrado que es una pared. Cuando encuentra la pared, se calcula la distancia de ésta hasta el jugador, y se usa esta distancia para calcular cuán grande se va a dibujar esa pared; mientras más lejos, más pequeña se verá en la pantalla, y mientras más cerca, más grande se verá. El cuadrado indicará qué textura se va a usar; luego se calcula en qué posición exacta se encuentra dentro del "cuadrado" para luego dibujar la columna de la textura que corresponde.

Raycast con texturas de Doom a resolución GBA

RetroManiac: ¿Cómo fue el proceso que seguiste para implementar gráficos, música, lógica, etc. en tu programa? ¿En qué versión te basaste? ¿La original para ordenadores? ¿En qué estado se encuentra el proyecto en la actualidad?

Gabriel: Este juego está basado en la versión de PC (ordenadores); la música, lógica y gráficos son los de esa versión. El proceso de convertir los gráficos (especialmente las texturas de paredes y enemigos) ha cambiado con el tiempo, porque he conseguido formas de hacerlo más rápido y mejor con programas como GraphicsGale, y también con herramientas que he hecho; quizás algunos no lo saben, pero en este juego las texturas de paredes y enemigos tienen 16 colores pero, gracias al "dither"(cuando se mezclan dos pixeles de 2 colores diferentes para formar otro color), se simulan más de 16 colores. Actualmente el proyecto se encuentra quizás en un 80%: tengo todos los gráficos hechos (texturas de paredes y enemigos), falta la música de dos episodios (unas 10) y un poco de código.

Menú de Wolfenstein 3D


RetroManiac: ¿Qué fue lo más complicado de implementar en un hardware limitado como Megadrive, sobre todo en términos de la memoria?

«Este juego está basado en la versión de PC (ordenadores); la música, lógica y gráficos son los de esa versión. El proceso de convertir los gráficos (especialmente las texturas de paredes y enemigos) ha cambiado con el tiempo, porque he conseguido formas de hacerlo más rápido y mejor»
 
Gabriel: Lo mas complicado no ha sido la memoria. El espacio libre de RAM en este juego es de unos 8KB (quizás un poco más) y el espacio en Rom va a estar entre 2.5 y 3 MB (de 20 a 24 Mbit); lo más complicado han sido los gráficos (las texturas de paredes, enemigos y objetos) - como dije anteriormente tengo que convertirlos a 16 colores con "dither" para simular más colores.


Simulación de raycasting en primeras pruebas


RetroManiac: ¿De qué te sientes más orgulloso de esta conversión no oficial del juego? ¿Qué has dejado fuera o te hubiera gustado incluir pero no ha sido posible?
 
Gabriel: Me gustó el haber sido posible incluir todo del juego original (o mejor dicho, va a ser posible) y que haya podido mantener una buena tasa de cuadros por segundo al ir agregando los enemigos. Lo que me hubiera gustado era hacerlo con el engine más rápido y con un área de visión mayor, porque en el transcurso del desarrollo del juego he conseguido otras formas de mejorar el engine. De hecho, hice varios demos con mayor tamaño del área de visión y aún con una tasa de cuadros por segundo mayor; por ejemplo, tengo una demo con una resolución de 240x160 funcionando entre 20-26 cuadros por segundo (sin enemigos ni objetos, claro). Me hubiera gustado utilizar este método para el juego, pero el problema es que el juego ya está muy avanzado y para cambiar eso, tendría que modificar muchas cosas y, además, creo que el engine actual del juego es suficientemente rápido para ser jugable. De todas formas, seguramente estaré utilizando este engine que es mas rápido en otros juegos, quizás en otra versión de Wolfenstein.

Aunque aún no he descartado completamente la idea de utilizar el engine mas rápido en Wolf3D, porque en la semana santa pude avanzar bastante en el desarrollo de Wolf3D y me he dado cuenta que el juego podría "caber" en 2MB, pero para eso tendría que comprimir algunas cosas y además porque con ese nuevo método de raycast que hice puedo ahorrar más memoria en código y si con todo ello puedo hacer que el juego quede en 2MB (o 16 Mbit), entonces sí cambiaría el engine.
 
Primeras pruebas de G-Zero


RetroManiac: Megadrive vs SNES. La eterna pregunta. ¿Con cuál te quedas y por qué? ¿Qué aspectos dirías que son los más fuertes en cada una de estas máquinas míticas de los 16 bits?
 
Gabriel: Es una pregunta difícil, en realidad no podría escoger una, yo me quedaría con las dos, ambas tienen muy buenos juegos. Yo creo que el aspecto más fuerte en SNES son los colores, el modo 7 y otras cosas más en el hardware, pero Megadrive tiene la ventaja de su procesador y programar para ella es mucho más fácil, además se pueden hacer muchas cosas por software.

RetroManiac: Ahora tomas como referencia F-Zero de SNES, uno de los primeros baluartes del conocido modo 7 de la consola de Nintendo. En las primeras pruebas parece que la resolución por el momento es baja, pero que a medida que vas descubriendo optimizaciones puedes mejorarlo. ¿Hasta dónde crees que podrás llegar? ¿Algo similar al original, mejor? :)

«Yo me quedaría con las dos, ambas tienen muy buenos juegos. Yo creo que el aspecto más fuerte en SNES son los colores, el modo 7 y otras cosas más en el hardware, pero Megadrive tiene la ventaja de su procesador y programar para ella es mucho más fácil»

 
Gabriel: La resolución es baja para poder mantener un buen framerate. Si logro optimizar más, aumentaré la resolución, pero no creo que sea posible hacer algo similar al original en cuanto a resolución y cuadros por segundo, a menos que use un chip externo para ello. Quiero intentar hacer algo similar al original en cuanto a jugabilidad y mantener al menos una tasa de entre 20 a 30 FPS.
 
Otra imagen de prueba de G-Zero

RetroManiac: ¿Conoces HuZERO? Una pequeña demo técnica para PC-Engine que también tomó como referente el cartucho de carreras espaciales de la Super (Nota: consulta nuestra entrevista a Chris Covell aquí).

Gabriel: Sí, ésto lo vi hace unos meses. Ya había intentado hacer un "modo 7" hace un tiempo en Megadrive pero cuando vi esa demo me inspiró y me propuse a hacerlo en Megadrive.

RetroManiac: ¿Crees que una maquina como la Megadrive fue realmente bien explotada a lo largo de su vida comercial o es ahora, gracias al empuje de desarrolladores como tú, cuando de verdad vemos lo que es capaz de hacer?

Gabriel: Creo que hay cosas que no fueron bien explotadas, me imagino que debido al tiempo que tenían los desarrolladores para hacer los juegos, y que quizás no tenían la oportunidad de experimentar más, pero eso no sólo pasa con Megadrive.
 
El proyecto Wolfenstein 3d está actualmente al 80%
 
RetroManiac: Una vez visto de lo que es capaz la Megadrive simulando un modo 7 como has hecho con tu demo de F-Zero, ¿hasta donde piensas llegar? ¿Se queda en una simple exhibición de lo que Megadrive es capaz de hacer, o piensas desarrollar aún más y acabar haciendo un juego? ¿Veremos algún día un port completo de F-Zero para Megadrive por tu parte?
 
Gabriel: Yo espero hacer quizás dos juegos con ésto: uno al estilo F-Zero que he llamado G-Zero (no sería un port de F-Zero, sino un juego nuevo) y otro al estilo Super Mario Kart, para el que aún no tengo un nombre definitivo.
Algunos objetos creados en 3D para un posible juego de Starwars
 
RetroManiac: Viendo lo bien que se te está dando desarrollar para Megadrive, ¿vas a sorprendernos con algo para otro sistema o vas a seguir enfocado en la máquina de Sega? ¿Cuales son tus próximos proyectos?
 
Gabriel: Mis próximos proyectos más cercanos serían: Spear Of Destiny (que es una precuela de Wolf3D, lanzada unos meses después de Wolf3D). También están los juegos con Modo 7, un nuevo Wolf3D basado en la versión de Mac/3DO o uno completamente nuevo, y el juego de Starwars que quiero comenzar a hacer en unos meses o a finales de año, y que tendría escenas en 3D al estilo Starfox (como la demo de Starfox3D que hice), escenas 3D con raycast; también usaría muchas cosas que he aprendido con el tiempo, scaling, rotación, etc.

«Mis próximos proyectos más cercanos serían: Spear Of Destiny [...] y también está el juego de Starwars que quiero comenzar a hacer en unos meses o a finales de año, y que tendría escenas en 3D al estilo Starfox»

Y ademas de Megadrive/Genesis, pienso hacer algo con Sega/Mega cd, 32x y también más adelante (¿en unos años?) con otras consolas como GBA, N64 y otras.
RetroManiac: Un millón de gracias por tu tiempo, Gabriel :)
 
 
Visita su canal de Youtube para más información.
Demos:
Wolfenstein 3D
Modo 7
Starfox

1 comentario:

  1. yo juego a tu wolf en mi megadrive en un cartucho con usb y es una delicia mil gracias por hacer este tipo de cosas me dan la vida y hace que no pierda la fe en los videojuegos :):)

    ResponderEliminar