Fast paced arena shooter

Cell is a first person shooter game created by 13 students at The Game Assembly over 10 weeks of half time work.

My contributions

Material editor

For this project we decided that using atlases for the textures would be a good idea to reduce vram usage and simplify texture edits. To make this possible I designed a material system and created a material editor. A material is made up of several textures (color, normal, roughness and so on).

Material editor

Previously, each model had its own set of textures. With this new system several models can use the same material, making it easier to make changes to all objects sharing a material.

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.