Mas To The Past / Ántrax CPC

test_alt test_alt test_alt test_alt
Mas To The Past

  • Author: Ántrax CPC (Guillermo Fernández Vizcaíno, Rosendo Navarro Puig, José Raimundo Vidal Ferrández)
  • Presented at: #CPCRetroDev 2015
  • Ranked: 17 / 36 (Devilish Games Special Mention to the Most Original Game, 100€)
  • Platform: Amstrad CPC 464
  • Language: C / CPCtelera
  • Size: 27 KBs
  • Development time: 5 weeks
  • Controls: Cursors: move; Control: change weapon; Space: shoot; C: take objects; ESC: exit
Download Game Download Source Code

Info sheet (in spanish, as provided by authors)

Historia

Año 2112​. Ya han pasado varios años desde la ​3º Guerra Mundial que ha dejado totalmente desolado nuestro planeta. Los viajes en el tiempo ya son una realidad, aunque solo están al alcance de unos pocos. Se celebra una cumbre con los principales representantes de cada uno de los países del mundo y en ella se pacta una misión: ​volver al pasado​, antes de la guerra, para intentar evitar el desastre. ¿Y quién es el encargado de volver atrás en el tiempo para salvar el mundo? La persona más poderosa y, por lo tanto, con más influencias para poder intentar evitar el conflicto bélico: el presidente de la potencia mundial del momento, el ​ presidente​ de la ​ República Catalana, el ​Sr. MasFly (nuestra intención no es ofender con la temática del juego ya que el principal y único objetivo que persigue es el mero entretenimiento y no buscamos crear ningún tipo de controversia).

MasFly

 

El viaje en el tiempo se le complica a nuestro protagonista, quedándose sin combustible (plutonio) y quedando ​ atrapado en dos dimensiones simultáneamente​. Su objetivo es por lo tanto recoger una a una las unidades de plutonio que se encuentran esparcidas entre las dos dimensiones y recargar el condensador de fluzo/flujo para poder continuar con su viaje al pasado.

Epílogo

¡El ​ Sr. MasFly ya tiene todo el combustible que necesitaba para salir de aquí! Continúa su viaje sin problemas y evita la guerra usando el diálogo y concienciando a los demás países de las consecuencias desastrosas que podría tener un enfrentamiento armado.

Hora de volver a casa señor presi… Esta vez ​MasFly ​ se asegura bien de tener el combustible suficiente para regresar al futuro, pero aún teniendo combustible, en esto de los viajes en el tiempo nunca se sabe… ¡Buen viaje héroe!

Personajes del juego

Protagonista (MasFly)

MasFly

Se encuentra en las dos dimensiones al mismo tiempo. Es controlado con las flechas y dispone de un arma que es disparada con la tecla ​ Espacio​. ​El arma solo puede estar en una dimensión simultáneamente, puede ser cambiada entre dimensiones con ​ Ctrl​. Nuestro protagonista (o protagonistas, según se mire) pueden coger objetos con la tecla ​ C (debe de mantener esa tecla durante un segundo aproximadamente mientras se encuentra pegado al objeto). Dispone de 10 puntos de vida que le podrán ser quitados o añadidos dependiendo de si los enemigos le dañan o recoge un botiquín.

Objetos

Plutonio

Plutonio​: Es el combustible que necesita el flux para poder seguir avanzando en nuestro viaje en el tiempo. Si uno de estos es destruido perderemos inmediatamente debido a una explosión nuclear.

Flux

Condensador o flux​: ​Es un objeto que no puede ser destruido ya que sin él no podremos salir de ese espacio temporal. En él deberemos ir depositando el plutonio para cargarlo y cuando llegue a 1.21 ​ jigovatios ​ pasaremos de nivel (Cada nivel será más difícil cargarlo y se necesitará más plutonio).

Botiquín

Botiquín​: ​Cuando nuestra vida se vea mermada por los enemigos solo tendremos una forma de curarnos y eso se hace cogiendo un botiquín. También puede ser destruido por nuestros enemigos pero sin consecuencias catastróficas.

Enemigos

Arktro

Arktro​: ​Persigue al jugador y le ataca cuerpo a cuerpo. Si pierde al jugador de vista va hacia la última posición en la cual vió al jugador.

Spaniard​: ​​(el ladrón, sin terminar): Éste no irá a atacar a ​ MasFly​ sino que huirá de él y le irá robando objetos. Dependiendo de lo que él crea que perjudica más a MasFly irá a robarselo. Por ejemplo si ​ MasFly ​ tiene poca vida irá a por un botiquín, sino irá a por plutonio.

Desarrollo

Generación de cavernas

Para generar cavernas aleatorias usamos un autómata celular. El proceso consiste inicialmente en llenar de forma aleatoria una matriz de 0s (huecos) y 1s (paredes). Para generar números aleatorios utilizamos la función de CPCtelera cpct_getRandomUniform_u8_f(u8). Para darle forma de caverna a esa disposición desordenada de paredes, volvemos a procesar la matriz quitando las paredes de todas aquellas celdas que tengan menos de 5 paredes vecinas.

El algoritmo implementado en el Amstrad CPC tarda aproximadamente un segundo en ejecutarse, lo cual no supone ningún problema, porque se genera mientras se le indica al usuario qué nivel está a punto de jugar.

Colisiones

La idea del juego era que pudieras ir abriendo pasadizos en las paredes tan personalizados y diferentes que no haya dos iguales. Es por ello que decidimos implementar las colisiones basadas en los colores de fondo. Es decir, un personaje de nuestro juego, ya sea el protagonista o un enemigo, solo podrá moverse por las zonas que tengan un fondo de color negro. De esta forma, cuando llegue a una zona con un sprite que no es de este color no pueda avanzar. Para hacer esto no se comprueban todos los pixels a los que va a dirigirse, únicamente se comprueban unos cuantos píxeles de la frontera del sprite.

IA

Pathfinding: Visto el tiempo que consumía la generación de mapas aleatorios, desde el principio se descartaron algoritmos que hacen uso de colas de prioridad en las que guardan los nodos expandidos más prometedores. El algoritmo usado comprueba si puede llegar al jugador desde las casillas vecinas moviéndose primero en una dimensión y luego en otra (distancia Manhattan). En caso de encontrar varios caminos elegiría el más corto.

Árbol de decisiones: En un inicio planeamos implementar un sistema fuzzy que se encargara de la toma de decisiones, sin embargo, el tiempo consumido (tanto de desarrollo como de cómputo) iba a ser mucho mayor que el de implementar un árbol de decisión, y el resultado sería prácticamente el mismo. El árbol de de decisiones es una IA que toma elecciones dependiendo de una situación dada. Se puede esquematizar fácilmente para poder visualizarlo con más facilidad. A continuación aparece el árbol de decisiones que tiene el enemigo Spaniard:

Diagrama MEF

 

Máquinas de estados: Las máquinas de estado son utilizadas por los enemigos para facilitar la organización del código y poder dividir en distintas partes la IA.

Licencia

GNU General Public License, Versión 3. El código fuente se encuentra adjunto a esta memoria.

Anécdotas

Si coges el logo del juego (o el de la película Back to the future) y le subes el contraste al máximo tienes como resultado la bandera de España y no la catalana.

Logo 1 Logo 2

Durante la implementación del comportamiento de los enemigos hemos inventado numerosos algoritmos de EA (Estupidez Artificial). Quedarse quieto era la mayoría de las veces más inteligente que hacer caso a esos algoritmos.

Los mensajes de los commits del repositorio git se encuentran en 3 idiomas: español, inglés e inglés inventao.

Durante el desarrollo del juego inventamos y pusimos en práctica varias veces una técnica de programación llamada Epic Programming. Consiste en programar escuchando la banda sonora original de la película de El Señor de los Anillos.

¿Qué hemos aprendido?

Hemos aprendido a crear juegos relativamente sencillos para un Amstrad CPC utilizando la librería CPCtelera. Durante el desarrollo hemos tenido que tener muy en cuenta el uso de memoria, cosa a la que hoy en día no estamos tan acostumbrados.

Hemos experimentado lo engorroso que puede llegar a ser programar esas máquinas en comparación con las modernas (y más aún si se hiciera sin ayuda de librerías).

Bibliografía y agradecimientos

Leave A Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.