So I spent some time looking at various OpenGL extensions in more detail and figuring out the best way to structure some things. I was trying to decide how to arrange mesh rendering data (in generic form, before it gets converted to a renderer-friendly form). The more abstract I get, the harder it is to convert to concrete form, so I was trying to find a friendly balance. I was considering stuffing meshes, materials, and bone information into a single resource type called either mesh or model and animations in a separate resource type, but after doing some research I decided it would be more advantageous to split them up. So I've got model resources, which make reference to (and bring together) meshes, materials, and skeletons. Animations are kept separate from models so that, for example, you can hook a generic running animation up to any model as long as the model's skeleton is compatible.
I've also been working on some mesh loaders. I rewrote my previous 3DS loader to get rid of all the messy code duplication. It now uses an explicit chunk stack rather than my previous foolhardy method of relying on C scope rules to stack chunks. I also did a basic implementation of an md5mesh reader. I decided to support the Doom 3 format as it seems to be the only format I can find (short of maybe the X format) that supports weighed skeletal animation. 3DS actually looks like it could provide really simple skeletal data, since it has heirarchy information between attached sub-meshes. Both formats also have scanners that can extract sub-meshes from the files. 3DS files allow for a single "object" to have different materials applied to each face. Since my system can only deal with a single material per mesh, I'll also need to write a sub-sub-mesh loader for 3DS files to split the meshes based on their material. It all sounds very complicated, but its not that bad when you understand the design of it all.
This year I have a studio class which covers 2 full-days per week. I'm expected to come up with a project idea and implement it through the semester. I've decided to bring my game into it and develop an introductory in-game cutscene. This will require me to develop my rendering engine enough to render an animated scene. I don't need to actually have any high-level support for characters or the game world to do this. All I need is the ability to animate (via skeletal animation, not keyframes) and render textured meshes. Some really simple PCM audio streaming support would be nice too for some background music and vocals (if I have time).
Hopefully this won't be too hard as I also need to build and animate the scene in 3DSMax. I've been doing some character development and concept sketches. I've come up with a potential storyline, but I need to think about it some more. My main character is going to be a female, for a number of reasons. Firstly, females are weaker (culturally speaking of course; please don't flame me). Thus they provide a better character for control (note that this is a 3rd person adventure game). How much more satisfying is it for a player to enable a weak character to reach great heights than an already strong character to do what he could do just as easily on his own? This is also important as the game will involve temporary transfers of control to secondary characters to aid the main character in her adventure (perhaps fulfilling some quest that would be impossible or awkward for the main character undertake). It must also be considered that females are more enjoyable to look at than males (for male players of course). And as far as female players are concerned, I'm sure they'd be more interested in controlling a character from their own gender since most games tend to feature male primary characters. I've been planning to name the main character Sirah - what do you think? I'll see about posting some character concept art if I can get to a scanner at school.
Anyway, tomorrow I'll be looking into maxscript and attempting a basic md5mesh exporter. I MUST have a (static) textured mesh rendered onscreen by the end of September. I intend to have the entire introduction storyboarded by then as well. I really don't want to get to December and find myself working all night every night to get this thing done. Fortunately, I don't have a job at the moment, so it frees up some time.