I’ve been a bit sick lately, so instead of going out and having fun, I’ve been cooped up inside. On the upside, I’ve been writing Kung Fu Legends code. So far I have the main GameManager, Options, Graphics, Input, Event management and some testing frameworks set up. I gave the UI a good Harvard try, but fell in a heap. I tried to integrate MyGUI and CEGUI, but both were annoying to attach to my code. Not because of the library code itself, but the accompanying documentation is sparse and scattered, and presumes that I’m using Visual C++. I really didn’t like Visual C++ (it has a workflow and feel counter to my ingrained habits experience). I’m using MinGW so I get all the goodness of gcc, with the convenience of being Windows native. In any case, I wasn’t entirely ready to roll my own UI code at this point, so I moved onto something else.
Next I tried adding sound support. The obvious choice was OpenAL. But alas, it doesn’t seem to come with codec libraries automatically, so I was off on another hunt to get the libogg and libvorbis packages. “This should be easy,” said I, not learning my lesson from the previous paragraph. All the code for the two libraries were there, but to compile it, you needed the autotools library prebuilt. This is kinda okay if you use CygWin, but I don’t. Grr. Getting the autotools compiled through MinGW was too much of a hassle for my extremely low level of caring. I mean it was two libraries distant from my work, so any time working on that meant time not working on something personal. I’m sure it’s not insurmountable, but spending an evening wrestling with that stuff, all the while knowing that my friends were out getting drunk… well it rubbed me up the wrong way, so I put it too on the To Do pile.
So where did that leave me? There are a bunch of engine components that I could write, but seemed overkill. Kinda like installing a glovebox when the car didn’t have a steering wheel yet. Coincidentally, at this time I had gotten a few queries from friends about the game simulation. While I had a half-skeleton of a game engine up and running, by sheer amounts of self-control I didn’t have the simulation even sketched out on the code level. So tonight, I started. Here’s the first demo of the game, in all its glory:
Dude A created in Place A. Dude B created in Place B. Dude A went to Place B.
Woo! To get this unexceptional pile of bits I had to implement a few hacked frameworks (hacking around the EventManager, a specialised TextOutputManager and how I’m doing Events and Actions)1. But it’s a start and its sorta within the framework that I’m designing2. An earlier attempt at writing the whole game left me implementing detailed systems I didn’t need yet, but wanted to program. I’m starting to warm to YAGNI (You Ain’t Gonna Need It) because it’s easy to disappear down a rabbit hole of design and implementation relevant to very little. Hopefully I can build up more and more supporting systems so I can start to develop the game simulation in parallel with the game engine. This way I can see if the game idea works in principle, and once the engine is more capable, I can see if it’s “fun”.
So yeah, like all my projects, progress is slow but measurable.
- And oh god, work around the annoying peculiarities of how compilers deal with C++ templates. My handy-dandy, super-powerful Options framework failed because the compiler was either too smart about types, or completely stupid. As a result, my spiritually beautiful code constructs had to be hacked down to things that the compiler wouldn’t barf on ↩
- Sure, I could have just dumped that string to std::cout, but that’s no challenge. ↩