Thursday, February 7, 2008

Planning things out in advance.

We've been working on OpenFracas for about half a year now, with various degrees of activity dictated by the other parts of our lives, and now we've got the game into a playable state. A lot of the work we've been doing for the past while now (post 0.3 release) has been to experiment with new features and things that would improve the existing experience, rather than to add huge new aspects of play to the game. The option for capitals, for example, which made its way into the game with the 0.3 release, was something quite drastic. The work being done now is more ... subtle, if you will. This means that we've been working more with the existing code base than we have with new code that we're still in the process of creating.

This has already prompted one big code cleanup at the core of the game, and we're currently experimenting with overhauling the drawing code to try and speed up map rendering a little bit. The code in some sections has been growing slowly for so long, that it has become rather untidy. By untidy, I mean that when additional features were tacked on, they were not done so with any overarching pattern or approach in mind. As an example, a lot of the code designed to figure out which countries neighboured others (the part that has been rewritten already) wasn't designed to take things like harbours into consideration - they didn't exist when the code was written. We wanted to have it working asap so we could go ahead and get other important parts written as well. Recent work on adding new features prompted us to revisit this code and replace it with something cleaner and more flexible. The result is code that is more more readable, and much faster to create.

Now that the game is (for the most part) working, we need to do more of this kind of rewrite. Before we move on and add things like sound, networking, game saving, etc, we need to stop and clean up the code we have already.

Our plan, as it stands now, is to focus primarily on usability and polishing the user-related aspects of the game for our version 0.4 release. We want to have the game working very well for the 0.4 release, because we're not entirely sure how long it will be until we make another release after that. After 0.4, we're going to be doing a lot of clean-up on the our code-base. This is not the kind of work that will necessarily add new features, but is that necessary kind of work that will allow us to add new, more complex features faster in the future.

No comments: