Posted on September 26, 2007
Launching Pad: Redesigning a Retro Classic #1: Pacman
The last retro classic I redesigned was Asteroids when I created the game Retro Blaster. While I love early classic games, I also completely understand and appreciate how Nintendo, Sega, and other late 80’s innovators built upon classic themes to re-ignite the video game industry. Not only did they create stories for most games, but they fueled re-playability with cheat codes, hidden secret rooms, extra bonus weapons, and more. Some 2600 (and other early console) games did include some of these elements, but it was the late 80’s “new” thinkers that really pushed them to the limits and opened up what was a previously stale set-top box game arena. This was nothing new, because the 80’s computer games for the C=64, Atari ST, and Amiga had been doing this well before the new TV game systems had hit the shores in the USA. The problem was that the C=64 was a fading giant, and the ST and Amiga were soundly outsold by Turbo PC clones and Macintosh systems. While the 80’s PCs and Macs could play a pretty good arcade game (The Keen Series for the PC is a good example), not one computer system arcade game sold in enough numbers to be called a household name. In Europe it was was a different story, as cheap computers fueled a giant gaming industry that really never hit a true “crash”. Even with the absolute best games being imported from Europe for USA Amiga. ST, and C=64 owners (as well as a few home grown hits like Dungeon Master) computer arcade games never made a dent in the general consciousness of the American public. That public had been burned on computers and simple video games, so Nintendo, and some extent Sega, TG-16, and a refreshed Atari brought a fresh coat of paint, challenges, and ingenuity to USA home gaming.
Why am I rehashing ancient history in this forum? It is the foundation for why I love to re-build retro classics. I love to research what went through the early game designers mind, and then try to code a game similar, but with some added late 80’s extras. That’s why Space Eggs (my pre-cursor to Retro Blaster) was a relatively simple Asteroids variant with the added bonus of increasing the fire power of your ship (and I deleted the dreaded Hyperspace functionality). When I built upon Space Eggs to create Retro Blaster, I did it with Nintendo in mind. I asked my self how Nintendo would have taken Ed Logg’s original ideas and made something expanded. So, I added a story, levels progression, various different aliens ships and rocks to fight, boss levels, cheat codes, the ability to purchase ship upgrades, and a final battle with a difficult super boss. That is my plan for Pacman. I am going to first build a Flash AS3 engine that plays the basics of Pacman, and then extend that engine to create a much more expanded game in much the same way that Space Eggs was updated to become Retro Blaster.
Pacman to Mazeman
Ok, so my next step will be to write down all of the significant things I remember about Pacman (and Ms. Pacman as the case may be). These can be both game design related. technical related, or just features that I liked about the game. I don’t actually have to play the original game yet, I just need to organize some thoughts about the game into a list:
1. Pacman was tile based. I don’t know how many tiles, but I think there were more vertical tile rows than horizontal tile columns.
2. The “hero, Pacman, was always moving unless he was stuck in a corner. He started out in the maze moving in one direction and there was no way to stop him unless the player moved him back and forth rapidly, or he got stuck in one of those aforementioned corners.
3. Pacman move freely from tile to tile. I have seen quite a few “maze” chase games where the player and the enemy sprites jump from tile to tile. While this is an interesting and maybe easier implementation, I want to tackle my maze game with free flowing motion.
4. Pacman can not move around in a passage way, he is always in the middle. Also, he cannot rotate his body in the 4 directions allowed unless there is an open tile in the direction he is trying to move.
5. Pacman doesn’t seem to need to have his entire body exactly in the middle of an opening to turn and move into it, that would make the game much too difficult to play as the Pacman sprite is pretty close to the size of a back ground tile.
6. Pacman is chased by 4 distinct ghosts, each chases him in a unique manner (I will have to research this further).
7. The ghosts have 4 frames of animation (a least). Their eyes face the directly they are heading.
8. All ghosts turn the same color when Pacman eats an “energy pellet” and they run from him.
9. The ghosts have a “home” that I will refer to as an Enemy Generator.
10. The maze is the same in each level of Pacman, although Ms. Pacman has a number of different mazes. The mazes have tunnels that act like a side warp in Asteroids.
11. There are special bonus fruit and keys that give the player extra points when eaten.
That’s my first stab at the remembering key features of the original, now here is my first list of what I want to make in Flash:
1. Mazes are loaded via xml. Maze graphics are contained in a sprite sheet.
2. The game can have any number of mazes and levels that will repeat after all level definitions have been run through.
3. I will have a tile that is an enemy generator, and multiple of those tiles can be in a maze.
4. My Enemy (ghosts) will not float back to a generator, but will disappear. More enemy (up to max per level or unlimited) will be created from the maze generators to take the place of the destroyed ones.
5. Enemy types, including sprites for 4 way animation (unlimited cells), speed, and intelligence will be defined in the xml.
6. Each level can specify what enemy types will be used for that level.
7. I want more that just one power up, but will settle for one in this first engine.
8. I will attempt to follow all of the movement rules of the original game, and investigate how to model those in AS3.
9. I want the “intelligence” of the ghosts to be based on some sort of real AI.
Ok, with that in mind, I went ahead of spent a coupe weeks coming up with the below demo. Now, I know the ghosts are very fast, and also dumb, and no player / ghost collision detection has been implemented yet. Plus, this is my first attempt at pixel art for a Pacman game, so there isn’t any interesting shading or consistent light source for the tiles yet. I hope to create some better tiles in the future. Anyhow, here is my quick and dirty implementation: