Geez, it's been a while…
Time for an update, I reckon.
Although PolyAnim is generally on hold due to the game project, I made a few optimizations (reducing garbage generation mostly, still quite high though) to it. As for the game, I'm still working on the engine side — BUT — I've written down some things on the game plot and other design! I have a vision of the game beginning, but the actual plot still needs to be thought up. Sooo yes, I don't have much at all, but it's a start. Luckily I don't have too much pressures on the story side, as even if it ends up sucking donkey balls (excuse my language), it's still infinitely better than the "stories" of my previous games combined!
Meanwhile, in the programming land…
It's been so long since my last update, I've worked on so many things I don't even remember them all. Instead of trying to remember the details, I'll just list the things I do remember:
- First of all, I started using revision control for the source code (+ related resources). Instead of using the familiar Subversion, I decided to try something new and thus chose Git. All in all, this helps me keeping track of the things I do and also serves as a backup in case my computer decides to blow up. Git is nice since you can use it locally, on any directory without a server.
- VBO (Vertex Buffer Object) support. This means storing geometry to the GPU and rendering it in one batch. Basically it means better performance. Using VBOs I could optimize the text rendering by buffering the rendered glyphs into a batch, up until the buffer fills up (or the texture changes). The buffered glyphs are rendered in one go, and the process starts again.
- Particle systems! I started doing a "particle engine" a while back, got it done except for the different emitters. I still need to finish this up: complete the basic point emitter, add more emitters and add the ability to load particle systems from resources (perhaps a YAML or XML file). VBOs are used to render the systems, when supported by the GPU.
- Lighting system improvements. Lights can now have different effects on them, like flickering, fading and pulsating. The effects are defined in a YAML file of properties.
- Player character designs. I'm not sure if this guy ends up being the final character, but might be. I did a quick idle animation for him (need to adjust that a bit, though), I should add a walk cycle next as it's quite boring to watch now. (The previous animation, test from PolyAnim, did walk!)
- And now for something completely different: Water effects. Yes. This is mostly eye candy (as Box2D doesn't support buoyancy yet, I think the water is only going to be used for restricting player movements as in the player can't swim..) so it made no sense to do it at this phase of development. But I did it anyway, I'm childish like that.. The water reflects the scenery above (provided the GPU supports Render-to-texture) and I even wrote a fragment shader to make it all wavy and twirling..
I have noticed a problem during the development of this game, which was not apparent on my previous game projects (since they were much shorter): I have this annoying tendency to start working on different (sub)projects even when the previous stuff is still not finished. That means I have heaps of unfinished subsystems in this engine, like the particles, scripting, triggers, etc. And I'm already thinking of doing the sprite system and other things as well! I mean, what the hell, it should be bloody obvious I should concentrate on the unfinished things and finish them.. Argh, hopefully I can sort this mess out. Speaking of which, I guess I should start coding the particle system to an usable state.
And of course, to all aspiring game developers: design the game first, damnit! Figure out the plot, setting, characters and whatnot BEFORE getting sucked in the bottomless fathoms of Teh Engine(tm)! Yes, I really should take my own advice some day!