RPG Programming Project

Posted on 2009-01-28 20:26 in Blog

Early last fall, I set myself the goal of running a programming competition for the NDSU ACM club sometime this school year. The reason for the goal was twofold. First, I was always disappointed the ACM wasn’t more active while I was a member. But since I was extremely busy with class work I was unable to create a presentation of my own to increase the activity level. Now that I’ve graduated, my evening and weeks are less stressful and I can dedicate time to an ACM project. Secondly, I wanted a fun project to work on that would actually be of use. Towards that end, I decided to create a game framework, where the students would be creating AIs and battling them against one another.

What kind of game should I create? After rolling the idea around for a while, I settled upon a RPG style game. This would provide the most free-form mode of game play I could think of. The players could go the classic AI route and battle against one another, or they could focus on solving challenges within the game to earn points. Furthermore, the concept of path finding through an unknown maze is a classic AI challenge.

Wanting to avoid designing from the ground up, I began searching the net for RPG that were currently in their development phases. Most of what I found was too complicated for my needs, until I stumbled across BMMO. A good deal of the desired features were already implemented: rooms, doors, objects, weapons, and message parsing. There were only a few minor bugs and usability enhancements to make.

I walked down the list of known bugs from the BMMO group and immediately fixed them. I attempted to get in contact with the group members, but they were unresponsive to emails. So, I forked their project and setup my own using their existing code as the basis for mine (fully citing the originating source). Next, I set a standard message format for messaging between the game server and clients in preparation of moving the game from a text based console with human formatted messages, to an AI driven game.

I then began the painful work of creating the GUI structures. This helped me develop a more standardized message structure as I had to parse the different results and propagate them to the appropriate fields.

I’m feeling really good with the progress that I am making. Final remaining peices are to get the GUI working properly, and then completing message processing and data management to account for an AI thread running the game instead of a client. It boils down to how I’m going to expose the data structures to the AI that contain the game objects. This is mostly complete, just the details are left to finish.

Hopefully, the ACM members will apprecate the game when its ready for the competition.