Categorías
Desarrollo de Videojuegos

Arreglando la IA de Pirate Alliance!

En Pirate Alliance!, la inteligencia artificial de los enemigos funciona partiendo de una base primitiva: Ir a por un barco del jugador, atacarlo y volver a la posición de inicio.

A partir de ahí, podía tener comportamientos avanzados, como hechiceros usando papiros en vez de atacar o que un barco se dirija a una charca cercana, pero la base es siempre la misma.

Si bien esto la mayor parte del tiempo funcionaba, un problema que tenia es que a la mínima que el escenario se volvia complejo, podía las rutas fallar y hacer que el barco malgaste energias dando vueltas.

Imágenes no aptas para daltónicos

La idea es usar un sistema de celdas por el cual se pueda crear una ruta hacia el objetivo, por lo que el enemigo solo tiene que seguir dicha ruta.

Implementar esto no ha sido facil, pues ha habido muchas fallas que arreglar. Una de las graves era que hacer si el paso del enemigo al objetivo era imposible. Para ello, tuve que hacer que se revise si podría llegar o no, y de ser así impedir que inicie su movimiento.

Tambien me he visto obligado a modificar las posiciones de los elementos del escenario, ya que la idea es dividirlo en casillas de 32×32 pixeles, y si algo ocupa una casilla, pasa a contar esa casilla como bloqueada para el paso de los enemigos.

Por ejemplo, si tienes un enemigo o pared que es de 32×32 pixeles, según como lo pongas puede ocuparte una sola casilla o cuatro.

De momento, voy a seguir testeando y no subiré actualizaciones hasta que haya completado todo el juego. Esto me permitirá pillar todos los bugs posibles. Y recordemos que ya lo único que me queda es montar las cinemáticas para dar el juego por completado.

Y esto está sacando a la luz algunos fallos adicionales. Por ejemplo, puede que al intentar un hechicero enemigo usar un papiro de curación intente usarlo sobre sí mismo, lo cual es imposible y solo causará que lance el proyectil a la nada.

Un caso bastante gracioso es uno el cual consistio en que cuando Itzcóatl reciba un cañonazo debería enfadarse y reiniciar su patrón de movimiento, lo cual haría que en su siguiente turno ataque al jugador.

Sin embargo, es posible que sus aliados le ataquen por accidente, lo que tambien causa que el jefe se lance al ataque. El resultado fue una matanza en la que perdí 5 barcos simultaneamente ya que aún no me había dado tiempo a alejarlos.

Claramente, si esto le pasase al jugador, ya no le hará gracia, por lo que me he asegurado de parchear este grave error para que solo pueda ser provocado Itzcóatl por los cañonazos del jugador.

Por anarlaxy

Soy programador de software con un gran interes en los videojuegos.
También tengo experiencia en el desarrollo y mantenimiento de páginas web.

Deja un comentario