I'm currently working on a 2D sprite rasterizer for wxWindows. The 2D graphics capabilities of wxWindows were about what you'd expect from a windowing class library --simple bitblt and stretchblt stuff. Over a year ago, I wrote a DIBSection-based rasterizer for my games that worked very well, so I decided that I needed to move it over to this new class library. The rasterizer was generic enough that I wouldn't have a problem making it cross-platform. Hopefully, it won't be a lot of work to get it working with stuff like SpriteWorld on the Mac.
At this point, you're saying "2D Rasterizer?! I thought you were now a 3D kinda guy". After talking it over with my wife, I decided that I needed to do both. There are still tons of little card and board games that wouldn't benefit from 3D. For those games, I'll need a reasonably good sprite library, like the one I had already written for my old system. For the stuff that'll require 3D, I'll do 3D. I don't wanna do 3D for 3D's sake.
On top of that, I'm writing a series of configuration classes. I realized that most of the repeated code in my games was the configuration stuff. I drew up nice little tabbed dialogs for each game, but it was a lot of code that should've been done automatically. I finally think I have a nice way to do it.
First off, there's a single static object called Configuration. This is the keeper of all of the config information for a program. If you have a config-able element in the game, you simply define it like so:
Configuration.AddIntElement("Board Width", 6, 10, 8);
This defines an element called "Board Width". The min value is 6, the max is 10, and the default is 8. Once you define an object, Configuration goes out to the registry and looks for the value named "Board Width". If there's one there, it sets the value to the one in the registry. Otherwise it takes the default. To retrieve a value, do the following:
X = Configuration.GetIntElement("Board Width");
The important part comes with this call:
X = Configuration.ShowDialog();
This will bring up something like the VB properties dialog. All of the values you added will be in the dialog, and you can modify them as necessary. If done nicely, this should greatly reduce the per-game code without making the games any more difficult.
My only worry for this scheme is that I'll want to do some stuff with bitmaps. For example, in my existing games, you can choose from a dozen or so playing-piece bitmaps. I want to show the pieces in the dialog so the user will get an idea of which pieces to use. I'll probably have some kind of custom Element base class that will draw its elements in the dialog, so I can be as flexible as the old custom dialogs.
There are two reasons why I'm spending this much time on the Configuration, something which is usually an afterthought:
1. In the old games, there were some global configuration-stuff I wanted to add, but I was understandably troubled with the thought of modifying 50 dialog boxes to show 'em. This'll allow me to add it to all games automatically.
2. I'm looking to port my stuff to smaller platforms like Windows CE. My old config dialogs were big-n-unruly. For lightweight platforms, I could make a minimal version of the dialog that would be light on screen and machine resources.
Looking back at the GDC report, I noticed that I neglected to follow up on a couple of things. Here are reports and reviews of some of the stuff I got:
The Diamond Monster Sound: Wow! The install was very simple. The sound is terrific. Tried some of the A3D demos, which sound beautiful. I'll be giving A3D a hard look for the 3D games.
VTune 4.0: Didn't install correctly. Crashed my machine when I tried to run it. I don't need it right away, so I'll wait a bit before giving it a closer look.
Talk-n-Play: My wife is completely hooked. Unfortunately, she's not hooked on the Talk-n-Play part. She tried going to the TnP site a few times, but there weren't enough people chatting to get a decent game going. She's completely hooked on the Sierra online games, which don't require voice-chat. I've had to make a house rule that she's not allowed to play Spades before work, because she's been late a couple of times.
Scrabble by email: Just started a game with my wife yesterday. Very easy to set up and play. Fairly lightweight (no music or video). A great game for lunch-hour play.