elPatrixF Soporte
Reputación : 327 Mensajes enviados : 1296 Edad : 32 Premios :
| Tema: Pacman Ghost Sandbox Sáb Feb 04, 2012 3:29 am | |
| Hoy trasteando entre mis cosas me acordé de esta "excusa de programa" que había posteado en mi blog hace tiempo. Me declaro culpable de copiar y pegar mis propias palabras, pero ahí les va un toque de mi vagancia . Pongo con verde los comentarios agregados.
- Yo pero del año pasado. escribió:
- Hace poco tiempo renació mi fanatismo hacia el pacman. A tal punto que he llegado a jugarlo con un gamepad en el mame con la pantalla así de costado:
[Tienes que estar registrado y conectado para ver esa imagen]
Apuesto a que no se imaginan (mentira, ustedes seguro que sí se lo imaginan ) el quilombo algorítmico que se encuentra detrás de la inteligencia artificial de los fantasmitas del pacman. Pues bueno el Pac-Man Dossier nos revela una exagerada cantidad de información acerca de este mítico juego, y que cada fantasma tiene su propia forma interesante de jugar.
A simple vista podría parecer que los fantasmas se comportan de manera aleatoria. El caso es que tienen una serie de reglas que deben seguir al pie de la letra. Todos los fantasmas siguen una "casilla Target" (U objetivo) que se coloca estratégicamente según su I.A.
El comportamiento más simple se lo lleva Blinky, el fantasma rojo, en donde su casilla Target se coloca siempre debajo de Pac-Man. De modo que siempre lo está persiguiendo. (Su apodo en inglés es Shadow, que viene siendo sombra, que tan mal no le queda =P)
[Tienes que estar registrado y conectado para ver esa imagen]
Siguiendo en complejidad viene Clyde, el fantasma naranja, que tiene un doble comportamiento. Si se encuentra a 8 bloques de distancia de Pac-Man o más, su casilla Target se colocará debajo de Pac-Man. Sino, (Si se encuentra mas cerca de 8 bloques de distancia) su casilla Target se colocará en el rincón inferior izquierdo de la pantalla; haciendo que se aleje cobardemente de la situación (O que te acorrale en su rincón. Todo vale.). Su apodo en inglés es Pokey, pero le va un poco mas el apodo japonés Guzuta que significa "el que se queda atrás", haciendo referencia a su retirada inesperada al acercarse demasiado a Pac-Man.
[Tienes que estar registrado y conectado para ver esa imagen]
Ahora la cosa se pone interesante con Pinky, el fantasma rosa. Su apodo en inglés Speedy (Veloz ó Ágil) no es tan acertado como el japonés Machibuse (Emboscador). En efecto el secreto para siempre emboscar a Pac-Man en los callejones del mapa se reduce a que su casilla Target se ubica siempre 4 casillas delante de Pac-Man. (Excepto cuando mira arriba, donde se ubica 4 casillas arriba y 4 a la izquierda. Ya explicaré eso más adelante). Con esto, Pinky siempre busca colocarse delante de Pac-Man, y con Blinky persiguiéndolo por atrás, es la causa de varios millones de "encierros" en la historia de Pac-Man.
[Tienes que estar registrado y conectado para ver esa imagen]
El último que nos queda por inspeccionar es Inky, el fantasma celeste, que se lleva el procedimiento más complicado de todos. Para averiguar donde quedará su casilla Target, Inky debe tener en cuenta no sólo la dirección y ubicación de Pac-Man (Como ocurre con Pinky), sino además la ubicación actual de Blinky. Entonces, Inky traza mentalmente un vector entre Blinky y la ubicación dos casillas delante de Pac-Man (Excepto cuando mira arriba, donde esta casilla en cuestión es 2 hacia arriba y 2 hacia la izquierda.). Luego duplica ese vector, y la ubicación de la punta va a ser el lugar donde se colocara la casilla target. Este comportamiento caótico, hace que Inky se acerque más a Pac-Man cuanto más se acerque Blinky, y que se aleje abruptamente cuando Blinky se aleja de Pac-Man. Para decirlo en criollo, es como que Inky imita brutamente los movimiento de Blinky, alejandose mucho, o acercándose mucho.
[Tienes que estar registrado y conectado para ver esa imagen]
La diferencia de cálculo que ocurre con Inky y Pinky cuando Pac-Man mira hacia arriba se debe a un error de programación en el juego, en el que intervienen números negativos y desbordamientos de búferes de memoria. El caso es que cuando debería leerse (0,-1) en vez de eso se lee (-1,-1), dando como resultado, una casilla Target corrida hacia la izquierda el mismo valor con el que se corre hacia arriba.
Ahora finalmente, mas allá de todo esto, los fantasmas tienen prohibido pegarse la vuelta (Osea, invertir su sentido). Esto quiere decir que en una encrucijada, solo pueden seguir derecho, o girar 90 grados, pero nunca una vuelta completa. El único caso que se tienen permitido dar media vuelta es cuanto Pac-Man come una píldora grande (Y se ponen azules asi tipo enfermos) o cuando entran en el modo scatter. El modo scatter es un modo en el que los fantasmas dejan de perseguir a Pac-Man como explicamos, y en vez de eso, se dedican a esconderse en "su rincón preferido" (Hay uno para cada uno) por unos segundos. Cabe aclarar que cuando salen del modo scatter y vuelven al modo normal, también invierten su sentido. Esta brusca voltereta es una señal visual de que los fantasmas se alejarán de Pac-Man por unos segundos, lo que nos da libertad de escapar y de confeccionar un nuevo plan... o de comer mas puntitos, como sea tu táctica.
Ahora les presento el programa en cuestión. Este programa llamado "Pacman Ghost Sandbox" (Caja de arena de Fantasmas del Pac-Man) cumple el simple propósito de emular el comportamiento de los fantasmas del Pac-Man original, manteniendo los comportamientos de forma idéntica a como se encontrarían en los arcades clásicos. Con este programa se pretende ofrecer al usuario la oportunidad de experimentar con el comportamiento lógico (y a veces errático) de los fantasmas, dejando ver que ninguno de sus movimientos está dejado al azar, sino que son fríamente calculados en base a algoritmos prediseñados.
[Tienes que estar registrado y conectado para ver esa imagen]
.:DESCARGAR PACMAN GHOST SANDBOX:.
Bugs conocidos: - A veces, si se hacen varios switchs entre Scatter y Chase, los fantasmas pueden salirse del camino y escaparse del plano. Esto ocurre por un error de la forma en que los fantasmas deciden la nueva dirección en las encrucijadas, y no ocurre en el hardware original (Es solo un problema con los temporizadores y unas variables temporales que asignan la nueva direccion de los activos.). Para reiniciar el tablero, presionar F2.
No olviden visitar [Tienes que estar registrado y conectado para ver este vínculo] el sitio web de Jamey Pittman
Y de yapa, un bucle infinito en pacman, al que yo llamo "PAUSA". Si pacman se coloca mirando hacia arriba en esa ubicacion (Y los fantasmas ya pasaron por todos los modos scatter del nivel) el juego entra en un bucle infinito y los fantasmas quedan atrapados hasta que pac-man cambie de ubicación! [Tienes que estar registrado y conectado para ver esa imagen]
Ya sé, Blinky podría fácilmente atraparnos si fuera hacia arriba en la encrucijada, pero se lo tiene prohibido por el juego. Es más, los fantasmas no pueden ir hacia arriba en las siguientes zonas marcadas con rojo: [Tienes que estar registrado y conectado para ver esa imagen]
[[Modo copiarypegar OFF.]]Ahora vienen los detalles técnicos. Esto es un típico ejemplo de programación exhaustiva, o sea, cubriendo cada caso posible de forma individual, simplemente por el hecho de no querer pensar en un algoritmo recursivo o que ahorre varias líneas. En fin, son un total de 255 eventos, la mayoría repetidos con mínimas diferencias Con decir que los 4 fantasmas son objetos activos diferentes, y tuve que calcular cada dirección y cada superposición con los cruces individualmente, la cuenta de eventos cierra más o menos bien... - Fíjense nomás:
Pero la verdad no me importa, funciona :geek:
Les vuelvo a poner el link por si no lo vieron entre tanta fiesta de imágenes: .:DESCARGAR PACMAN GHOST SANDBOX:.Si se me ocurre pulirlo un poco, subo también el mfa para que le echen un vistazo Saludos! PD:Obviamente no usé este tipo de IA en el Patuman 2008. (A ver, si apenas son fantasmas rebotando al azar por la pantalla! ) EDIT:Concedido, subo el MFA. [ [Tienes que estar registrado y conectado para ver este vínculo] ]
Última edición por elPatrixF el Dom Feb 05, 2012 1:02 am, editado 1 vez (Razón : Concedido, subo el MFA.) | |
|
Zonacas Super-Moderador
Reputación : 558 Mensajes enviados : 2871 Premios :
| Tema: Re: Pacman Ghost Sandbox Sáb Feb 04, 2012 5:45 am | |
| Vaya está muy bien Algo vimos en [Tienes que estar registrado y conectado para ver este vínculo]PD: Esto me recuerda que quedo pendiente hacer un Pacman Online | |
|
elPatrixF Soporte
Reputación : 327 Mensajes enviados : 1296 Edad : 32 Premios :
| Tema: Re: Pacman Ghost Sandbox Sáb Feb 04, 2012 3:20 pm | |
| El tema es que esto está puramente dedicado a la IA de los fantasmas. O sea, este programita no cubre ni siquiera la jugabilidad del pacman | |
|
elpupas7 Administrador
Reputación : 1243 Mensajes enviados : 3982 Premios :
| Tema: Re: Pacman Ghost Sandbox Sáb Feb 04, 2012 11:21 pm | |
| Tenía previsto hacer exactamente lo mismo. Si tienes previsto depositar el .mfa, trabajo que me ahorro... En todo caso, buen trabajo. | |
|
modelcf Adicto a MMF Zone
Reputación : 63 Mensajes enviados : 1049 Edad : 28 Premios :
| Tema: Re: Pacman Ghost Sandbox Dom Feb 05, 2012 12:10 am | |
| ahora lo entinedo todo , por eso inky y blinky me atrapaban cuando jugaba a lo tonto, y si me ponia a pensar se la pasaban lejos de mi PD: gracias por los memes | |
|
elPatrixF Soporte
Reputación : 327 Mensajes enviados : 1296 Edad : 32 Premios :
| Tema: Re: Pacman Ghost Sandbox Dom Feb 05, 2012 1:02 am | |
| - elpupas7 escribió:
- Si tienes previsto depositar el .mfa, trabajo que me ahorro...
En todo caso, buen trabajo. ¡Concedido! [ [Tienes que estar registrado y conectado para ver este vínculo] ] El único detalle con que debo prevenirte es que no puse ni un solo comentario así que vas a tener que investigarlo por tu cuenta Al menos me tomé la molestia de identar todo con grupos que al menos yo puedo entender :geek: Como para darte una explicacion medio apresurada y por arriba, el mapa no tiene colisiones ni obstáculos; sólo está formado por las bifurcaciones en donde los fantasmas pueden tomar un giro o no. El programa está hecho basado totalmente en la explicación de jamey que me tomé la molestia de traducir en su tiempo ( ), adaptado a Multimedia Fusion 2. Acá no es como el patuman 2008 que los fantasmas eran bolas que rebotaban y cada tanto caminaban derecho hacia el jugador, acá todos los activos son estáticos y los movimientos están controlados independientemente con variables locales y contadores. | |
|
elpupas7 Administrador
Reputación : 1243 Mensajes enviados : 3982 Premios :
| Tema: Re: Pacman Ghost Sandbox Dom Feb 05, 2012 2:04 pm | |
| Graciassss Lo veré con calma... cuando... mmm... ... ciertas constelaciones estén debidamente conjuntadas... | |
|
elPatrixF Soporte
Reputación : 327 Mensajes enviados : 1296 Edad : 32 Premios :
| Tema: Re: Pacman Ghost Sandbox Dom Feb 05, 2012 2:13 pm | |
| Capaz que si algún día de estos se me salta la chabeta, (o se me queman los cuadernos de analisis 2 ._. ) me pongo a reescribir todo el código y armo una versión más limpia. Y hasta capaz que me armo un juego de pacman, que tengo planeado hace tiempo | |
|
Contenido patrocinado
| Tema: Re: Pacman Ghost Sandbox | |
| |
|