This project was conceived as a way to create a simple game among a group of friends for fun. To begin the project we generated possible game concepts (which ended up taking alot longer than we thought it would). From our various discussions, we determined that the player would transport to different times/places at the beginning of each level. The player’s goal would then be to discover how the social network of that environment fit together from clues revealed by the non-player characters. In each level there would be a special non-player character (the Base Radix) which the player was supposed to find through deduction and interaction with other non-player characters. Once the player had found the Base Radix he or she would advance to the next level. We at some point had planned on writing a story which would tie these level transitions together but never got around to it. The chief advantage to such a game structure is that it would allow us to generate random environments making the game playable for a long time without having to generate an enormous amount of content (good since we liked writing code more than writing stories).
Technical Decisions
Since we all were familiar with Python we settled on Python as the language to write the game in. We then began to search for game engines that would allow us to program in Python. After a very brief search it became quite clear that PyGame was the de-facto standard for Python games so we used that. In order to manage the project we used Trac and Subversion.
My Role
My role in the project was helping with the technology selection as well as the project management aspects with a minimal code writing role. I discovered Trac, installed it and then educated the rest of the team as to how to use it. I did the same with Subversion as well but the education was much more thorough as revision control is a pretty difficult concept to grasp if you haven’t been introduced previously.
Once the programming started I helped to write the initial code which got PyGame to function. I then became distracted with other projects and returned midway through the project for assistance with the game’s architecture. As part of the game re-architecture I not only planned it but also implemented a significant portion of the refactoring. This refactoring not only improved the object oriented nature of the game but also gave it a cleaner abstraction to make further modifications simpler. Near the end of the project I also helped optimize the game.
Conclusion
Overall the project achieved it’s goals, we had fun and we created a (semi) working game. If you would like to try it out, checkout the source below (using subversion) and run “python main.py” inside of the directory.
Requirements
- PyGame 1.7 (or greater)
- Python 2.4 (or greater)
