entrevistas

Entrevista con Ian Oliver (Realtime)

Con motivo de la redacción del segundo libro de EMS, El Mundo del Spectrum +, tuvimos ocasión de disfrutar de interesantes entrevistas para la documentación del mismo. Y queremos compartir algunas de ellas con vosotros. Estas son las preguntas que Ian Oliver nos respondió amablemente para desentrañar algún que otro secreto de programación que utilizó Realtime en sus asombrosos juegos en 3D.

Starstrike 3D Spectrum
  • ¿Por qué intentar hacer juegos en 3D en ordenadores de 8 bits en lugar de juegos clásicos en 2D? ¿Confiabas en las capacidades de las computadoras de 8 bits para ejecutarlos?

No consideramos nunca juegos con sprites, y éramos (¡con la arrogancia de la juventud!) un poco críticos con ellos. Los juegos que nos gustaban eran arcades en 3D como Battle Zone o Star Wars, así que esa fue la dirección que tomamos. Y respecto a la confianza en las posibilidades de los ordenadores de 8 bits, habíamos escrito ya un montón de ensamblador. Estábamos preparados para trabajar duro y codificar algunas cosas una y otra vez (¡y de nuevo, con aquella arrogancia!)

  • ¿Cuales fueron los primeros pasos o decisiones que tomaste al diseñar un juego vectorial en 3D para Spectrum? ¿Cuáles fueron las primeras dificultades que afrontásteis en un juego como Tank Duel?

Eran cosas básicas tales como multiplicar y dividir de forma rápida, que las líneas se visualizaran bien mientras se dibujaban rápidamente, ese tipo de cosas. Empezamos dibujando sólo cubos y pirámides, y luego progresamos haciendo que pudieses conducir alrededor de ellos (era una fase de desarrollo que denominamos “El Boogie de los Siete Objetos”) y luego introdujimos el gameplay. Escribimos y desechamos mucho código, algunas veces sin cesar, una y otra vez, pero eso hizo que lográramos importantes avances tras el lanzamiento de Tank Duel, que fueron incorporados a 3D Strastrike.

  • ¿Todas las capacidades 3D de los ordenadores de 8 bits eran similares? ¿O prefieres alguno sobre el resto?

Recuerdo ver Elite funcionar de forma más fluida y más rápida en el BBC Micro que en el ZX Spectrum. Creo que las habilidades de cada máquina eran muy similares entre sí, pero había gran diferencia entre las posibilidades y la experiencia con ellas escribiendo código. Incluso los trucos más sencillos pueden hacerte ganar muchísima velocidad, y sólo los aprendes tomando el camino equivocado unas cuantas veces.

  • ¿Eran las matemáticas la clave, o sólo en las primeras fases de desarrollo?

Conseguir multiplicar rápidamente era una de las claves, pero también trabajamos en la elaboración de un montón de trucos para evitar tener que hacer demasiadas. Por ejemplo, Todas nuestras formas 3D estaban construidas dentro de un cubo utilizando unos pocos bytes. El cubo sólo requería tres puntos para rotarse, y creamos entonces todos los demás puntos por interpolación (si añades dos puntos y los unes, puedes obtener otro situado entre ellos). No puedes evitar las divisiones, pero usamos una “división desenrollada” que no se restauraba, con un código que era como una escalera, ¡algo que te podría describir mejor con una imagen! Nuevamente, aprendimos un montón de cosas con Tank Duel, cosas tales como lo que podríamos llamar “matemáticas de 16 bits” simplificadas en 8 bits, aceleración de operaciones en pantalla o averiguar cómo copiar la pantalla sin efecto de tearing. Y mucho más.

  • ¿Qué características del ZX Spectrum fueron más útiles para mover todo en pantalla a la velocidad adecuada? 

Usamos un truco llamado la “caza del rayo”, para que se copiaran las cosas en pantalla visualizándose de forma mucho más correcta. Después de la interrupción de cada frame, esperábamos un instante a que empezara a actualizarse la pantalla, y luego copiábamos el buffer de la pantalla que se estaba copiando a la memoria real de vídeo, justo antes de la actualización. También utilizamos trucos horrendos como mover el puntero de la pila a una segunda pila que estaba a 32 bytes del tope de memoria. Como esto significaba que SP contenía “-32”, podíamos hacer “SBC HL, SP” para añadir 32 al registro de HL para ir una línea hacia abajo. Con cada preciado ciclo y cada valioso registro, este tipo de cosas podían suponer una gran diferencia.

  • Starstrike combinó gráficos en 3D con sprites que tenían efecto “zoom”, a modo de disparos que se acercaban. ¿Cómo funcionaba aquello? ¿No os ralentizaba el resultado al ser elementos 2D?

Generamos un montón de aquellos elementos con diferentes tamaños, y simplemente los dibujábamos en el momento preciso. No era un proceso rápido, pero tampoco lo hubiese sido dibujándolos solo con matemáticas y líneas.

Todos los trucos anteriores, realmente. Lo más importante era considerar los objetos 3D como un lenguaje más que una estructura de datos, y eso nos proporcionaba mucha flexibilidad, que usamos después en juegos como Carrier Command. Eso nos permitía representar todos los polígonos en el orden correcto sin tener que especificar la distancia entre ellos, y esto funcionaba incluso cuando los objetos estaban unos dentro de otros.

  • Cuando colaboraste con Rainbird, ¿te impresionó el nivel técnico del equipo de Jez San o pensabas que tu conocimiento de cómo funcionaban las 3D estaba al mismo nivel?

Lo habíamos estado haciendo durante más tiempo, y eso explica que Starglider para 8 bits fuera comparable con su versión de 16 bits. Jez pasó muchos años intentando sacarnos cómo conseguimos semejante velocidad, pero mantuvimos la boca cerrada…

  • ¿Fue Starglider un paso adelante en términos de programación?

Realmente, no. Ya habíamos hecho incluso polígonos para Starstrike 2, así que resultó todo bastante rutinario. Trabajar en el Spectrum 128 nos ofreció algún reto nuevo para llevar a cabo en música y uso de más memoria, pero todo el proyecto de Starglider para 8 bits fue tan bien ¡que incluso entregamos antes de tiempo! 

  • Trabajar con polígonos rellenos en Starstrike 2 fue arriesgado. ¿Cómo conseguísteis mantener la velocidad dentro de los límites aceptables sin que afectara a la jugabilidad?

Usando todo lo que conocíamos más algunos trucos nuevos. El truco de la pila,  «stack pointer = -32» me asaltó mientras trabajaba en la rutina de relleno de polígonos. Se precisaba un dibujado rápido del texturizado de polígonos, y utilizaba cada registro del Z80, incluso los no documentados relativos a las mitades de IX y IY. Conocía el Z80 tan bien, incluyendo todas sus instrucciones y ciclos, que podía meterme en la bañera y trabajar en nuevas aproximaciones al alojamiento de registros en mi cabeza, escribir mentalmente los bits críticos de código, y añadir los tiempos de los ciclos para comprobar si mejoraba el proceso o no. Si la cosa empeoraba, añadía un poco de agua caliente y empezaba de nuevo.

  • ¿Cómo usabas la pila, las interrupciones y el buffer de pantalla aplicado todo ello a un engine 3D? ¿Qué diferencias existían respecto a un juego 2D?

El buffer fuera de pantalla funcionaba “en orden” así que aquel truco de la pila nos proporcionaba mucha velocidad. Las interrupciones se usaban para la “caza del rayo” y para dibujar el cursor de apuntado, que tenía que moverse más deprisa que la tasa de refresco de las 3D.

  • ¿Llegaste a hablar con compañías rivales como Incentive para compartir conocimientos o técnicas?

Para ser sinceros, trabajábamos fundamentalmente aislados. Todo el mundo era bastante opaco y no pudimos ver muchos trucos circulando por ahí.

  • ¿Cómo pudisteis encajar un juego tan grande y complejo como Carrier Command en un Spectrum 128K?

¡Ni idea! Graeme Baird y yo trabajamos en las versiones para el 68000 y los x86 mientras Andy Onions hizo un impactante trabajo en solitario con el Z80. Trabajó a rebufo de todo lo que habíamos hecho hasta la fecha, y usó algunas técnicas de las versiones de 16-bits, pero tuvo que llevarlas a otro nivel. Asombroso. 

  • ¿Con qué juegos en 3D estabas impresionado entonces? ¿I´of the Mask? ¿3D Combat Zone? ¿Elite? ¿Analizaste el código para saber cómo funcionaban? 

Sobre todo nos fijábamos en lo que se hacía en los arcades e intentábamos alcanzar esa calidad. No recuerdo el código de nadie más, y para ser francos nuestras aproximaciones a los gráficos en 3D eran tan distintas a las “académicas” que no estoy muy seguro que eso hubiese sido relevante. 

  • ¿Alcanzaste los límites del ZX Spectrum en gestión de gráficos en 3D?

Ciertamente sentía entonces como que simplemente allí estábamos y que no estábamos haciendo ningún avance especial y trascendente hacia el futuro, pero quién sabe.

Etiquetas
Hotel matarraña
Tu hotel para eventos en el matarraña
Posicionamiento Zaragoza
Posicionamiento SEO Zaragoza
Flores Zaragoza
Compra flores baratas Zaragoza

jmv

Jesús Martínez del Vas (1973) es Arquitecto, Dibujante y una de las personas que más sabe del Spectrum. Nos ilustra con su arte y sus conocimientos tanto en la web, con interesantísimos artículos, como en el Podcast con sus charlas que nunca querrías que terminaran. También es un ávido coleccionista que cuenta con uno de los más completos catálogos de cintas de Spectrum en nuestro país. Responde al nick JMV, vive en Madrid y lo encontraréis por aquí casi seguro junto a un lápiz y un cassette.

Publicaciones relacionadas

Un comentario

Deja un comentario

Botón volver arriba
Cerrar