GETTING TECHNICAL
You may have seen Ray Harryhausen credited with Technical Effects (meaning special effects) for his amazing stop-motion animation in movies like Mighty Joe Young, It Came From Beneath The Sea, and The Beast From 20,000 Fathoms. Well, this column isn't really about special effects, just technical game details and behind-the-scenes programming stuff that we thought you might find interesting. We'll be updating it regularly, or whenever Lars thinks of something.

12/01/02: FUN WITH BOX LISTSTCFH isn't really 3D, but it really isn't flat 2D either. Some things, like collision detection, are handled in 3D, while other things, like onscreen bitmaps, are 2D. 3D data is exported as part of the rendering game assets process. I then take that data and process it into a list of "boxes"-- a kind of low res voxel description of the shape of the object. This description is used for spacial information within the game: collisions, area of effect ranges, display sorting, etc. The game system is designed to support 3D collision, so that objects can pass over and under other objects as needed. For example, cars can drive over highway overpasses, ships can pass under bridges, cars and people can run under the legs of the giant spider.

THAT'S MIGHTY BIG OF YOU
Another issue we've been dealing with in TCFH is scale. We have a really wide range of scale -- from tiny human to giant monster, with everything in between. We decided early on not to fudge the scale issue, but instead try to find one scale that worked for all objects. We thought the impact of a giant monster would be weakened if we made oversized people, like many other games do. So after a couple tries, we came up with a pixel scale that showed just enough detail on the smallest things while still allowing the biggest things to fit on screen: roughly 1 pixel = 6 inches. A six foot tall human is about 12 pixels tall in the game.

With the pixel scale finalized, I determined that my initial design for the box scale didn't provide enough resolution to adequately resolve collisions and shape interactions between objects. Thus I'm rewriting part of the collision system and asset export tools to provide higher-resolution collision data for all objects. The screenshot of my asset viewer below shows the collision boxes (in top down view). The red boxes are the old volume bounds and the yellow are the new, high res shape:

Altitude data is also part of this shape, but it isn't displayed in my tool. When I need this data, I can now export a series of images in altitude slices, like a CAT scan (something I'm too familiar with at this point due to sinus problems). The animation below is of Newtrino in slices, from his feet up:

MIND THE GAP
With the new high res data, some flaws became more pronounced. When I export the 3D models, the box tool was only looking at vertex positions to determine the volume and shape of the object. For large structures made of simpler primitives (boxes, cylinders, etc.) this could lead to gaps in the high res box shape if the primitive wasn't broken down into enough vertices per edge. I've enhanced my tool to now parse the face data from the 3D models and interpolate the surface of each polygon so there are no more gaps.

CHOCOLATE BUNNY EFFECT
Another issue that arose is what I called the Chocolate Bunny Effect. Most of our 3D models have no real interiors -- they are modeled as a hollow mesh. The early box converter tool took this literally, and my collision data in the game reflected it...I was seeing people getting trapped within the hollow spaces inside buildings. Yes, buildings in reality are partially hollow, but that's not really something we intended to model in the game. So I've added logic in my export tools to determine areas that are completely enclosed and fill them in. Now boxes are more like a Cadbury egg than a chocolate Easter bunny.

Unfortunately, these changes will require us to re-export all of our existing assets from our 3D models again -- a very tedious task. But better to do it now than later, when we have even more assets. This will also allow us to improve the graphics slightly, as I fixed a few other bugs in our asset tools.