Pac Man Clone - Game Design 1
So the first thing you may notice is the Hermes tag on this post. I’m big on not coming up with title for a game until it’s about done. After all, how you can name something when it doesn’t exist. However, you have to call the project something. When I’m talking to my co-designer/artist/brother, I can’t keep stating “Hey, in the Pac-Man clone with Om Nom Game…”. So, as is popular with development, we gave the project a working title. The use of Greek God names as project titles came in a rather roundabout way, but it works.
With that aside, we’ve started planning out the game. While I’m not quite ready to start programming the game (there is still a bit more I want to pick up from the Android Game Development book I’ve been working through), the more the game is planned out ahead of time, the easier it will actually be to create when I’m ready.
The up side of this project is that since it’s a Pac-Man clone, we don’t have to worry about any of the actual rules in the game. I’m using the Pac-Man Dossier by Jamey Pittman (http://home.comcast.net/~jpittman2/pacman/pacmandossier.html) as my bible on all things Pac-Man. After reading through it a number of times, I can think I can make an identical clone, implementing all of the game mechanics covered in the dossier.
The game screen is represented by a 28x36 grid (with the map covering 28x31). Have the extra outside the map included with the grid is important for the ghost targeting and path finding logic. Each of these grid blocks is composed of an 8x8 grid. These smaller units will be used to track exactly where Om Nom (Pac-Man) and the Spider (Ghosts) are at a given point.
The map itself will be tracked and rendered using a 28x31 array of tiles. It will include which texture to use, and how much to rotate it by (degrees of 90). A null texture value simply means don’t render anything there. I’m going to use a separate 28x31 array of Booleans to determine if a tile is traversable. Because all walls are placed between traversable squares, this will work (you will never have a wall between two adjacent squares. If two squares are adjacent and traversable, you can move from one square to the other).
Spider (Ghost) movement shouldn’t be too hard. Each of the 4 ghost AIs (when in 2 of the game’s modes) will always move toward their given target tile. So a single spider class can hold all this information. Then I can inherit from this to create each of the 4 spider’s logic in how they place their target. This should keep the code repetition for spiders minimal.
My initial thought for controlling Om Nom is to split the playable area with an X. Touching the top quadrant (is it a quadrant if it’s split with an X and not a cross?) will turn Om Nom up, if possible. Touching right will turn him that way, etc. I think this should keep the control pretty straightforward and easy.
I’m also thinking on having both Om Nom and the Spiders inherit from a single drawable object class. This class will include the Texture and vertices to be used when drawing it. The vertices will be combined with the objects world coordinate offset to place everything on the screen.
That brings me to my last subject of the day. I had a discussion with my artists, and we came up with a list of assets that we’ll need for the game play (there will be some other things needed, but this is what we need to make the foundational game itself playable).
Om Nom (forward, left, back ) walking animation [Pac-Man]
Om Nom death animation
Spider (forward, left, back) walking animation [the ghost]
Star [the power up]
Donut [first fruit bonus points]
Cupcake [second fruit bonus points]
Tiles (curve spike, straight spike) [the walls] (We’re currently undecided on what the Spider entrance area will look like).
Candy [the pellets]
We couldn’t think of any other art assets needed in the game play section.
That wraps it up for today.