Color Wars / Alpacape

Pantalla Título Pantalla Partida en juego Pantalla Partida en juego Pantalla Victoria
Color Wars

  • Grupo: Alpacape (José Alfonso Lemos Miquel, Carlos Sanchís Server)
  • Presentado: #CPCRetroDev 2014
  • Clasificación: 12 / 16
  • Plataforma: Amstrad CPC 464
  • Lenguaje: C
  • Tamaño: 26 KBs
  • Controles: Flechas Izquierda y derecha en menús: elegir modo multijugador o un jugador; Modo un jugador: Flechas izquierda y derecha para moverse, Flecha abajo para pintar, Flecha arriba para saltar
Descargar Juego Descargar Código Fuente

Resumen

Color Wars es un juego de plataformas en el que el objetivo es que tendremos que pintar el mapa con nuestro personaje arrojando la misma a nuestros pies, al terminar el tiempo establecido de cada partida se realizará un recuento y se nombrará un vencedor.

Color Wars tiene dos modos de juego, el modo arcade, en el que tenemos que luchar contra nuestro cpc, y el modo vs, que nos permitirá jugar contra nuestros amigos, ¡la diversión está garantizada!

Para facilitar el juego multijugador, al seleccionar dicho modo podremos configurar las teclas del segundo jugador a nuestra voluntad.

Controles

  • Menú principal:
    – Flecha Derecha -> Modo Multijugador
    – Flecha Izquierda -> Modo Un Jugador
  • Menú de victoria:
    – Flecha Derecha -> Volver a jugar Modo Multijugador
    – Flecha Izquierda -> Volver a jugar Modo Un Jugador
  • Modo un jugador:
    – Flecha Derecha -> Moverse a la derecha
    – Flecha Izquierda -> Moverse a la izquierda
    – Flecha Abajo -> Pintar
    – Flecha Arriba -> Saltar

Diseño IA

La realización de la Inteligencia Artificial de este juego se puede dividir en dos partes: La decisión de que camino coger y la correcta realización de dicho camino.

En la parte de la decisión de que camino coger se implementaron una serie de rutas que cubrían las necesidades que pudieran surgir en una determinada zona, es decir, si la plataforma de la izquierda necesitaba ser pintada, se establecía que la ruta a realizar era, ir al centro y subir a la plataforma de la izquierda. Con esto cumpliríamos el requisito, pero en vez de bajar por donde había venido, la ruta se completaba haciendo que subiera a la plataforma superior, y bajara por la otra plataforma, para cubrir una mayor zona. Había otras detecciones como por ejemplo, si la parte de abajo de la plataforma izquierda o derecha estaba de un color que no fuera el propio, se marcaba esa zona como destino. Cuando llegaba al destino, se calculaba el siguiente destino en base a lo que necesitara la IA en ese momento.

En la parte de la correcta ejecución del camino, primero se tenía en cuenta el destino al que tenía que llegar y donde se encontraba actualmente la IA. La IA se movía siguiendo unas rutas, cada ruta consta de la lista de nodos que debe recorrer la IA. Por ejemplo para ir desde cualquier parte de la zona inferior, a la plataforma central, se marcaba como destino al nodo 4 (centro abajo), después se subía, marcando el nodo correspondiente, por una u otra plataforma hacia el nodo 12(parte derecha de la plataforma izquierda) o hacia el nodo 13 (parte izquierda de la plataforma derecha). Después de esto, se marcaba uno de los dos nodos superiores (nodo 20 izquierda o nodo 22 derecha) y se hacía que la IA saltara del nodo de la plataforma en la que se encontraba hacia la plataforma central.

La IA se complementó con una detección, si colisionaba con el usuario, la IA saltaría, y esquivaría al usuario, para después seguir hacia su destino.

Al final esto, la decisión del camino no acabó de funcionar correctamente y se introdujeron las rutas de manera que se fueran sucediendo unas detrás de otras.

Diario de desarrollo

  1. En primer lugar aprendimos lo básico en BASIC, lo más pesado fue entender el funcionamiento de la memoria de video para conseguir pintar pixeles consecutivos
  2. Lo segundo fue utilizar cpcrslib, en este punto podemos empezar ya que conocemos como funciona por debajo la memoria de video
  3. En tercer lugar, realizamos pruebas con string gráficos y con Sprites
  4. Primer Sprite

    El primer Sprite que conseguimos dibujar en pantalla

  5. Utilizamos la herramienta rgas para la generación de Sprites
  6. Problema del ghosting del personaje (solucionado con márgenes)
  7. Personajes

    Primeros pasos de nuestros personajes

  8. Creación y colocación de los tiles del mapa
  9. Prototipado del movimiento del personaje
  10. Gestión de colisiones con el mapa
  11. Diseño de la inteligencia artificial
  12. Creación de un sistema de debug
  13. Sistema de debug

    Aquí se aprecia el sistema de debug que hicimos

  14. Reestructuración de los punteros del personaje (para el multijugador)
  15. Programación grafica del sistema de pintura
  16. Programación lógica del sistema de pintura
  17. Rediseño e implementación de la inteligencia artificial
  18. Interfaz de usuario y menús

Ficha Técnica

Lenguaje utilizado: C
Tamaño en Kbytes: 26 Kbytes el .CDT
Modo gráfico: 0
Librerías utilizadas: CPCRSlib

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.