Rather hot summer weather this last weekend in Canberra. Given that it's still the middle of spring, I dread to think what the actual summer will be like this year.
A reasonably productive weekend, although I didn't quite finish everything I'd expected to. Still, I'm much happier with how the project's going now.
Project Penguin - Ice Slider
I hadn't realised this, but the concept behind Ice Slider is very similar to John Hattan's Duck Tiles (Flash game link). Thankfully there's some differences in what I've got planned for my game, so hopefully they'll both stand on their own.
Programming is going slowly but steady. At the moment I'm working on the "Penguin Engine", the successor to the Nova Engine that was the basis of all my previous projects. The Nova Engine (named after Project Nova, the project this engine was initially constructed for but ended up being used for Pierre and the Fish). The Nova Engine was basically just a stripped down version Richard "superpig" Fine's Enginuity engine that I wrote working through his tutorials with a bunch of my stuff hooked in. Given I was learning as I was going it was pretty slap dash in places and a lot of core functionality was missing.
The Penguin Engine is a rework of this and my first attempt for a proper full featured SDL/OpenGL 2D game engine. My first major milestone is Project Penguin a.k.a. Ice Slider; I'm going to put in enough functionality to do this simple little puzzle game. Once it's complete I'll analyse which bits of engine worked well and which need rewriting and build another iteration for my next project. Hopefully after enough iterations - maybe a complete rewrite or two if things go badly wrong - then I'll have a 2D game engine that I can easily use to make the sorts of games I want to make.
So far I've got the following features in various states of operation (nothing's ever completed as far as I'm concerned):
- The kernel. This is the only bit left from the Enginuity potion of the Nova Engine since it's simple and it works, although it's being slowly mutated into a cyborg variant of my own code as I make alterations to it.
- The logging system. Outputs diagnostic and error messages into nicely colour formatted HTML. Very handy to have running at the start. I'm also using this as output for a bunch of debugging unit tests I'm running on the other systems.
- The settings manager. A simple interface for storing settings in an XML config file. It's a bit basic for now but will do for the first iteration of the engine.
I've also got a bunch of administration classes which I'm still working on, and the basic skeletal functionality of the graphics and input systems which I'm presently fleshing out. So far all the engine does is output a blank application window, but it's enough to get started on more eye-catching stuff.
My first development goal is a first draft of the text library. Ice Slider is simple enough that I might get away with having pre-generated text billboards, but I'll need text eventually so I might as well get my development feet wet with this task. I know there's a bunch of text libraries out there already but I'd like to make a bunch of text animations that are beyond what I've seen in most libraries. Plus it's a good first warm-up target; it's not too difficult to do (just a bit fiddly), I'll need a lot of the core subsystems up and running to do it, and once it's done I can use it to output on-screen diagnostics and use it on my next target: the menu system and config screens.
Music for Blocky Man
I'll admit that I got a bit absorbed on this; I'd forgotten how mesmorising music composition can be. Unfortunately it's as frustrating as it is fun: I just couldn't get the music for Level 1 of Blocky Man right. So far there's only 16 bars worth that I think is reasonably okay, and that's just an 8 bar phrases reworked twice. I really want to put a change-up with another 8 or 16 bars of a different theme to act as a break for the ears, but everything I've tried doesn't seem to fit. It's either too similar to what's already there, too different so it doesn't fit in, or doesn't seem to work for Blocky Man. Yargh.
I'm also a bit upset with my samples at the moment; they're a bit horrible. I've been sampling notes off my electronic keyboard by plugging the mic out into the mic in on my computer, but my sound capture capabilities are terrible and I think I might have screwed something up. It's okay to work with but I'll need something better. It's hard to get exactly the right instruments to get the feel I think works best for Blocky Man.
There's also the issue of the percussion, which I'm never quite sure what to do with, and I'm still not that happy with the orchestration of the 16 bars I've flagged as "okay". I think I'm just suffering from "composition fatigue" from listening to the present version too many times. But thankfully I've got some time before Stompy finishes Level 2 and I should move on to the next piece!
If you want to have a listen to what I've presently got, here's a link to the 16 bars I'm working with. It's a zipped version of an Impulse Tracker (IT) format, which I made in ModPlug Tracker (it's free! Try it!) and can be listened to in WinAmp and maybe other media players.
BlockyMan Level 1 - v0.1
Keep in mind it's a work in progress, and I'll probably make some changes before now and the final version. But I'd be happy for any suggestions on what to improve with the composition.
I'm a bit concerned that I haven't been using Inkscape that much over the last week, so I'll need to get back onto art practice. Ice Slider is almost but not quite up to the art generation phase, so I'll need to ensure that my skills are adequate before I get start on that. The tricky part will be animation; I haven't had much experience with that. I should also start writing Tutorial 2 of Inkscape Adventures, but I still haven't a clue what it should be about.
I'd also like some practice in making my own fonts, mostly because I'd really like to play around with making my own but partly because the legal issues revolving around font IP still baffles me.
I guess I should also put one of the progress lists at the start of this journal too.