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.
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 :)
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