itch.io is community of indie game creators and players

Devlogs

Pacman, IA

PacMen_1981
A browser game made in HTML5

Este post es para explicar un EPIC FAIL

Resulta que durante una noche se me ilumino la curiosidad a las 2 am por intentar "replicar" la IA de Pacman a tal punto que comencé a procesar esos pensamientos para plasmarlos en código.

Dentro de toda mi ignorancia pensé que podía hacerlo, siendo esto lo mas lejano de la realidad que se puede estar. Intente pasarme de listo intentando programar el comportamiento de los enemigos de tal manera que fueran capases de buscarte sin siquiera pestañear.

Cree el sistema de cuadriculas que tiene el pacman original

Original


Mi versión

Siendo las partes blancas los puntos bloqueados, y los grises los libres

Después de tener la cuadricula lo que tenia que hacer era ver cuales estaban o no ocupados, haciendo un sistema de mapeo automático donde todo lo que tenga colisión será no habilitado. Ya tenia los caminos delante de mi, solo era comenzar a darle toma de decisiones a nuestro fantasma.

Para decirle al fantasma el siguiente punto que debería ir, que es el cuadro que tiene a su alrededor. Usando y explotando el sistema de Raycast que tiene Unity, pudimos encontrar cuales cuadros estaba libre para ser el siguiente objetivo.

Lo siguiente era saber  cual era el camino a tomar, siendo las direcciones cardinales las únicas posibilidades. Por lo que filtre no una, ni dos, TRES VECES, para saber cuales eran los caminos disponibles para el próximo objetivo.


Después de saber cuales eran los disponibles lo que quedaba era verificar cual era el camino mas corto, en este caso era comparar los vectores resultantes de cada camino para saber cual era el mas pequeño y comparándolo también con el punto actual, para que no se quedara dando vueltas en las mismas dos casillas. Lógico no?


Pues no, ya que esto tiene un problema y era que si estabas en al otro lado de la pared, ahí te quedabas. ya que las demás aristas de los cuadros no eran menor al actual. y con eso llegue a mi conclusión que ese no era el camino para llegar a mi objetivo. Durante mi trabajo de tesis de la universidad realice un sistema softbot que resolviera un laberinto. Y ahí tenia la respuesta. Era buscar e implementar una IA con algoritmos de búsqueda. Pero sorpresa estoy en un lenguaje nuevo, un motor nuevo, y la incertidumbre es muy grande como para hacerlo de un día para otro.

Y ahí se acabo mi aventura de crear la IA de pacman, de todo lo sufrido y las horas gastadas, encontramos algunas enseñanzas que detallare aquí.


No, las IA no son fáciles de hacer.

Junto con este encabezado explico que, una IA no es solo un conjunto de instrucciones que en el compilador de tu cerebro "funciona". Ya que me mate mucho intentando darle conciencia y que pudieran tomar decisiones correctas a punta de lineas de código (if, else, for, foreach), estando muy alejado de la realidad, siendo un fracaso completo el intentar programar la IA sin estudiar.

Siento esto ultimo lo que indica mi camino a seguir, ya que me fascino intentar darle "inteligencia" a nuestros enemigos. y eso me esta motivando a realizar una serie de post, donde vamos a investigar algún algoritmo de búsqueda y aplicarlo a algún proyecto de Unity. Y si, ya se que puede haber algo que ya lo tiene hecho, pero el punto de esto no es verlo, es hacerlo!


De fallos encontramos nuestro camino

Ya que falle de manera épica con la IA del juego, se aprende que antes de decir que ya tienes la solución del problema, tienes que investigar los fundamentos de esa solución y verificar que estén correctas. Unity y los videojuegos en general se rigen bajo casi las mismas reglas que nuestra realidad. ya que tienen todo lo nuestro pero alterados a nuestra conveniencia, dando así efectos impresionantes y mecánicas increíbles. Por lo que si no entiesen tu realidad, menos vas a entender el de los videojuegos, ya que al ser exacta, formulas matemáticas que calculan a donde rebrotará esa pelota, tienes que ser muy preciso en cada paso en este camino del desarrollo de videojuegos. Por lo que vamos a realizar un repaso por matemáticas algebraicas y física clásica, realizando así unos minijuegos donde explica estas mecánicas y así aprendemos todos!


Tenemos un sistema de detección de nodos

El sistema de detección basado en nodos me gusto mucho, ya que es independiente de lo que haya en el escenario, puliéndolo podemos usarlo mas adelante para otras cosas, como detección de enemigos en tiempo real, crear nodos para aplicar algoritmos de búsqueda, y son los que se me ocurren.


Y nada, sufrí mucho al saber que mi respuesta no era la correcta. Pero este es solo el primer paso para mi largo (ojalá) camino en esta industria. Aun no me decido por ninguna rama del desarrollo, pero con estos percances puedes encontrar esos temas que te llamen fuertemente la atención.

Download PacMen_1981
Leave a comment