Caminando a través de los fantasmas en Pac-Man

Este artículo es un fragmento de mi libro Bug Voyage: A Tour of Classic Game Glitches. El libro también contiene información sobre cómo generar números pseudoaleatorios, realizar cálculos de bajo nivel con números binarios y decimales, así como sobre cómo causar una falla en cualquier máquina Galaga, sin siquiera tirar monedas allí.

Si tiene la máquina de juegos Pac-Man cerca de usted, Sra. Pac-Man o algo así, estás de suerte, hoy son escasos. Incluso las máquinas más comunes de "20 años de reunión" en el pasado, en las que la Sra. Se instalan juntas Pac-Man y Galaga ahora son menos comunes.

Pero para comprender lo que se discutirá, es suficiente descargar un video de YouTube sobre uno de estos juegos y verlo en solo un minuto:


¿Te has dado cuenta? ¿Cómo se mueven Pac-Man y los fantasmas sin problemas por el laberinto? Se deslizan con tanta confianza y claridad.

Esta fluidez, como veremos, es una ilusión, y eso no es todo. Aquí hay otro video de YouTube:


Es subido por Jamey Pittman, autor del artículo del Dossier de Pac-Man , que ha sido la fuente de gran parte de la información de Pac-Man para mi libro. El video se ha rebobinado un poco para ahorrarle tiempo. Míralo. En particular, vigile a Pac-Man y al fantasma rojo (el manual dice que se llama Blinky). ¡Note lo que sucede aproximadamente en el cuadragésimo segundo!

Has visto ¡Pac-Man atravesó un fantasma rojo sin problema! ¿Cómo sucedió esto? ¿Es posible asegurar que esto suceda todo el tiempo?

Cálmate, ahora explicaré todo, y sí, este es un comportamiento constante. Si sigue exactamente las instrucciones de Pittman en el primer nivel, esto siempre sucederá.


Pac-man

¿Qué es un sprite?


Una parte del equipo gráfico bidimensional utilizaba objetos gráficos especiales en juegos llamados sprites. Probablemente escuchaste este término en las conversaciones modernas sobre los gráficos de píxeles de los personajes.

Pero antes, el significado del término era diferente: denotaba un objeto gráfico que se movía independientemente y que podía colocarse en cualquier lugar de la pantalla, o encima del resto de los gráficos, llamado fondo, o debajo de él. El sprite recibe las coordenadas X e Y, la imagen y su color. A menudo se usaron para personajes del juego, pero también se usaron como adiciones al fondo y para otros fines.

La mayoría de los sistemas admiten múltiples o (en el caso de Galaga) muchos sprites. Tenían otros nombres: Atari los llamó primero "Gráficos de misiles de jugador", y en la documentación inicial de Commodore se los conocía como "Bloques de objetos móviles" (MOB). Sin embargo, poco a poco, casi todos comenzaron a llamarlos sprites.

El equipo de máquinas recreativas Pac-Man admite gráficos de sprites. Puede mostrar en la pantalla hasta ocho sprites a la vez, y esto es sin usar trucos con líneas de escaneo. Uno de los sprites es la imagen del propio Pac-Man, más cuatro más son utilizados por fantasmas. Cuando Pac-Man se come al fantasma, sus ojos que regresan a casa usan el espíritu fantasma.

No todo lo que cambia en la pantalla es un sprite. Otro tipo de gráficos utilizados por el equipo de esa época es el fondo de mosaico. Era solo una cuadrícula de elementos gráficos individuales almacenados en la memoria. Cuando cambia el contenido de un fragmento de memoria, una pequeña parte de la pantalla correspondiente a esta parte de la cuadrícula también cambia de inmediato. Por lo tanto, trabajar con estas cuadrículas es simple.

Los puntos en el juego de Pac-Man son fichas (fichas) del fondo, borradas cuando Pac-Man las come. El parpadeo del Energizador, que le da fuerza a Pac-Man, se realiza coloreando estas células en negro y luego en blanco cada pocos cuadros. Pero estos objetos no se mueven, solo se pueden quitar o reemplazar.

El problema con los gráficos de mosaico de caracteres es que no se puede mover sin problemas. Está ubicado en la cuadrícula, por lo que un objeto de fondo en movimiento no podrá moverse suavemente por la pantalla, como hacen Pac-Man y los fantasmas. Solo puede moverse entre celdas de cuadrícula. Es imposible mover parte del espacio de la cuadrícula; está allí o no.

Pues sí, eso es interesante. ¿Pero y qué?

Conceptos básicos del mundo Pac-Man


Cuando era niño, escribí pequeños juegos en Microsoft BASIC para mi Commodore 64. Esta implementación de BASIC tenía problemas. Los programas se ejecutaron lentamente y casi nunca utilizaron el sonido y los recursos gráficos de la computadora, lo cual fue sorprendente para su tiempo. Si deseaba hacer algo con gráficos y sonido, tenía que aprender los comandos crípticos técnicos de acceso directo a la memoria llamados POKE, o aprender a escribir en código máquina.

Una solución fue usar objetos de caracteres en lugar de gráficos de sistema de sprites, como describí anteriormente. Los objetos hicieron saltos del tamaño de un azulejo, pero fue mucho más fácil trabajar con ellos. Era posible comenzar a crear un juego usando gráficos de personajes, y luego, cuando el proyecto ya era grande y serio, y quería mostrarlo a la gente, cambiar a usar sprites de hardware.

Un objeto en la memoria aún podría saltar en el mismo incremento de ocho píxeles, pero el jugador no vio esto. Todo lo que vio fue una imagen de sprite parpadeante que podría ser más grande que la ficha del personaje y ocultaba lo que realmente estaba sucediendo. Al acercarse sabiamente a la programación, fue posible interpolar la posición del sprite para que su movimiento pareciera más suave. Si lo hiciste lo suficientemente bien, entonces el jugador nunca notó la diferencia. Solo tú sabrías la verdad.

Debes haber adivinado a lo que me estoy dirigiendo. Porque así es como se programó Pac-Man .

De hecho, tanto Pac-Man como los fantasmas tenían dos posiciones cada uno. Esta es la posición de los gráficos de sprites que se mueven suavemente en la pantalla que ve el jugador. Dicha información se le da al jugador cuando juega, pero esto es solo una sombra, una ilusión. Si quieres entender cómo funciona realmente Pac-Man, entonces necesitas mirar más profundo.

Detrás del escenario del juego, Pac-Man también tiene en cuenta qué celdas de personajes están ocupadas por Pac-Man y fantasmas. No hay rastros de estas coordenadas en la pantalla. Sospecho que en las primeras etapas de Pac-Man, al experimentar con el juego, los desarrolladores podían dibujar fichas directamente en la pantalla. Jamie Pittman descubrió que estas coordenadas se utilizan para la inteligencia artificial de todos los fantasmas, y también se utilizan para reconocer todas las colisiones en el juego.

Para mantener esta ilusión, el juego tiene que ir a trucos. Ella rastrea hasta qué punto Pac-Man y los fantasmas se han movido desde su celda actual en el nivel de suscriptor, y los cambia a una nueva posición cuando están lo suficientemente lejos. Un objeto un poco más rápido tendrá una velocidad que hace que el cambio de celdas sea un poco más frecuente.

Estos elementos (coordenadas de cuadrícula, seguimiento entre celdas y la posición del sprite en la pantalla) crean la ilusión de un movimiento suave. Pero desde el punto de vista del juego, el movimiento se realiza exactamente de la misma manera que en mi caso cuando programé los gráficos de celda de los personajes en Commodore 64.

Ajuste de cuentas


Ahora tenemos toda la información que necesita para comprender cómo Pac-Man puede atravesar fantasmas.

Las colisiones de Pac-Man se reconocen comparando sus coordenadas de cuadrícula con las coordenadas de fantasmas. Si son iguales, entonces se produce una colisión y uno se come al otro. Si son diferentes, entonces no hay colisión. Eso es todo, ni más ni menos.

Puede ver que la razón de esta decisión es la velocidad del reconocimiento de colisión en los ciclos del procesador. En cada cuadro, compara los números X e Y de un personaje de Pac-Man con los números de cada uno de los cuatro fantasmas. Gracias a esto, no necesita preocuparse por las distancias y las situaciones de riesgo. Las colisiones son coincidencias exactas de coordenadas en el sistema de cuadrícula.


Esta cuadrícula (aproximadamente) corresponde al sistema de coordenadas de mosaico que representa las posiciones reales de los personajes del juego. La detección de colisión utiliza esta cuadrícula. El juego registra una colisión solo cuando las coordenadas de las fichas de ambos personajes coinciden. Esto significa que deben ocupar una celda de cuadrícula.

El problema ocurre cuando las posiciones de Pac-Man y el fantasma que se mueven entre sí cambian a la siguiente celda en el mismo marco. La comprobación de colisión se realiza después de que todos los objetos se hayan movido en el cuadro actual. Si Pac-Man va a la celda Blinky, y Blinky va a la celda Pac-Man anterior en el mismo marco, se produce un error cuando se detecta una colisión. ¡Cambiaron de lugar!

Dado que este es el único nivel de realidad que realmente significa algo en el juego, lo que ve el jugador no es importante. Pac-Man y el fantasma simplemente atraviesan "divergiendo como barcos en el mar".

La inteligencia artificial (IA) en el juego tiene una naturaleza determinista, por lo que puede identificar un patrón para la repetición del comportamiento. A pesar de que el tiempo para la manifestación de un error al pasar debe ser preciso para el cuadro, el jugador no tiene que ser preciso para el cuadro si sigue las reglas para ejecutar los patrones de movimiento de Pac-Man. Así se grabó el video de Jamie Pittman.

Di una descripción tan detallada para enfatizar un hecho importante. Es muy fácil percibir los objetos en el juego como reales. Pac-Man es un objeto en la pantalla, los fantasmas también son objetos como una nave espacial, Mario, Sonic, Solid Snake, un soldado de Call of Duty. Todos ellos son objetos. Pero esto es una ilusión.

De hecho, todos te dan una pista de un sistema interno más profundo. En este sistema, la computadora tiene que hacer un trabajo serio solo para determinar que dos objetos se tocan entre sí . Lo que ves en la pantalla es una ilustración del mundo abstracto, y parte del juego transmite al jugador información de este mundo a través de la pantalla de una manera apropiada a su sentido de la realidad.

Es muy fácil olvidar lo delgada que es esta conexión. ¿Cómo sabes qué objeto controlas en la pantalla? Es diferente de los demás y responde a la gestión. Pero, ¿y si aparece exactamente lo mismo en la pantalla? ¿O su objeto a veces se moverá al azar, responderá a las señales de control con retraso, a veces se convertirá en invisibilidad, se dividirá en dos, se convertirá en uno de los enemigos?

La tarea del diseñador es hacer que la conexión entre el mundo interno del juego y lo que ves en la pantalla sea lo más simple e inmediato posible (por supuesto, si no está tratando de lograr algún efecto especial). Esto es lo que significa inmersión , o debería significar.

Información adicional


Inserte una moneda en la máquina arcade "20 Year Reunion" e ingrese con el joystick del primer jugador: arriba, arriba, arriba, abajo, abajo, abajo, izquierda, derecha, izquierda, derecha, izquierda. Si el fantasma en la pantalla de Selección de juego se vuelve rosa y escuchas un sonido, entonces todo se hace correctamente. Ahora, si eliges el juego Sra. Pac-Man, entonces jugarás al Pac-Man original.

En algunos hardware de gráficos, puede usar trucos con líneas de escaneo para crear magia poderosa. Por ejemplo, en un sistema que puede mostrar solo ocho sprites, se puede lograr más, aunque a costa del tiempo del procesador y la flexibilidad reducida.

En este sentido, la consola Atari VCS / 2600 es más notable, porque la mayoría de los gráficos del sistema fueron creados usando trucos con líneas de escaneo. Lea más sobre estas técnicas en el libro Racing The Beam .

Fuentes:
Dossier sobre Pac-Man: http://www.gamasutra.com/view/feature/3938/the_pacman_dossier.php?print=1
Canal de YouTube de Jamie Pittman: https://www.youtube.com/user/jameypittman/videos

Source: https://habr.com/ru/post/es403115/


All Articles