Pacman 2000

During the second year of my computer science course at university, students were split into groups and assigned a random coding project to complete and write about. Somehow I was fortunate enough to end up in a group tasked with writing a game.

We were given the task of making a version of Pacman, albeit with the subtle difference of having randomly generated (but horizontally symmetrical) mazes. Aside from this, we were given free reign with the features we chose to implement and the language we used to implement them.

We decided to make the game in Java since that was the language we'd been taught during the first year of the course. By the end of the project, I had vowed never to put myself through the "fun" of making another game in Java, though I'm not sure whether my suffering was more due to Java being a bit unwieldy for games (it's come on quite a bit since then, I think) or me simply being unfamiliar with making a game using an object oriented language. I've since gone back on that vow, so clearly it wasn't that bad...

Early maze, metallic style

We tried to keep the game as faithful to the original Pacman as possible, and did quite a lot of research into the rules of the game, particularly the ghost AI patterns. It isn't a perfect likeness, but it is fairly faithful - there is one ghost that follows the player slowly, another that moves around quickly but randomly, another that tries to remain in the same quadrant of the map as the player, and one that is... well, entirely stupid.

Since there were several of us trying to work on this game, we split it up into smaller tasks that we could attempt individually; one person worked on the AI, another on the random maze generator, and so forth. Since I was the only person who'd really had any experience with making games in the past, I ended up writing most of the underlying game logic, along with all the little things that we forgot about (like a highscore table and its requisite name entry screen). I also learned the valuable lesson that it's never quite as easy to plug all these separate bits of code together as you think it will be.

The game still has a couple of small bugs that never got fixed. I've seen ghosts occasionally lose their alignment with the maze grid and become able to float through walls... but hey, they're ghosts so it's okay! There also used to be an issue with the random maze generator where it would generate impossible levels, but I think this has been ironed out completely.

The game's difficulty increases by gradually adding more ghosts (early levels feature two or three instead of the more classic four), generating larger mazes (though every fifth level is deliberately compact), speeding up the ghosts and reducing the duration of the power pills. Sometimes the randomly generated maze layouts can be a bit harsh, in particular when there are long corridors where it is very easy to get sandwiched between two ghosts, but that's just the way it goes. There are never any dead-ends, since the original Pacman maze didn't have any of those either.

If you'd like to try the game out, click one of the links below. You'll need to have a Java Runtime Environment of some kind installed in order for it to work. The applet version of the game will fire up within your browser, whereas the other will need to be run manually. One (and pretty much the only) benefit of downloading and running the game as a local application is that it will be able to save your highscores. If you're lucky, you can double click on the downloaded jar file to run it. If you're unlucky, you'll need to use the command line; something like: java -jar Pacman2000.jar

Run as an applet

Download