Sunday, April 19, 2009

Graphics Asset Pipeline

I'm in the midst of hammering out the asset delivery pipeline and storage system for the submap isometric graphics. Part of the reason I had initially elected to do a straight top-down game was the trouble I have with creating the graphical assets in isometric games. I've worked out a few techniques, though.

The games I make are typically always randomly generated, so I need to structure my graphics in sets of tiles that can be combined together to create any arbitrary layout or section. Hence, the creation process has some pretty tight restrictions. In this screenshot, you can see a typical view of Blender as I work on a particular graphic set.



I construct a special staging .blend file with planes to represent the tile nodes of the map, then create the objects to be rendered on top of the planes, using the planes as guides for spacing and positioning. In order to create the seamless effect, the objects need to be aligned with copies of themselves in adjacent tiles. Then, a tall sliver or slice of the scene is rendered:



If I did everything correctly, the slice can be used as a piece in the larger set, tiling next to itself as many times as are needed:



Of course, this is an extremely simple example and in reality it gets more complicated. The above example renders a narrow (64 pixel) slice. However, not all structures will repeat that frequently, so different sets need to be made with more pieces to cover a larger area. Also, corner pieces need to be made to tie in all the flat side sections. And with simple, regularly repeating geometric shapes like these arches, there are few gotchas. However, when doing irregular shapes like a cliff face or jumbles of boulders, you need to watch out and be very careful with your positioning, lighting, and rendering or ugly seams can result which destroy the illusion.

3 comments:

evolutional said...

Is there anything stopping you actually just pulling out that piece and rendering it as a 3d object directly on the scene?

Joshua said...

That's the way I'm tending right now, I think. I like being able to render a high-detail structure or object then map it on a quad for performance, but there are just so many weird little gotchas with that method. It's what I did with the original Golem, and the asset pipeline was weird, especially for irregular cliff-type walls that sometimes didn't map well to the box walls of iso cells.

The main thing I don't like about making it a fully 3D is my lighting system will have to be revamped big time. But I guess thems' the breaks.

evolutional said...

How about having the 3d objects in the scene and render them to a texture before using them? This will let you adjust them in your level setup and then treat them like normal quads.