Cell is a first person shooter game created by 13 students at The Game Assembly over 10 weeks of half time work.
- Updated the asset pipeline to accommodate for texture reuse (see below)
- Helped updating the level editor for the project
- Trained an artist in Substance Designer
We used a module-based system for creating the environments in this project, and our artists wanted to use atlases for this. To make this possible I designed a material system and a material editor. A “material” here is a collection of textures that can be asociated with a model.
Previously, each model had its own set of textures. In this new system, several models are able to use the same set of textures.
Our model exporting process had been really simple so far. The user would create a model, bring up a dialog that was used to associate a number of textures with the model, and then they would press one button to export the model together with its textures to the correct location in the game folder.
It is important that we do not make this process slower or more complicated since that might frustrate the artists. With that in mind the material editor was created to make it easier to work with materials. This also allowed us to keep the texture exporting process automated. I wrote the material editor in C++ and Qt.
In the end the model exporting process was made simpler since the user no longer need to assign textures before exporting, just click a button. The material editor lists all existing materials for easy editing, and it is really fast and easy to create new ones. Exporting a material to the game folders is only one click as well.
We decided to take this opportunity to pack our textures in the material exporting step. This makes it easier for artists as well as reduces memory usage, game size and the number of texture samples in shaders. This results in that our artists do not have to know where each texture should be packed, as this is fully automated (my Channel Shuffle tool is used for the packing). We save what textures were used to create each material, so if we wanted we could change the packing scheme at any point and batch export all materials.
I had planned to further improve the material editor to give the user more information regarding if a material was missing source files, if it was not exported, if the source textures had been changed since last export and so on. It would also be really cool to create an interface for associating models with materials as that part had to be done manually in an XML file. In the end there was not enough time to add these features.