Game Engine News, Part The Sixth (or something) - Abstract Deviance
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:

  1. 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.
  2. 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: ,

Comments

# re: Game Engine News, Part The Sixth (or something)

Friday, November 05, 2004 5:12 PM by BrandonFurtwangler

I personally like approach 2 better. It's very possible that you're going to have to do a semi-rewrite several times while learning 3d graphics, so dont be afraid of it.

As to what's best for you, you have to ask yourself if you're making this game to get a game done, or if you're doing it for the learning experience. Those two options seem to map to 1 and 2 directly.

I'm more of a "it doesnt matter if i finish the game, as long as I learn (and eventually finish something)" kind of guy, so thats why options 2 has my favor.

If this is your first game, I DO recommend making some compromises on the "engine" and focus on making a complete game. (ie, menu, game logic, sound, input, graphics, etc.)

thats my 2c anyways.

# re: Game Engine News, Part The Sixth (or something)

Friday, November 05, 2004 6:48 PM by Jason

I totally agree with Brandon. Go with option two. Not only will you be learning a lot about Direct3D and its uses, you can also achieve some really cool effects using the 3d hardware. Things as simple as fading the screen in and out, to master alpha levels, to particle engines. Not only will you learn a lot in the process, but you'll find it much easier to add those "small things" that make a game a game.

# DirectX: The conversion begins...

Friday, November 19, 2004 2:07 PM by TrackBack

# DirectX: The conversion begins...

Friday, November 19, 2004 2:16 PM by TrackBack