| « Pitchblackoids for Windows | yesterday's lumbering dream, today's interactive » |
Pitchblackoids
Small step for humankind, big step for man: I've finished my first proper game, Pitchblackoids! By first I mean first written in C++, first on a 32bit platform, first not in BASIC, first in a decade. By proper, I just mean that it has a front-end, it has sound effects and background "music", most of the basic facilities (levels and progression, basic AI, pause, highscore save/load, loads of particles and some other effects)... Click for the download links and a quick postmortem.
Follow up:
The game is based on an idea featured in H. P. Lovecraft's Commonplace book:
201 Planets form'd of invisible matter.
It's an Asteroids clone with mostly invisible asteroids and a rotten evil(ish) twist. It took about 10 days to put together, although most of these days I've been working, and at work I don't have access to a computer.
What went right:
- Although it's just an Asteroids clone, I like the little I've added to the basic idea.
- I used to consider the time I've spent developing the game too long - that's before I realized that most of this time was spent on rectifying and streamlining the XRhodes framework. Important functionality had been added, some bugs were fixed and some small optimizations were made.
- XRhodes' ease of use, from the beginning, was a pleasant surprise.
- The experience I've gained engineering an actual game rather than a framework. The difference between the two is vast.
- I do like the visuals and sound effects (however simple).
- The game balance. It took a lot of tweaking, but it seems satisfying. It might look very devilish at first, but there can be a maybe not too obvious strategy and mindless shooting might not be the way to go.
- As you'll see if you play the game, I aimed to blur the difference between life and energy based approaches, and I think it went well. Extra units come and go easy.
What went wrong:
- The source code is quite jumbled. Apart from the game objects, there's only one class for the whole game, whereas internal functionality (application states and processes) could really be broken down into multiple classes in a bid for a clearer design. Right at this point, I'm still to find out how to design and write an universal state/process manager - however there's a chance that there's no need for one and that helper classes and functions may be enough.
- XRhodes' Mixer subsystem and the SampleState class needs a revision. Channel reservation doesn't seem to be working at times.
- The AI is very, very basic. It would've been nice to create something more sophisticated, even though for this here game I weren't really inclined, neither experienced enough to.
- The joystick support should be cleaned up -- as how it stands, the game just supports the first two axes, first hat and first button of the first available device. Same as with the state/process management, it would be nice to have a generalized way to handle keyboards and joysticks... Functors, probably...? (In general I should wade deeper in the world of the STL.)
- The windows version is crashing like hell. To make matters worse, I can't run the application again in BCXP after it's crashed. Rebooting after each execution is not the epitome of convenience.
- I'm quite disappointed because i've missed the deadline I've set for myself.
And that's probably enough. Beneath all the blandness of this post (which is greatly due to me being incredibly tired), though, I'm really happy for Pitchblackoids.
