King's Valley

Compañia:

Konami

Año:

1985

Plataformas:

M.S.X y MS-DOS


Carátula M.S.X

Carátula AMIGA


Pantallas M.S.X


Pantallas AMIGA

El Juego Original

King's Valley fue un estupendo juego de plataformas, aventura y puzzle, lanzado por Konami para MSX en 1985. Luego, una empresa coreana llamada APROMAN hizo una versión para MS-DOS en un tiempo donde las tarjetas gráficas eran monocromáticas y CGA. Años más tarde, una secuela, King's Valley II, fue lanzada para MSX en dos versiones diseñadas específicamente para MSX y MSX2.

En este juego controlaremos a Vick, un afamado aventurero inglés de Manchester que llega al Valle de los Faraones buscando unas Joyas Misteriosas. Estas joyas contienen el secreto de la vida eterna en el Reino del Dios del Sol. Para ello tendremos que superar 15 pirámides recogiendo todas joyas que nos encontremos. Sin embargo, cada pirámide está defendida por sus moradores, unas peligrosas momias. Estas momias actúan de manera diferente dependiendo de su color. Para obtener las diferentes joyas tendremos que valernos de picos que están diseminados por la pirámide. Hay que tener cuidado ya que cuando llevemos un pico no podremos saltar por lo que hay que decidir muy bien donde usarlos y como usarlos. Al usarlo se destruirá, por lo que solo tenemos disponibles los picos que vemos en cada nivel. Para defendernos encontraremos también espadas, pero al portarla tampoco podremos saltar, pero si lanzarla y hacer desaparecer a las incansables momias que reaparecerán pasado un tiempo.

El Remake

Todo surgió a finales de noviembre de 2020 cuando mi amigo Antonio, al cual conocía desde la juventud cuando hacíamos juegos para Commodore Amiga allá por los años 80, contactó conmigo para proponerme hacer un Remake de King's Valley, pero el reto era programarlo para Commodore Amiga. Me chocó un poco, no por nada, sino porque plantearme volver a trabajar sobre una plataforma tan antigua y con unos recursos tan limitados me parecía un suplicio, pero a la vez un reto, así que después de darle unas cuantas vueltas decidí decirle que sí.

Durante el mes de diciembre desempolvé todo lo que tenía de mi antiguo Commodore Amiga sobre emulador FS-UAE, porque por desgracia ya me deshice hace años de mi querido Amiga, pero gracias a las técnicas de Emulación, era perfectamente posible plantearme este desarrollo.

Preparé una emulación de Amiga 500, con Workbench 3.1 sobre disco duro virtual, en la que instalé AMOS que era la herramienta que en mi juventud usé mayoritariamente para desarrollar mis primeros juegos sobre Amiga, pero después de trastearlo unos días y rescatar de mi memoria las antiguas técnicas de programación, me di cuenta que AMOS estaba un poco limitado. Su velocidad de ejecución no era del todo aceptable, aunque podría haberlo utilizado perfectamente, pero yo quería algo más.

Me puse a mirar y buscar alternativas sin llegar a plantearme un desarrollo puramente en ensamblador, porque entre otras cosas, tampoco me apetecía bajar tanto, ni aprender ahora a programar sobre Motorola 68000, y así fue como llegué a Blitz Basic. Este lenguaje fue usado en Amiga para desarrollar algunos juegos comerciales de la época, y aunque la sintaxis es BASIC, es algo más evolucionado. Permite acceso a bajo nivel a los recursos de Amiga, así como incluir segmentos de código en ensamblador, y compila eficientemente a código máquina, por lo que la velocidad de ejecución es bastante buena.

Ya tenía el entorno, ahora solo faltaba ponerme las pilas y aprender Blitz Basic y sobre todo lidiar con todos los problemas que este lenguaje acarrea, porque, aunque eficiente, hasta que no lo dominé me dio muchos quebraderos de cabeza. Cuelgues, memory leaks, efectos colaterales de funciones globales, todos estos aspectos fueron algo que hasta que no pasé bastantes horas trabajando con Blitz no terminé de comprender, pero finalmente, tras un intenso mes de diciembre, pude lograr tener maquetas conceptuales eficientes sobre las que basar el desarrollo final del juego.

El apartado gráfico correría de la mano de mi amigo Antonio. La música finalmente de nuestro amigo Narcisound. Las utilidades varias, scripts de conversión y otra mucha ayuda vendrían de la mano de mi buen amigo Jesús Chicharro y finalmente la composición final y la programación recaería sobre mí.

En cuanto al apartado gráfico, Antonio y yo dimos muchas vueltas hasta que finalmente decidimos usar un kit gráfico de 16 colores (4 planos) para los sprites y los decorados. Aunque sobre Amiga se podían usar Sprites Hardware, tras realizar muchas pruebas finalmente los descarté y preferí usar directamente bloques gráficos con operaciones BLITZ de pintado, que eran bastante rápidas y eliminaban ciertas limitaciones que tenía con los Sprites, ya que de haber usado Sprites - aunque se podían combinar con las operaciones BLITZ - al usar un modo de Scroll suave, el chip gráfico solo permitía usar 3 sprites a la vez y esto me complicaba la lógica de programación, por lo que finalmente opté por gráficos y operaciones BLITZ para todo.

En cuanto al apartado musical, yo había compuesto ya una serie de melodías partiendo de las originales de MSX1 y MSX2 para este Remake, usando Musescore. Pero la realidad es que en Amiga es mucho más óptimo componer en formato .MED, que incluye los patrones de música, los instrumentos y las secuencias de reproducción. Finalmente nuestro amigo Narcisound, compuso unas versiones geniales partiendo de las composiciones que yo hice, pero creando luego nuevas melodías con una maestría sublime, que nos permitió empaquetar en un único .MED todas las piezas musicales que serían reproducidas a lo largo del juego, y sin pasarnos en el consumo de la memoria.

Para el diseño de las pantallas, el comportamiento de los distintos elementos incluidos en estas, y la lógica de los objetos, decidimos usar Tiled, un editor bastante extendido y que exporta en un formato bastante inteligible y adaptable. De esta forma reprodujimos las 15 pantallas originales, y luego, mi amigo Jesús Chicharro, programo un estupendo script en Python que permitía convertir los archivos .XML de definición de las pantallas a un formato propietario binario que ocupaba muy poco, usado para la versión Amiga.

Durante el desarrollo, cometí un error inicial, ya que al no haber programado por muchos años en entornos tan limitados, utilicé en mi Emulador bastante memoria para no tener problemas con el entorno de compilación, y eso falseaba la cantidad total de memoria disponible para los gráficos y los sonidos. En Amiga 500 - que era nuestro objetivo - solo se disponía de 512Kb de RAM para TODO, con lo que finalmente tuve que hacer malabares para que todos los recursos entrasen en memoria y el juego fuese fluido.

Mi amigo Antonio, estaba empeñado en que juego fuese muy suave y corriese a 50Hz - tasa de refresco original en la versión PAL de los Amiga -. Esto no fue fácil tampoco, porque al principio todo iba bien, pero, a medida que la lógica del juego fue creciendo, las rutinas aumentando, y el número de momias creciendo, el ciclo de cálculo superaba los 50Hz y la suavidad se fue perdiendo. Así que tuve que recurrir a los antiguos trucos y dividir en varios ciclos de cálculo para que en cada refresco la suavidad de movimiento no se perdiera. Así, el explorador y las momias se pintaban en cada barrido, pero los cálculos de movimiento no se hacían siempre. Solo nuestro explorador se movía en cada barrido, pero las momias se iban alternando, en barridos pares la 1 y 2, en barridos impares la 3, y de esta forma al microprocesador si le daba tiempo a realizar los cálculos pertinentes y el efecto tirón desaparecía.

Tras acabar el juego, Jesús Chicharro descubrió una web polaca: thecompany.pl, especializada en empaquetar juegos de Amiga para que se puedan ejecutar directamente sobre Windows. Contactamos con ellos y se ofrecieron amablemente a prepararnos una versión de nuestro King's Valley para ser ejecutada en Windows. Por lo que les estamos muy agradecidos.

Y esta ha sido nuestra andadura durante la realización de este remake, aunque es posible que King's Valley dé alguna sorpresa más en el futuro. Esperamos que disfrutéis del juego.