Wednesday, July 27, 2005

Features & Requirements: 3D

(First off, does anyone know how to tame Blogger's WYSIWYG editor? Why must it specify font size every time I want to put something in italics?)

Time to start listing some of the features and requirements I've been thinking about. I want to get them written down so I can start brainstorming about what is worth doing and what is overkill. I'm going to devote a separate post to each feature/requirement.

3D is the biggie. I put it here as a requirement, but it's the one I'm most unsure about and have been spending the most time thinking about. Thing is, I'm a 3D guy by heart. Years of using 3D Studio (back to the DOS days baby!) taught me that I'm pretty good at modeling and texturing cool-looking things, and my computer graphics training at Georgia Tech taught me most of what I need to know about maintaining and manipulating a 3D scene in real-time, programmatically. I'm actually fairly confident that I could build the necessary engine to support a decent 3D scene, but not so sure about the time required to build all the assets. Even constructing a single tile — say a piece of hallway — can be a lot of work. 'Cause a single piece of hallway is going to have the basic wall shell, then adornments like rocks & pebbles (to hide sharp edges), then more other decorations like wooden bracing and hanging vines and whatnot. I know that clever scene building can relegate the adornments to separate passes, and therefore separate assets, but still, for a game of this scope we're talking about a lot of 3D work just to get basic artwork in place. Not only that, but there's the matter of a 3D Studio license. (Tried Blender. Really gave it an honest college try. But I can't jive with it.)

One alternative is 2D (like Abuse 2D). If I could think of a way to build an engine that could swap out 2D for 3D with the change of an XML file, I'd probably do that, if for no other reason than to have a proof-of-concept written more quickly. The engine could be like Super Metroid's, even with cool effects, but I worry that it wouldn't be as engaging. Dynamic lighting would be very difficult in 2D. And I get the suspiscion that before this adventure is over I will have started dabbling into low-level GPU effects like pixel and vertex shading — that's something I've always wanted to learn. Then there's the artwork. I just know I'd end up building the artwork in 3D then rendering it to the requisite 2D sprites. If only I could draw artwork like we've seen in Metal Slug. That game really captures the look I'm after, but I've never attained that level of stylization.

Another alternative is what I'll call 2.5D. This would involve much more rudimentary geometry combined with 2D sprites. The player, NPCs, and other objects in the world would be animated sprites strategically positioned in the Z-plane to not interfere with each other. I wouldn't go as far as, say, Paper Mario; I'm thinking something more like Dungeon Keeper I's approach. This approach has a hidden benefit: a basic 3D engine serves as the foundation, and that 3D engine can be enhanced over time. If the OOD of the project is clever enough, the sprites can be swapped out with 3D models as the assets (and skills) become available. This approach lends itself well to using placeholder art while I work on the low-level engine mechanics. With the help of Photoshop (oh please, Paint.NET, please enhance your feature set with all haste!), pencil sketches could have their backgrounds keyed out and be mapped onto some quads, serving as entites in the environment. That might actually have some stylistic merit...

Overall I think building a solid 3D engine will be most gratifying. But it can take a long time to make one, and even longer to populate it with assets that are up to my standards. Perhaps a 2.5D approach is the way to go. It serves as an attainable first step towards what I really want, and lends itself well to organic growth.

If I could even pull off something as simple (!) as Dungeon Keeper's engine (turned on it's side), I think I'd be happy with that — that would make a good first milestone. It had a lot of the features I'm after: a 2D playing space rendered in 3D with lighting effects, clever adornments, and dynamic elements all comprising a map that can be tunneled through to build a world.

Diggles comes to mind again. That game's engine might as well have been Vyde Alpha. It even includes things like ladders, elevators, and random tunnel & room generation.

Yep, Dungeon Keeper and Diggles shall serve as engine inspiration for this project. I wonder if I can get Dungeon Keeper running in XP...


Post a Comment

<< Home