Cet article est un fragment de mon livre Bug Voyage: A Tour of Classic Game Glitches. Le livre contient également des informations sur la génération de nombres pseudo-aléatoires, la réalisation de calculs de bas niveau avec des nombres binaires et décimaux, ainsi que sur la façon de provoquer une défaillance dans n'importe quelle machine Galaga, sans même y déposer de pièces.Si vous avez Pac-Man Arcade Machine près de chez vous, Mme Pac-Man ou quelque chose comme ça, vous avez de la chance, aujourd'hui ils sont rares. Même les machines très courantes de «Réunion de 20 ans» dans le passé, dans lesquelles Mme sont installées ensemble Pac-Man et Galaga sont maintenant moins courants.
Mais pour comprendre ce qui sera discuté, il suffit de télécharger une vidéo de YouTube sur l'un de ces jeux et de la regarder en une minute:
L'avez-vous remarqué. Comment Pac-Man et les fantômes se déplacent-ils en douceur dans le labyrinthe? Ils glissent avec confiance et clarté.
Cette fluidité, nous le verrons, est une illusion, et ce n'est pas tout. Voici une autre vidéo YouTube:
Il est téléchargé par Jamey Pittman, l'auteur de
l' article du
dossier Pac-Man , qui a été la source d'une grande partie des informations Pac-Man pour mon livre. La vidéo a été un peu rembobinée pour vous faire gagner du temps. Jetez-y un œil. En particulier, gardez un œil sur Pac-Man et le fantôme rouge (le manuel dit que son nom est Blinky). Remarquez ce qui se passe vers la quarantième seconde!
Vous avez vu? Pac-Man a traversé un fantôme rouge sans problème! Comment est-ce arrivé? Est-il possible de s'assurer que cela se produit tout le temps?
Calme-toi, maintenant je vais tout expliquer, et oui, c'est un comportement constant. Si vous suivez exactement les instructions de Pittman au premier niveau, cela se produira toujours.
Pac-manQu'est-ce qu'un sprite?
Une partie de l'équipement graphique en deux dimensions utilisait des objets graphiques spéciaux dans des jeux appelés sprites. Vous avez probablement entendu ce terme dans les conversations modernes sur les graphismes en pixels des personnages.
Mais auparavant, le sens du terme était différent: il désignait un objet graphique se déplaçant indépendamment qui pouvait être placé n'importe où sur l'écran, ou au-dessus du reste des graphiques, appelé l'arrière-plan, ou en dessous. Le sprite reçoit les coordonnées X et Y, l'image et sa couleur. Souvent, ils ont été utilisés pour les personnages du jeu, mais également utilisés comme ajouts à l'arrière-plan et à d'autres fins.
La plupart des systèmes prennent en charge plusieurs ou (dans le cas de Galaga) de nombreux sprites. Ils avaient d'autres noms: Atari les a d'abord appelés «Player-Missile Graphics», et dans les premiers documents de Commodore, ils étaient appelés «Movable Object Blocks» (MOB). Cependant, peu à peu, tout le monde a commencé à les appeler sprites.
Machine d'arcade d'équipement Pac-Man prend en charge les graphiques de sprite. Il peut afficher sur l'écran jusqu'à huit sprites à la fois, et cela sans utiliser d'astuces avec des lignes de balayage. L'un des sprites est l'image de Pac-Man lui-même, et quatre autres sont utilisés par des fantômes. Lorsque Pac-Man mange le fantôme, ses yeux rentrant à la maison utilisent le sprite fantôme.
Tout ce qui change à l'écran n'est pas un sprite. Un autre type de graphisme utilisé par l'équipement de l'époque est le
fond de tuile. Ce n'était qu'une grille d'éléments graphiques individuels stockés en mémoire. Lorsque vous modifiez le contenu d'un morceau de mémoire, une petite partie de l'écran correspondant à cette partie de la grille change également immédiatement. Par conséquent, travailler avec ces grilles est simple.
Les points du jeu Pac-Man sont des tuiles (tuiles) de l'arrière-plan, effacées lorsque Pac-Man les mange. Le scintillement de l'Energizer, qui donne de la force à Pac-Man, se fait en colorant ces cellules en noir puis en blanc toutes les quelques images. Mais ces objets ne bougent pas, ils ne peuvent être retirés ou remplacés.
Le problème avec les graphiques de tuiles de caractères est qu'ils ne peuvent pas se déplacer en douceur. Il est situé sur la grille, de sorte qu'un objet d'arrière-plan en mouvement ne pourra pas se déplacer facilement sur l'écran, comme le font Pac-Man et les fantômes. Il ne peut se déplacer qu'entre les cellules de la grille. Il est impossible de déplacer une partie de l'espace de la grille, elle est là ou elle ne l'est pas.
Eh bien oui, c'est intéressant. Mais alors quoi?
Les bases du monde Pac-Man
Enfant, j'ai écrit de petits jeux sur Microsoft BASIC pour mon Commodore 64. Cette implémentation de BASIC a eu des problèmes. Les programmes étaient exécutés lentement et n'utilisaient presque jamais les ressources sonores et graphiques de l'ordinateur, ce qui était incroyable pour leur époque. Si vous vouliez faire quelque chose avec les graphiques et le son, vous deviez apprendre les commandes techniques d'accès direct à la mémoire cryptiques appelées POKE, ou apprendre à écrire en code machine.
Une solution consistait à utiliser des objets de caractère au lieu de graphiques système sprite, comme je l'ai décrit ci-dessus. Les objets faisaient des sauts de la taille d'une tuile, mais c'était beaucoup plus facile de travailler avec. Il était possible de commencer à créer un jeu en utilisant des graphismes de personnages, puis, lorsque le projet est devenu déjà grand et sérieux, et j'ai voulu le montrer aux gens, passer à l'utilisation de sprites matériels.
Un objet en mémoire pouvait toujours sauter dans le même incrément de huit pixels, mais le joueur ne l'a pas vu. Tout ce qu'il a vu était une image de sprite vacillante qui pourrait être plus grande que la tuile de personnage et cacher ce qui se passait réellement. En approchant judicieusement la programmation, il a été possible d'interpoler la position du sprite pour que son mouvement paraisse plus fluide. Si vous l'avez assez bien fait, le joueur n'a jamais remarqué la différence. Vous seul savez la vérité.
Vous devez avoir deviné à quoi je mène. Parce que
c'est ainsi que Pac-Man a été programmé .
En fait, Pac-Man et les fantômes avaient chacun deux positions. Il s'agit de la position des graphiques de sprites qui se déplacent en douceur sur l'écran que le joueur voit. Ces informations sont données au joueur lorsqu'il joue au jeu, mais ce n'est qu'une ombre, une illusion. Si vous voulez comprendre comment Pac-Man fonctionne réellement, vous devez regarder plus en profondeur.
Dans les coulisses du jeu, Pac-Man prend également en compte les cellules de personnage occupées par Pac-Man et les fantômes. Il n'y a aucune trace de ces coordonnées sur l'écran. Je soupçonne que dans les premiers stades de Pac-Man, lors de l'expérimentation du gameplay, les développeurs pouvaient dessiner des tuiles directement sur l'écran. Jamie Pittman a découvert que ces coordonnées sont utilisées pour l'intelligence artificielle de tous les fantômes, et elles sont également utilisées pour reconnaître toutes les collisions dans le jeu.
Pour maintenir cette illusion, le jeu doit passer à des tours. Elle suit à quelle distance Pac-Man et les fantômes se sont déplacés de leur cellule actuelle au niveau de l'abonné, et les place dans une nouvelle position lorsqu'ils sont suffisamment éloignés. Un objet légèrement plus rapide aura une vitesse qui rend les cellules changeantes un peu plus souvent.
Ces éléments - coordonnées de la grille, suivi entre les cellules et la position du sprite sur l'écran - créent l'illusion d'un mouvement fluide. Mais du point de vue du jeu, le mouvement est effectué exactement de la même manière que dans mon cas lorsque j'ai programmé les graphiques cellulaires des personnages sur Commodore 64.
Reckoning
Nous avons maintenant toutes les informations dont vous avez besoin pour comprendre comment Pac-Man peut traverser les fantômes.
Les collisions de Pac-Man sont reconnues en comparant ses coordonnées de grille avec les coordonnées de fantômes. S'ils sont identiques, alors une collision se produit et l'un mange l'autre. S'ils sont différents, il n'y a pas de collision. C'est tout, ni plus, ni moins.
Vous pouvez voir que la raison de cette décision est la vitesse de reconnaissance des collisions dans les cycles du processeur. À chaque image, il compare les nombres X et Y d'un personnage Pac-Man avec les nombres de chacun des quatre fantômes. Grâce à cela, il n'a pas à se soucier des distances et des situations à risques. Les collisions sont des correspondances exactes de coordonnées dans le système de grille.
Cette grille correspond (approximativement) au système de coordonnées de tuile représentant les positions réelles des personnages du jeu. La détection de collision utilise cette grille. Le jeu enregistre une collision uniquement lorsque les coordonnées des tuiles des deux personnages coïncident. Cela signifie qu'ils doivent occuper une cellule de grille.Le problème se produit lorsque les positions de Pac-Man et du fantôme se déplaçant l'un vers l'autre passent à la cellule suivante dans la même image. La vérification des collisions est effectuée une fois que tous les objets se sont déplacés dans l'image actuelle. Si Pac-Man passe à la cellule Blinky et que Blinky passe à la cellule Pac-Man précédente dans la même trame, une erreur se produit lorsqu'une collision est détectée. Ils ont changé de place!
Puisque c'est le seul niveau de réalité qui signifie vraiment quelque chose dans le jeu, ce que le joueur
voit n'est pas important. Pac-Man et le fantôme passent juste à travers, "divergent comme des navires dans la mer."
L'intelligence artificielle (IA) dans le jeu a une nature déterministe, vous pouvez donc identifier un modèle de répétition du comportement. Malgré le fait que le temps de manifestation d'une erreur de passage doit être précis pour l'image, le
joueur n'a pas à être précis pour l'image s'il suit les règles d'exécution des modèles de mouvement Pac-Man. C'est ainsi que la vidéo de Jamie Pittman a été enregistrée.
J'ai donné une description si détaillée pour souligner un fait important. Il est très facile de percevoir les objets du jeu comme réels. Pac-Man est
un tel
objet à l'écran, les fantômes sont aussi des objets comme un vaisseau spatial, Mario, Sonic, Solid Snake, un soldat de Call of Duty. Tous sont des objets. Mais c'est une illusion.
En fait, ils vous donnent tous un aperçu d'un système interne plus profond. Dans ce système, l'ordinateur doit faire un travail sérieux juste pour déterminer que deux objets
se touchent . Ce que vous voyez à l'écran est une illustration du monde abstrait, et une partie du jeu transmet au joueur des informations de ce monde à travers l'écran d'une manière appropriée à son sens de la réalité.
Il est très facile d'oublier à quel point cette connexion est mince. Comment savez-vous quel objet vous contrôlez à l'écran? Il est différent des autres et répond à la gestion. Mais que se passe-t-il si la même chose apparaît à l'écran? Ou votre objet se déplacera-t-il parfois de manière aléatoire, répondra aux signaux de contrôle avec un retard, se transformera parfois en invisibilité, divisé en deux, deviendra comme l'un des ennemis?
La tâche du concepteur est de rendre la connexion entre le monde intérieur du jeu et ce que vous voyez à l'écran aussi simple et immédiate que possible (bien sûr, s'il n'essaie pas d'obtenir un effet spécial). C'est ce que signifie ou devrait signifier l'
immersion .
Information additionnelle
Insérez une pièce dans la borne d'arcade «Réunion de 20 ans» et entrez avec le joystick du premier joueur: haut, haut, haut, bas, bas, bas, gauche, droite, gauche, droite, gauche. Si le fantôme sur l'écran Game Select devient rose et que vous entendez un son, alors tout est fait correctement. Maintenant, si vous choisissez le jeu Mme Pac-Man, alors vous jouerez le Pac-Man original à la place.
Sur certains matériels graphiques, vous pouvez utiliser des astuces avec des lignes de balayage pour créer une magie puissante. Par exemple, dans un système qui ne peut afficher que huit images-objets, il est possible d'en faire plus, mais au prix du temps processeur et d'une flexibilité réduite.
À cet égard, la console Atari VCS / 2600 est la plus remarquable, car la plupart des graphiques du système ont été créés à l'aide d'astuces avec des lignes de balayage. En savoir plus sur ces techniques dans le livre
Racing The Beam .
Sources:
Dossier sur Pac-Man: http://www.gamasutra.com/view/feature/3938/the_pacman_dossier.php?print=1
Chaîne YouTube de Jamie Pittman: https://www.youtube.com/user/jameypittman/videos