It's the last week of 4E5! I'm feeling a little guilty I pulled out, but I'm looking forward to seeing what everyone has done. The one I'm most looking forward to trying is Drillian's "Mop of Destiny", because the flat shaded look reminds me of my favoured vector art style.
Oh, and if you haven't tried out HopeDagger's Membrane Massacre, then you should (although judging from the buzz from fellow Journalteers I gather most of you already have). It's darn good for a game thrown together in two weeks. Plus now I've got someone to hassle if I ever need advice on how to do bit-level collision detection, heh.
And I've been strongarmed into changing to my festive avatar for the Christmas season. I wasn't even planning on thinking about Christmas for a least another fortnight. At least with the Ice Slider Kid there wasn't really that much to change.
Ice Slider Progress
It's been a little while since my last update. I was waiting until I had a good screenshot for Ice Slider, but it's still not quite there yet and I'm not at my dev computer right now so I have nothing to post. To describe what I do have, I have a nice blue screen going with a counter in the top left corner for the FPS and polygons rendered, and the big words "ICE SLIDER" rendered to the screen. Nothing that exciting, although the "ICE SLIDER" does look nice. I'll wait until I've got a menu and maybe the start of the actual game graphics done before I post a real screenshot.
Most of the last few days have been coming up to speed with my engine. The problem I had last week was that after a short slump away from coding I'd forgotten what I was up to. For some reason I got into my head that I was still needed some uber-engineered system which completely decoupled the OpenGL components from the rest of the game. It was only after I had a peek at Ravuya's Propane Injector engine to see how he did his graphics that I realised that I already had everything I needed - our sprite rendering code was scarily similar (I guess there's only a few sensible ways to render a textured quad!). I don't know what made me feel more stupid - the fact that I was fretting over nothing or that I didn't use Ravuya's engine in the first place.
I'm a bit annoyed with myself that I still haven't completed the next big thing on my checklist - to make the menu system. That's partly because I keep spending time fixing lots of other little things first. There are bits of my engine that are simple and elegant, and then there are bits that are overly complex badly written rubbish. Unfortunately those rubbish bits seem to breed if you try to hack your way around them so I've been spending a bit of time trying to at least clean those up to the point where they're more usable than not.
The other reason I haven't finished the menu is I keep getting distracted with other details that may or may not be that important, such as improving my font display system, adding in more basic graphics primitives or researching my own pseudorandom number generators. This morning when I was meant to be working on the menu system my big achievment was the frame rate throttler to keep the game running at a fixed frame rate to make things smooth and save CPU processing cycles. They're all pretty easy stuff and all a benefit to the game but I really should be working on the functionality.
Still, I've got a fair bit done. I should start making a checklist at the top of my journal to at least give the illusion of progress.
Stuff done since last post:
- Input System: I've now got the game keys stored within my settings file which means they can be modified within the game itself, and a kernel task that sends event messages whenever one of the game keys is pressed, released or held down. That's pretty much all I need to start with - I can add mouse and joystick functionality later.
- Font System: Spent a lot of time cleaning this up. It's all a bit too much of a hack right now, and I'm using too much memory for my liking (every letter has it's own position info stored at the moment, although that does allow some potential good effects). At the moment I can only support single lines of text, but I've got basic positioning, justification (left, right, centre), scaling in both x and y directions, colours, modifiable letter spacing, and just recently: shadowing effects. I'm a sucker for fancy polished fonts!
- Frame rate throttler: As described above, keeps the frame rate below an upper limit. I don't see any reason to have my 2D game run over 100 FPS on a blazing fast computer - might as well use the processing cycles for something else.
All in all it's looking pretty good, just churning along at a slower pace than I'd hope. I'm still pretty set for the menus to be finished by next week, however.
A note about fonts
One thing that's always bugged me is the lack of decent information about how copyrights apply to fonts. The laws seem to be widely different around the world, and most of the fonts out there on the Internet are pretty shady about their sources. To be honest I don't think that matters too much if all you want a good font for is to add to a nicely photoshopped image you post in the Lounge, but for a game release I want to ensure my fonts are legit.
My favourite source for good game fonts at the moment is Aenigma Fonts, which has a bunch of freeware fonts by Brian Kent. I wasn't 100% sure whether I could use these fonts in my games, since I like to convert fonts into SVG or a bitmap format to make it easier to load. However after emailling Brian he responded that that's fine, so I'll most likely be using one of these in Ice Slider.
For those of you out there working on your own hobby game, I highly recommend Aenigma Fonts; there's some great typefaces there that I think would work well in many types of games. They might tend more towards the decorative than the functional, but for most games that's what you prefer!
That all being said, I'm also toying with the idea of making my own fonts for my games in the future. I've been playing around with designing fonts on paper and it all looks like a lot of fun. Main drawback is it's quite time consuming and I have enough on my plate already, but it's something I'd really love to try in the future.