Using 3D Studio MAX as a
Level Editor for Shockwave 3D Games
(Sunday, July 28, 2002)

Metadata

Using the .W3D format, there are only two ways to communicate information from MAX to Director: by model naming conventions or by user-defined properties. Naming conventions are useful, but don't scale well to large amounts of complicated data.

Stand-ins, Dummies, and Triggers

The coordinate system of each model is very important, as we can setup dummies in the modeling tool to be replaced by dynamic content via Lingo at run-time. Types of quantities expressible via dummies:

Dummies can be replaced at run-time with dynamic content or used as triggers. For example, the attachment point for weapons on a model would be defined by a point dummy with orientation. A cube volume dummy can be used as a trigger, e.g., for an automatic door opener.

Paths

We'll want to define paths for camera panning, object trajectories, etc.

An Example

The shooting game I'm working on requires several well-defined regions for each level:

Reducing Texture Usage

Development with Director implies limited memory usage in general. Even though users' hardware can be expected to handle all the textures we could possibly stuff into our movies, there's no way we could fill up those 32 or more megs of video ram on a user's 3D accelerator (unless of course we generate lots of procedural textures). The limiting factor isn't hardware, it's the size of the movie. So, we want to use as few textures as possible and use these few textures in clever ways that reduce their size even further. Thus we need to be able to specify tiled textures on models as a space-saving technique. However, this isn't as easy as it would at first seem.

Let's take the example of a skyscraper model. This is a canonical application of repeated textures, since the windows of such a model

The W3D exporter for 3D Studio MAX restricts texturing to the use of the "UVW Mapping" modifier. If we want to ... For whatever reason, we can't just add multiple UVW Mapping modifiers on top of a single Edit Mesh modifier. Instead, we must have a pair of Edit Mesh and UVW Mapping modifiers for each face with unique texture mapping parameters.

Note that MAX is extremely finicky about the order of operations when performing this kind of procedure. You need to be absolutely certain that the sub-object selections for faces lower in the modifier stack stay selected as you add modifier pairs. If you don't understand what I mean, you'll find out the first time MAX adjusts the mapping parameters of the wrong faces.

Here's a demonstration.

Extensions

To overcome Director's inability to get at IK bone names, you could store these names in user-defined properties for models with bones.

Going Further

Possible editors include:

Possible 3D programming environments include:

Further Reading

    Technical Resources:

  1. Tom Higgins has written an excellent article that referes to the use of MAX user-defined properties in Shockwave 3D.
  2. furrycat's 3D Studio MAX level editing tutorial
  3. Richard Rouse III. Gamasutra - Designing Design Tools [03.23.00]
  4. Gamasutra - Case Study: Using Max Script for Building Game levels [08.24.01]
  5. Gamasutra - MaxScript 3.0 for Game Development [10.08.99]
  6. Toiling with Tools
  7. Norman Lin. Case Study: Blender as a Level Editor
  8. Creative Resources:

  9. Gamasutra - The Architecture of Level Design [07.16.01]
  10. Gamasutra - Level Design Resource Guide [07.16.01]
  11. Cliff Bleszinski The Art and Science of Level Design