Friday, November 05, 2004 1:56 PM
craig
Game Engine News, Part The Sixth (or something)
So I've been poring over Father Miller's seminal work on MDX, and while the knowledge I'm gathering elates me, at the same time I'm realising that everything I did was.. well, wrong.
So I'm going to start at the beginning again. Not entirely in terms of code, there's a lot I can reuse, but I need to reconsider the design of my game engine. Something like index buffers, of which I knew nothing, suddenly sheds a new light on things.
At the moment, and these thoughts change form every 30 minutes or so, I'm basically faced with two possibilities:
- I continue on in the same vein that I was, using no projection or view matrices and no 3D lighting, to build the isometric tile engine. If I do it like this I'll have to continue with the light map idea for lighting, which is fine since I'm using a traditional 2D approach, but I'll have to throw away all the depth buffer code I wrote, since I now understand why it wasn't working. If I take this option I also should consider whether I even need to use a 3D rendered landscape in the first place - it may simply be more practical to render all the landscape tiles and map objects as sprites on the game surface.
- I re-architect the engine entirely. I use a proper 3D viewing fulstrum, with a view and projection matrix, and proper Z-buffering. I can still use sprites for the map objects and characters and such, but will have the advantage (I hope) that if implemented as billboards this approach will make the game surface scale. I really like that. It also means that I could potentially use proper 3D lighting effects for ambient and positional lights, which would be wicked - although I'm not sure how those would affect the sprites.
At the moment I'm leaning towards the second approach, mainly because it seems the more interesting - the first option I think would be far easier to implement, but I may as well use DirectDraw if I'm going to do that (except for the light map - since that relies on alpha blending, which DirectDraw does not support). With the second approach I could even at some point replace my sprites with proper 3D models, if I so wished. (And somehow magically became a 3D artist. Hey, it could happen; I magically one day became a C# programmer. Well, it wasn't really quite that simple, but I'm getting side-tracked again.)
So hopefully this weekend the work will begin. I'm going to start the Game Engine ProjectTM properly this time, in the same way as I would with any other software project: there will be much scribbling of unrecognisable object models on bits of paper, smoking of cigarettes, and incoherent mumbling. There might also be beer, and very possibly some salty snacks. I have a very strict tried and tested project planning approach.
But at least I have a goal, and a clearer idea of what I want to achieve, which is a start I suppose. Wish me luck.
Filed under: Codito, Ergo Sum, Game Dev