The Habanero Chronicles: Phase 1
This is the story of a hobby game, built by an industry programmer (that'd be me) and co-designed by an avid gamer (that'd be my flatmate). This project is primarily for our own entertainment, although we hope to produce some tools and resources (and maybe even a finished game) that others can enjoy as well. I plan to make most or all of the source and raw assets of the game freely available once we are finished.
During the development and production of the core game engine (currently code-named Habanero) as well as the final game itself, I'll be recording our devious exploits and grand adventures here for everyone to
I generally refuse to plan this one out until it becomes absolutely impossible to avoid. Since this is very much a spare-time project, and my spare time is not exactly copious, a rigorous plan is more or less guaranteed to be abandoned and burned as heresy within a few weeks. Everything will be played by ear here, at least until we get closer to the uh-oh-we-really-have-to-figure-out-what-we're-doing stage.
To this end, every time a noteworthy something happens, I'll log it here as a completed "phase." I expect to have quite a few phases before all is said and done.
The engine will have an isometric, fixed-camera perspective. I'd like to build much of the rendering pipeline to take advantage of this, although I'll make an attempt at a reusable framework that can be adapted to other view styles in the future. We'll see how well that works out in practice. I've chosen to target DirectX 9, primarily because DirectX is where my familiarity lies, and because I have some great reference code to compare to from Egosoft if I need inspiration. Win32 will of course be the target of choice; portability will be of very little, if any, concern.
Aside from that, very little is decided. I'm currently leaning towards using billboarded sprites on a 3D heightmapped landscape system, although we've been kicking around some game concepts that may lend themselves better to other approaches. A lot of those details will start falling into place as we get closer to needing to have them decided.
Phase 1: Initial Prototyping
This is one of the fastest-moving parts of software development, at least in the style that I use. Essentially, the concept is to accomplish a stripped-down, simple version of our final goal: to render isometric landscapes with D3D9. The stripped-down, simple version of this is to render a quad with D3D9. Our first prototype is actually some line-for-line thievery from a handful of DirectX articles and samples.
This thieving worked out fairly poorly in practice; some mix-and-match problems occured, the inevitable variable name differences caused some headaches, and once the framework was running, the texture was screwed up. Being lazy, I spent a minimal amount of time trying to diagnose the texture problem, and ended up just dropping some sample code into my project wholesale.
At this point, we've got a simple, naive little app that opens a window at 800x600, draws a single textured quad, and then waits for the window to be closed. I'd post a screenshot, but it's really not exactly impressive.
Next up is Phase 2, where the stolen sample is totally rewritten into a more permanent and useful engine framework. This process has actually already started and is moving along nicely, although it's been going slower than normal as I've spent a lot of time explaining the design process to my flatmate. Currently, I've just about finished the window management subsystem, and most of the debug console framework (which I'm working on making generic so that a Windows console window, a networked debug console, and a graphical pull-down console in-game can all be interchanged easily, even at runtime). Once that is in place, the next big project will be to take apart the DirectX code and re-wrap it into the framework that the engine will use in the future. I'll consider Phase 2 complete when the engine is factored and modularized nicely, and is back to a compiling/running state.