Tools
Good tools make good games
Introduction
Good tools reduces repetitive tasks as much as possible, making it fun and intuitive for creatives to do their work. Bad tools can cause a lot of frustration, and massively reduce the efficiency of a team.
Creating tools for use within a team is a lot like creating a product for the public:
- Identify a need that you can solve with a reasonable amount of resources. This means asking people on the team what they need, observing them when they work, keeping your ears open for complaints about the work process, and using the workflows yourself.
- Come up with and pitch solutions to those that would use it, maybe with a UI mockup for instance. Do they get excited by the idea? If so it’s time to make a tool.
- Create a minimal working tool in collaboration with your users.
- Market the tool within the team. No one will use a tool if they don’t know that it exists.
- Keep supporting the tool, fixing bugs and adding features as needed.
This post showcases some of the tools I’ve created over the years.
Vismut
Vismut is an open source procedural texturing tool which has been my hobby project since around 2017.
Here are some of the reasons I’m working on this tool:
- I’m interested in procedural texturing.
- I want to improve my skills.
- I want to try some new things with procedural texturing.
Here are some of the things I’ve learned about while working on this project:
- The Rust programming language.
- Continuous integration (CI).
- Open source licensing and project management.
- Software architecture.
Read the Introducing Vismut blog post for more information. The code is available on GitLab.
Receiver 2 Physics Tool
We wanted to have many physical objects in Receiver 2, so it was important to make it fast to set up new ones.
This Unity editor tool makes it easy to set up an object to be physical. just select the object, activate the tool, and select which material it should be.
The tool creates all the objects needed, sets the selected material on them, puts everything on the correct layers, and adds and configures the required components.
This tool reduced the time to make an object physical from minutes down to seconds. But the benefit of a tool like this can’t be measured only by how many seconds it saves in mechanical actions, the most important benefit of a tool like this is that it saves on brainpower.
By removing the boring and repetitive tasks in someone’s workflow, they can spend their brainpower on what matters. When people have to worry less about technical details like which thing should be on what layer, and so on, it’s easier for them to achieve flow, enabling them to do more in less time.
Kravall Level Editor
For the student project Kravall we needed a way to edit levels. I took on the task to create a solution for this, and the result was a custom plugin for Blender.
This plugin added a new toolbox to Blender to make it easy to place all the different types of objects needed for the game, as well as create a navigation meshes, and script the level.
I also wrote the script for exporting the level to the game format.
Cell Material Editor
One friction point when creating assets for the student project Cell was creating new materials. Materials were manually defined in .xml files, making for a slow and error-prone workflow.
I wrote a tool that allowed artists to add a new material in a list, and then they could browse and pick which images they wanted for the material. The name of the texture file was used to guess what type of texture it was. There was also a preview of all the maps in the selected material, making it easy to troubleshoot materials.