About this blog
Random thoughts and offerings on Game Development
Entries in this blog
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.
So as this is my first entry, in my first blog, it's actually a bit intimidating as to what type out. Do I rework this until I come up with something meaningful, or just throw out the first thing that comes to mind? Do I go into some great depth with what my purpose is here, or do I simply let the blog speak for itself over time. In the end, I think I'll take the lazy route and just throw this out there and let it be what it will.
With that, I have begun a new endeavor. I have dabbled in game development for some time now. I've done straight C++ and then went on to poke around Ogre some. I then looked to going to more "refined" (read 'easier') route and delved into some XNA. That spark kind of fizzed out and I got busy, and didn't do much game programming for some time. Finally, a few weeks ago I got the bug again, and when trying to decide how to apply it, I decided to give the Android a shot. I had learned Java, so thought this might be a good way to try and apply it. I picked up an Android Game Development book, and have been plugging away for some time.
So, now I'm at the point where I'm looking to dig into my first couple of projects outside of the book. While I have a couple games in mind (in increasing difficulty), I'm going to start with something known. A Pac-Man clone.
I did not realize prior to researching how in depth some of the AI is for Pac-Man. Each of the 4 ghosts has very distinct and specific AIs that they utilize. It's actually a pretty interesting system, and implementing all of this logic will be a good "work out". This gives me a game to create that's a little bit beyond a simple pong or Tetris (which I've done), but I don't have to worry about coming up with the game design.
The only real change I'm planning on making from the original Pac-Man is the art assets. At the recommendation of my brother (who is my artists for everything I'll be developing), we'll be borrowing Om-Nom from one of my favorite android games, cut the rope. He'll be eating candy and stars, and getting chased by spiders.
With a short term test bed game and a couple of original game designs planned (to be revealed at a later time), my brother and my game development venture is under way.
Face Punch Games.