|
|||||
Color Wars
|
|||||
|
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
- 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
- Lo segundo fue utilizar cpcrslib, en este punto podemos empezar ya que conocemos como funciona por debajo la memoria de video
- En tercer lugar, realizamos pruebas con string gráficos y con Sprites
- Utilizamos la herramienta rgas para la generación de Sprites
- Problema del ghosting del personaje (solucionado con márgenes)
- Creación y colocación de los tiles del mapa
- Prototipado del movimiento del personaje
- Gestión de colisiones con el mapa
- Diseño de la inteligencia artificial
- Creación de un sistema de debug
- Reestructuración de los punteros del personaje (para el multijugador)
- Programación grafica del sistema de pintura
- Programación lógica del sistema de pintura
- Rediseño e implementación de la inteligencia artificial
- 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