Tools

Many game engines can load multiple texture formats, mesh formats, etc. Why? An engine should be a lean, well understood, rock solid collection of code. Having multiple handlers for the same type of data only increases the complexity of the engine. An engine should have exactly one input for each type of data and it should be handled extremely well. It is the tools should support as many formats as possible.There are a number of advantages to this:

1) The engine never cares about handling new types of data. If you wanted to handle a new type of texture, only the tools need to be modified. It’s always easier to modify your tools. Releasing a new version of your engine to allow loading some new image format is bad design.

2) The engine stays small. If you write many image loading functions or use an image library to load various image formats it is probably pretty large. It might even be necessary to include an extra dynamic library just to read all those image types.

3) Not tied to the same programming language as the engine. Tools can be written very quickly in higher level languages like Python instead of in the engine’s high performance language, making tool creation much faster.

4) Validation. Tools have a chance to validate data before it even reaches the engine. This is a perfect opportunity to notify the user of problems with the source asset without having to run it through the engine itself.

5) Control. Data can be organized in the most engine friendly format possible for fast loading. Most source asset data formats are not geared towards loading efficiency and require some amount of data conversion that would be better put in tools.

EDIT: Gamasutra just posted a great article about tool development by Ben Campbell which covers some of the things here and a lot more.
http://gamasutra.com/features/20060921/campbell_01.shtml

Leave a Reply