2 de octubre de 2015

"Muchos de esos trucos de programación siguen teniendo vigencia hoy día". Entrevistamos a Javier Peña "Utopian".

Desde RetroManiac colaboramos con la organización de la próxima edición de RetroConsolas Alicante 2015, evento enmarcado dentro de las actividades del Museo de la Universidad de Alicante, que contará con la presencia de destacados miembros de la escena retro. Hoy iniciamos una serie de entrevistas para presentaros a los ponentes de las diferentes conferencias y actividades que conforman este evento, comenzando con Javier Peña "Utopian" de Retroworks.
Javier Peña, conocido en el mundillo retro como "Utopian", es una de las personas con más conocimientos de las entrañas de máquinas como el ZX Spectrum. Con un pasado scener y miembro en la actualidad de Retroworks, Javier cuenta con una amplia experiencia en lo que se refiere a luchar contra las restricciones de memoria de los sistemas de 8 bits. Precisamente sobre ello tratará su charla virtual del próximo día 5 de octubre a las 19 horas en el Salón de Actos EPS 1, dentro del marco de actividades de RCA2015: "Viejos trucos para ahorrar memoria". En las próximas líneas podéis asistir a una pequeña conversación mantenida con Javier sobre los secretos de estas viejas máquinas que, treinta años después, siguen entreteniéndonos como el primer día.

Fotografía cortesía de Alejandro Valdezate https://flic.kr/p/hP3Sn5

RetroManiac: Gracias por dedicarnos unos minutos de tu tiempo para esta entrevista. ¿Quién es Javier Peña y a qué se dedica hoy en día?

Utopian: Pues soy una persona a punto de cumplir los 40 años, padre de dos churumbeles y apasionado de los videojuegos y los ordenadores de 8-bit desde que los conocí. En mi día a día profesional trabajo para una empresa dedicada al software libre, desarrollando para un gran proyecto de código abierto llamado OpenStack.

RetroManiac: Hoy en día te conocemos, entre otros motivos, por tu trabajo con Retroworks, trabajando en juegos nuevos para máquinas antiguas. ¿Qué máquina llega a tu casa y como llega?

Utopian: La primera máquina que llegó a mi casa fue un Spectrum +2A, allá por las Navidades de 1987. Lo recuerdo perfectamente, porque llevaba mucho tiempo intentando conseguir una, pero la situación económica de mi familia no lo permitió hasta entonces.

Antes había jugado con los ordenadores de amigos y vecinos, y cuando por fin lo conseguí fue un gran dia. Me tiré todas las vacaciones jugando a los juegos que venían en el pack (unos bastante sencillotes de Idealogic), y poco después llegó a mis manos el famoso “Lingote” de Erbe. Y bueno… desde entonces hasta hoy.

De paso, a la vez llegó a casa un Amstrad PC1512 para mi hermano, que estaba estudiando en la universidad. No pude trastear mucho con él al principio, y me limitaba a ver a mi hermano usarlo, pero al final se convirtió en mi segundo ordenador y fue el culpable de que pasase de los 8 bits al PC, sin pasar por máquinas tan buenas como el Amiga.

Imagen de una de las demos pasadas

RetroManiac: El recibir un ordenador en la época supuso una auténtica revolución para muchos de nosotros. ¿Cuanto crees que influyó en tu futuro? ¿Cómo crees que afectó a una generación de chavales el enfrentarse a un lenguaje de programación como el BASIC a una edad tan temprana?

Utopian: Mucho, influyó muchísimo. De hecho, hoy trabajo en el mundo de la informática gracias a ese Spectrum, fue entonces cuando decidí que quería vivir de eso.

Lo de enfrentarse al BASIC tan pronto, en mi caso fue un poco frustrante, porque aprendí poco y nunca llegué a tener libros que me permitieran llegar más allá de lo que daba el manual. Eso sí, me dio la motivación suficiente para aprender en cuanto tuve oportunidad. En general, a mi generación le enseñó a pensar sobre cómo programar, a ver esas máquinas como algo más que una “consola”, sino algo con lo que se podía trastear y hacer cosas divertidas. Y una vez descubres que puedes crear cosas, cuesta mucho dejar de hacerlo.

Ahora estoy intentando picar el gusanillo de la programación con mis hijos, aprendiendo un poco de Scratch con ellos. De momento no tengo demasiado éxito, pero todo se andará.

RetroManiac: Más o menos coincidiendo con tu paso por la universidad entras en el mundo de la demoescena. ¿Qué valores y habilidades arrastras de esa época en tus trabajos más recientes? ¿Cómo influye la demoescena y lo aprendido en ella en tu manera de trabajar?

Utopian: La principal influencia que saqué fue el trabajo en equipo. Al contrario que otra gente del mundillo, yo me considero programador “cerrado”, como los zurdos que no saben darle a la pelota con la derecha :). Así que en la demoscene aprendí a unirme a artistas y músicos y, entre todos, darle cierta forma a lo que queríamos crear, ya que por mí mismo no era capaz. He mantenido esa forma de hacer las cosas en el desarrollo como parte de RetroWorks.

Otro aspecto que arrastro desde entonces es el gusto por hacer la mayor cantidad posible de cosas con herramientas propias. En la demoscene, sobre todo en los círculos más “oldskool”, no se veía bien utilizar herramientas o códigos de otros (si acaso los reproductores de música y poco más), y algo de eso mantengo. Con el tiempo he aprendido a aprovechar más las herramientas disponibles, pero sigo valorando cosas como hacerse uno mismo las rutinas en las que basas tu juego. No es que vea mal que se usen motores de juego de otros (como AGD o la Churrera), es que para mis proyectos disfruto más si creo yo el código.

BeTiled! en su versión MSX

RetroManiac: Después de tu paso por la demoescena vuelves al “redil” de los videojuegos participando en nuevas creaciones para máquinas antiguas. ¿Crees que estas máquinas se explotaron bien en su día o por el contrario es ahora, con todo lo aprendido en treinta años, cuando de verdad se puede sacar mejor partido de ellas?

Utopian: En aquella época se exprimieron de maravilla :). Las ventajas que tenemos hoy al programarlas son que podemos aprender de todo lo que se sacaron de la manga entonces, y además contamos con Internet para almacenar y distribuir ese conocimiento. Si acaso, se ha podido exprimir más alguna técnica, como el multicolor en el Spectrum, pero algunas de la época, como Filmation o las rutinas de scroll de Joffa, siguen siendo pequeñas obras de arte.

En general, para todo lo que hacemos hoy se puede aplicar la frase de “Si he logrado ver más lejos, ha sido porque he subido a hombros de gigantes". A nivel técnico podemos aprender de lo que hicieron con nuestras queridas máquinas, y a nivel de jugabilidad tenemos la experiencia acumulada de muchas generaciones de ordenadores y consolas.

RetroManiac: ¿Cuáles dirías tú que son los mejores trucos de programación que podemos utilizar hoy en día y que no se conocían durante la vida comercial de estas máquinas? ¿Cuales son las limitaciones y carencias que hemos sido capaces de solucionar hoy en día?

Utopian: A nivel puramente de código, creo que hemos mejorado mucho en el uso de compresión de datos. En la época sí se usaba, pero creo que no tan a fondo como lo hacemos hoy, ni con los algoritmos tan optimizados que tenemos ahora. Una causa de esto es que prácticamente todos desarrollamos en PC, con lo que usamos el PC para comprimir los datos, lo cual es mucho más rápido que usar un Z80.

Además, al usar PC podemos aprovechar los emuladores para depurar nuestros juegos, con lo que ganamos en tiempo de desarrollo. Antes, las compañías más fuertes económicamente tenían sus sistemas basados en terminales UNIX o en PCs (el famoso PDS), pero aún así las facilidades que les presentaban eran menores de lo que podemos tener hoy.

También, y aunque no sea un “truco” en sí, nos estamos liberando de las ataduras comerciales de la época. Por ejemplo, con los Spectrum o Amstrad CPC era poco habitual ver títulos exclusivos para las versiones de 128K, porque el mercado que tenías para vender el juego era menor que si intentabas cubrir todas las variantes. Eso limitaba a veces lo que se podía hacer con tu juego, y hoy nos duelen menos prendas en saltarnos esas limitaciones y hacer el juego que nos apetezca.

Cannon Bubble en su versión para ZX Spectrum

RetroManiac: ¿Es posible mover “cualquier gráfico” en una máquina de 8 bits (dentro de lo razonable) o los programadores os encontráis con casos en los que tenéis que pedirle al grafista que retoque su trabajo por ser imposible obtener un resultado aceptable aún cuando la máquina sea capaz de mostrar esos gráficos?

Utopian: Siempre habrá limitaciones, aunque intentamos llegar lo más lejos posible. Al final, nuestros problemas siempre serán dos: o no somos capaces de crear una rutina lo bastante rápida para mover todo, o nos quedamos sin memoria para almacenar todos los gráficos que queremos usar.

En el juego que estoy desarrollando, por ejemplo, estamos teniendo que limitar a veces los gráficos que usamos en los niveles para quedarnos dentro de la cantidad de memoria que tenemos reservada. Lo bueno es que, como el grafista (Paco) es tan bueno, nunca se nota esa limitación :).

RetroManiac: ¿Cómo os la ingeniáis para meter en tamaños tan reducidos como las memorias RAM de máquinas de hace 30 años juegos que en su día eran impensables que entrasen?

Utopian: Jeje, pues tenemos nuestros truquitos :). Justo de eso irá mi charla, así que no puedo revelar demasiado. En general son un montón de pequeños trucos, empezando por comprimir todo lo que se pueda, y después jugando con cómo creamos los gráficos, la música… Todo lo que nos permita arañar un byte se aprovecha.

También hay mucho trabajo de planificación previo. Al tener tan limitada la memoria, tenemos que organizarnos primero, y ver cuánto espacio vamos a poder dedicar a código, mapas, gráficos, etc.

Genesis: Dawn of a new day en versión ZX Spectrum

RetroManiac: Unas máquinas, en teoría tan limitadas como Spectrum, Amstrad, MSX… ¿han alcanzado ya su cima o todavía queda margen de mejora? ¿Conocemos ya absolutamente todos sus secretos o aún nos pueden deparar sorpresas sus tripas?

Utopian: Siempre se le pueden sacar nuevos trucos. Te pongo un ejemplo de cada sistema que has mencionado:
  • En Spectrum, se conocían las técnicas necesarias para superar las limitaciones de dos colores por carácter de 8x8 pixels desde hacía tiempo. Sin embargo, ha sido recientemente cuando han aparecido motores de juego capaces de usar esas técnicas para crear juegos complejos (por ejemplo el Nirvana Engine), algo que nunca antes había sido posible.
  • En Amstrad CPC, sin contar con la demo Batman Forever, tenemos el futuro Street Fighter 2 que se están trabajando entre Augusto Ruiz y DaDMan, con unos sprites impresionantes y que apenas se habían visto.
  • En MSX, se han superado ampliamente las limitaciones del VDP para hacer juegos con scroll horizontal que parecían imposibles, y el mejor ejemplo es Uridium.

RetroManiac: Has participando en títulos interesantes como BeTiled! o Genesis: Dawn of a new day. ¿En que máquina te sientes más cómodo trabajando? ¿De cual de tus trabajos te sientes más orgulloso? ¿Cuál es el “truco” de programación utilizado en un trabajo tuyo del que te sientes más orgulloso por la manera ingeniosa de resolver algún problema?

Utopian: Mi máquina de pequeño fue el Spectrum, así que por inercia siempre tiendo a sentirme más cómodo en ella. Eso sí, me lo pasé genial haciendo BeTiled! y Genesis para MSX, me pareció muy interesante aprender cosas sobre cómo funciona otra máquina. Y bueno, siempre tengo pendiente el hacer algo para CPC, algún día lo conseguiré.

Sobre mis juegos, de momento el que más redondo me ha quedado es Genesis: dawn of a new day, aunque siempre espero hacerlo mejor en el siguiente… A ver si lo consigo :).

En cuanto a los trucos, en mi nuevo juego estoy haciendo un uso bastante creativo de la “shadow screen” del Spectrum de 128K. Ya la había usado antes, pero ahora me está sirviendo como búffer para el algoritmo de dirty rectangles, y a la vez la aprovecho como búffer de descompresión, por la forma (y el orden) en que pinto los gráficos.

Otro buen truco fue el que me permitió en la versión Spectrum de Genesis: dawn of a new day tener colisiones “pixel perfect” para la nave principal. Fue tan sencillo como alterar el orden de pintado para dibujar primero todo lo que podía dañar a la nave, y en la rutina de pintado de la nave detectar si había un pixel encendido o no.

Cydonia, clon del popular Tetris

RetroManiac: ¿Cual sería, según tu criterio, el juego de 8 bits que está perfecto tal y como está y que te hubiera gustado firmar en su día?

Utopian: Uno de mis favoritos siempre ha sido Target: Renegade en su versión Spectrum. Hace todo lo que tiene que hacer, y evita hacer cosas (como usar scroll o poner más color del necesario) que impedirían que el juego fuese tan jugable como es.

RetroManiac: Por el contrario ¿cuáles piensas tu que serían muy mejorables y como los hubieras mejorado?

Utopian: Cada uno tenía su encanto, pero yo hubiese trabajado más la jugabilidad de muchos de ellos. En particular, una de mis manías es la dificultad de muchos juegos españoles de la época, en la que no podías apenas avanzar. Y lo peor es que, detrás de esa dificultad, luego había un trabajo enorme para hacer un gran juego (como en Navy Moves, por ejemplo).

RetroManiac: Cuéntanos, ¿en qué estás trabajando en estos momentos que podamos saber?

Utopian: Pues ando metido en un proyecto “triple A”, si se puede llamar así a un juego de Spectrum :). Es un juego que intenta mezclar lo que me gusta del Prince of Persia y el Barbarian, agitarlo bien y con esos ingredientes hacer algo que no se suele ver en Spectrum. (Nota: intuimos que se refiere a este proyecto).

Como mi ritmo de desarrollo es más bien lento, llevo un montón de tiempo haciéndolo, pero poco a poco estamos cerca de ver la luz. De hecho (¡primicia!) queremos enseñar una versión alfa, con un par de niveles jugables, en la próxima Parla Bytes (28 y 29 de noviembre).

RetroManiac: Por último, pero no menos importante: ¿qué pueden esperar los oyentes de tu charla del próximo día 5? ¿Compartirás con quienes tengan a bien pasarse por el salón de actos los secretos para meter mucha calidad en sistemas tan reducidos como los de 8 bits?

Utopian: Pueden esperar que les cuente los trucos que conozco para aprovechar al máximo la memoria de equipos de 8 bits. Pero además, intentaré explicarles por qué muchos de esos trucos siguen teniendo vigencia hoy día, y cómo en juegos para plataformas actuales se sigue pudiendo aprovechar ese modo de optimizar para conseguir lo que a priori no parece posible.

RetroManiac: Gracias por tu atención.

Utopian: Gracias a tí ;)

Disfruta de la charla virtual "Viejos trucos para ahorrar memoria" el próximo día 5 de octubre a las 19 horas en el Salón de Actos EPS 1 de la Universidad de Alicante o bien en streaming en el siguiente enlace.

Más información en la web de RetroConsolas Alicante.

3 comentarios: