Herculeum (or pyherc, as the project was initially called) is a simple dungeon adventure game, where the player explores randomly generated dungeons. Currently there are only a few basic features ready. The author, Tuukka Turto, is gradually adding new things there. The idea for the game came from playing all sorts of computer games, like Ultima and Excelsior when Tuukka was younger. He found the idea of writing a turn based game easier to grasp than one that would be actively running all the time. Originally Tuukka wanted to create something as grand as Ultima, but after a couple of tries he decided to try something a lot simpler first.
What were your qualifications? Did you mainly use your existing experience, or learn new skills?
I had been programming for hobby and professionally when I started with the project. Originally I started with Java, gave up after couple of years and had a break. After the break I got back into project and started it from beginning with Python. Most of my Python experience comes from this project and the code I wrote in the beginning was quite a bit uglier than what I write now. Hopefully this means that the code I’ll write tomorrow will be more beautiful than what I wrote today.
What was your time budget? How did you allocate it and plan the tasks? What schedule worked best for you?
I don’t have a time budget, I just work on the project when I have a suitable slot of time and I feel like doing something about the game. The original plan was really short:
- Rogue-like, turn-based, set in a fantasy world.
- Graphical tiles, something else than keyboard controls would be nice.
- Written with Python, plenty of automated testing.
So just three lines. I usually just think what would be a nice addition to the game and write the smallest subset of that which is still usable and fun.
How did you manage the project? Any specific tools or productivity tips to share?
There isn’t that much to manage when working alone. I prefer working in small steps, concentrating on things that will be fun and usable immediately. I keep the game in a working state all the time so I can see that there is constant progress. This helps me to keep motivated about the game. Small steps help me to keep things interesting too, since I don’t have to work on the same part of the code months after months. I try to keep the code as clean as possible too.
I’m a big fan of test driven development and use several tools, including behave, nose, mockito-python, hamcrest, QTest, doctests and satin-python. I probably even forgot to add some in this list. Automated testing cannot completely replace manual testing, but at least I can let the computer do all the repetitive checking and concentrate on more complex tasks by myself.
Is the project in active use? Actively supported and extended?
I’m working on the project actively, but there is no active user base. However, I have shown the testing side of the project a couple of times to my friends and colleagues and they find it quite impressive. The project has relatively high level of automation starting from running tests when committing the code to updating the API documentation when the changes are pushed to GitHub. Some of the content in player manual is automatically generated from the game, so if I change attributes of items in game, the changes are automatically reflected in the manual.
What were the biggest benefits for you from this project, what brings you the most joy?
I learned a lot about Python programming and automated testing in this project. It is fun to see how the computer can help you in many repetitive tasks like in testing and documentation. My master’s thesis is related to software testing and I was able to try out several things in my project before writing about them. That made writing the thesis much easier and much more interesting.
What book would you recommend to someone starting a hobby project?
That depends on what kind of project one would like to do. Recently I have been doing a lot of test related things (including writing my master’s thesis about them), so “Growing Object-Oriented Software Guided by Tests” by Freeman and Pryce (aff.) would be the first that comes to mind.
Can you recommend someone you know for one of our future interviews?
Craig Stickel at http://blog.kathekonta.com/ might have lots of interesting things to tell.
Feel free to ask Tuukka about the details of his project in the comments below.
This post was written by Valentyn Danylchuk, the editor of Five-Hour Projects. You can also publish guest posts here, suggest projects to write about, or get interviewed – contact email@example.com