Level building blues

(I’ve previously posted this on a private mailing list, so stop me if you’ve heard this before. The topic remains… well… topical for me.)

All of the following is based on ‘typical’ 3D game technology as I know it. Your mileage may vary.

One of the things which has always bothered me about using CGI tools (MAX / Maya / SoftImage) for level building, is that at a deep conceptual level it just doesn’t do the job. A level is not a list of polygons. An (indoor) level is more usefully represented as a connected set of volumes. There is a ton of spatial information you need, and you may also need multiple sets of geometry (one for collision, pathfinding, physics, AI, one for the display). Yet CGI tools are built to output pixels, and they tend to not care where those pixels came from. So what you tend to have to do is a) restrict graphic artists (e.g. don’t use NURBS) and b) extract the information you really need from the list of polygons you export from the tool at some point. Compare that with level building tools that directly allow you to edit volumes.

Long turnaround times (for the edit – test cycle) are a problem but it’s getting better because it has become easier to integrate your own real-time output into the CGI tool.

Integrating your custom tools into CGI tools can be a pain – especially since you tend to be tied to their UI, data structure, save mechanism etc. E.g. if you want to edit dialogues in a Maya scene and save them in XML files stored in a version-controlled on-line database, good luck trying to integrate that in a sane way.

Significant productivity improvements can be made by using element libraries or toolkits instead of modeling / copying and pasting each tree when you need one – especially since that tree may have lots of game-dependent custom data. Cramming that into a CGI tool is a pain as well.

Working on really large maps, handling multiple people working on a level, correctly handling different aspects of a level (say geometry and population): they’re all useful, and they’re all a pain in CGI tools.

Obviously many people have managed, but I still think it’s a fundamental problem. Whenever you want to edit anything that’s not visible geometry, you’re straining the boundaries of the CGI tool.

Am I wrong? Did I miss something? I’ve discussed this more than once with various smart people, but no-one has managed to convince me this is not a problem, just that the problem can be made less irritating.