Tools
Since this generation of real-time engine we can see that it isn’t possible to differentiate ourselves just with raw graphics. The arrival of programmable GPUs puts us all in the same place. Writing shaders and manipulating their parameters we can achieve the same visuals as any game written by famous programmers such as John Carmack or Tim Sweeney. There is no longer the need to create complex data structures, complex hacks, and so on just to achieve a visual look. This shows us a bunch of things. First, it was never so easy to work on computer graphics. And second, in order to differentiate hour products we have to rely on our artists, and as a consequence, we rely on the tools that we provide to our artists. That’s why it’s extremely important to provide flexible, easy-to-use tools that need to be delivered in a reasonable time.
In the past we were used to writing very limited tools because the resources available were limited. For example in the Quake 2 era you had simple editors such as Qoole for geometry, Wally to create 256 paletted color textures, and look game depended on simple diffuse textures with lightmaps generated by q2rad. Now with programmable GPUs and their speed there is no need to limit the artists. Slowly with the progress of GPUs we replaced Wally with Photoshop, the geometry editors became more complex, and the material and illumination systems became bigger and included more variables such as specular factor and so on. Now we find ourselves with the possibility of showing tons of geometry, high resolution textures (or even synthesize textures if we desire) and the lighting and material systems can be as complex as the shaders we can write. That’s why we need to create tools that are flexible so that the artists can utilize all the resources available. These tools need to as flexible as the shaders we can execute, and the textures and geometry we can render. Also the tools need to be really well integrated with the engine so that the artists can see exactly what the end user will see. For example, shader editors such as FX Composer and RenderMonkey are discarded. Looking from the point of view of the materials we can’t just give the artists a text file to edit shaders and material properties since that takes time from the artists. We need to create an environment for the artists where they can leverage the power of shaders but at the same time it has to be a visual tool that they can understand. A possible solution is what Epic Games did with their material editor. The materials and shaders in the Unreal Engine 3 are created with modules in a similar way that Native Instrument’s Reaktor uses modules to create synthesizers. Each module is created by a programmer and the materials are created by the artist by connecting those modules. This is really valuable because artists can do what they want, and the programmers have more time to work on other things.

Sound synthesis with modules in Reaktor.

Material editor in Unreal Engine 3. Different modules are connected in order to obtain the final material.
It is also extremely important to develop tools that are easy to use. Just like in any application, usability is extremely important. If you create a complex tool (such as Bungie’s Sapien) we are going to lose productivity, we are going to frustrate the artists, and it will be really complicated to integrate artists to our project. It is very important to maintain the quality of the usability throughout the whole project because the chances of a great paradigm shift in the creation of content is fairly low for the near future. I can’t see any change myself at least until we move from polygons to voxels. The reason for this is that usually we need to add new artists in the middle of our project, and usually there is no time to teach them a complex tool. Being aware of this means that there is a general problem in most of the current engines, and that is that the studios aren’t taking advantage of the applications that most artists already know. For example, instead of taking advantage of geometry editing applications such as 3ds Max or Maya there are studios that still write editors such as D3Radiant or UnrealEd. A generation ago those editors were necessary because the engine and technology where they ran was also limited, but now the engines are far more flexible and in the end we end up duplicating the functionality available in those other tools such as 3ds Max, SoftImage or Maya. This means not only that the programmers waste time duplicating functionality available in other tools, but the artists also waste time getting used to this new tools. Instead we should create plug-ins to these standard tools to fit our needs. With respect to usability I recommend the book “About Face 2.0: The Essentials of Interaction Design” by Alan Cooper and Robert Reimann (ISBN 0764526413)

Sapien by Bungie. A simple usability test would show that the user is flooded with information among other problems.
Also, the need to deliver tools on time is also a good reason to expand existing editors. Creating even the most basic features a fair amount of time, and then more complex editing features can take more time. Instead, creating a plug-in all the features are available which means we only need to focus on the features that are unique to our technology. Some could say that this isn’t good because you don’t have control but you also have to realize what your priorities are. Another complaint are the SDKs of the different products (for example, 3ds Max SDK is pretty bad) but you need to remember the benefits I mentioned. Even though it will take us some time to adapt to an SDK and an environment we are not used to, but that cost will always be lower than creating a new tool and teaching the artists how to use it. The only real problem is the cost of those applications.


