I've gotten the dummy-render hack done for the cutscene system. It's very "dummy" and exceedingly "hack," but it works - I have an entire content pipeline that goes from a nifty little XML file to a moving box on the screen. I'm so proud.
So far, the system weighs in at 3184 lines of code, comments, and whitespace (not counting the XML schema or the library code that parses the XML file itself, neither of which are really specific to this particular subsystem). That may seem like a classic case of overengineering, in light of the fact that all it does is move a box around the screen, but rest assured the real demands on the system are a little more sophisticated [wink]
Basically, at this point, the system has all the code and data infrastructure needed to render complex cutscenes and effects, given an input XML file. However, a lot of the specifics are not yet implemented, and there's a long list of little features that still need to be added. So in essence I have a sort of skeleton-zombie-thing, and the final result will be a sort of Frankenstein's-monster. Except that sounds kind of pseudo-scientific and involves a lot of dead bodies, which hopefully are two things that will not be true of the cutscene engine.
Oh, it can also play little sound effects, too - my demo cutscene plays a little bloop noise.
Going from this to rendering live game objects will be tricky, because it will actually require modifying some of the simulation logic. Sort of. In any case, I'll be getting that planned out (and possibly implemented) next week when I'm in the main office, so it's nice to have all of the supporting infrastructure code done already.
There's a lot of improvements to be made as well. Right now everything is done in integers, which is stupid and inaccurate; eventually the system will be converted to internally use fixed-point math. Some of the 3D object tracking code is really hardcoded and needs to be generalized so I can have more than one floaty box on the screen. Different parts of cutscenes need to have a configurable Z-order. The system utterly vomits if you want to display stuff with an aspect ratio other than 1:1. And so the list goes on.
Those refinements will take some time, to be sure, but they represent fairly easy "speed bump" challenges, as opposed to the large "invasion of Normandy" sort of obstacles that I've been fighting with up until now. So the goal of having a working version of this system by the end of the month is very much on track.
Whew... it's been a hell of a week. I'm tired but not totally exhausted/dead yet, which is sort of amazing given how little sleep I've had in the past 4 days. My brain, however, is totally shot, and my will to write code is completely drained. Time for a Potion of Restoration and some Rest -- by which, of course, I mean that I'm going to go play with my new laptop.
My old laptop's name was Terra (after the FF6 character), to reflect the mystery of its past and the grand epic adventure it got caught up in (i.e. my life, harh harh). In that tradition, I've named my new machine Relm... because it can paint pretty pictures. Hah.. hah.. I'm so darn clever.
Alright, I'm quitting for real this time.
(/me quietly peeks at Daerax's journal to make sure he's still updating more often...)