Here is where I present short excepts of the tools that I have made for game engines. I have created tools for multiple game engines, such as Unity and MonoGame. Many of the tools where made using C# and a GUI Library like Unity’s IMGUI or Windows Forums (WPF).
Behaviour graph is a Serialized Data Structure Editor or visual scripting tool, which compiles it’s behaviours using an Abstract Syntax Tree. It supports templating, so a single graph can be used multiple times across multiple characters.
Different contexts can be used, so that the behaviour could apply to multiple characters. For example, a sword could apply a debuff to the enemy it hit for 3 seconds. The values for the debuffs intensity and duration can be sourced from the item.
It supports referencing sub-graphs and passing values into the graph. To do so, I created a sub-graph input node, which allows other graphs interact with the sub graph. This is especially useful for putting a buff into it’s own graph (which could also hold information about the buffs tooltip, icon and visual effects) and passing values into it.
Behaviour Graph was developed as an alternative to Reflection Inspector to create modular behaviours. I created Behaviour Graph shortly after Reflection Inspector to address all of the flaws in Reflection Inspector.
As the name implies, Reflection Inspector uses reflection to generate the inspector. This is fine for most cases, Unity’s inspector on the backend also uses reflection to compile most of it, however it doesn’t interact with the serialization of the object, which is done completely separate to Reflection Inspector.
Skill Tree Graph Editor
Below is a custom editor I created for “Eitr”. It contains a graph of nodes that are rendered Graph of nodes that can be interested with, dragged and connected with other nodes to form complicated chains of nodes.
- Lag Free: The graph uses a custom rendering solution instead of Unity’s IMGUI, allowing for advanced rendering and high performance.
- Customizable Themes: Change the theme to match the final product in-game using an Asset Based workflow.
- Easy to Use: Drag and Drop node templates onto the graph from the project or a built-in shelf.
- Patterns and Graph Importing: Drag another graph into the graph to import it as a pattern.
Radient is an Asset I create for the Unity Asset Store to allow the user to create dynamic gradient textures right inside of Unity, without having to leave the game engine to find another solution to create a shader ramp like Photoshop. It allows for extremely rapid iteration
I also created a colour framework to go along with Radient, allowing me to blend in multiple colour spaces such as RGB, HSL, XYZ and LAB. This allowed me to create transitions between colours such as red and green to be smooth and realistic.
I also created an exporter, allowing users to bulk export the gradients for use in other game engines or for presentation.
The Reflection Inspector project is my fully custom inspector system for Unity and bespoke engines with custom tools.
I started the creation of the Reflection Inspector system when Unity’s serialisation didn’t support abstract classes for the purposes of a modular item system on Eitr.
With ReflectionInspector you can select what type a class is from a dropdown list and it will generate a new inspector for the object. This allows for infinately complex modules on a single ScriptableObject – especially useful for items or modular mechanics.
This allowed for a powerful item system. Instead of relying on abstract classes to create item behaviours, the team behind Eitr can now combine all the behaviours onto a single item.
AssetIcons is a tool built for Unity to draw a ScriptableObject icon in the project window.
The map editor script allows integrating of an Excel document to enter a pattern into the map file.
The Tile Editor is used to procedurally place tiles and change their textures dependent on certain conditions.
This is a very performance efficient approach to this task because it doesn’t perform any unnecessary checks.
For example, if there is a tile to the right of a tile and a tile above the tile, then there is no need to check the upper right tile.
Portfolio Tools Pack Editor
This was a custom editor project which makes the process if taking screenshots extremely simple.
It has a shortcut assigning system which procedurally generates code to hook to Unity’s global editor events. It also has every tool you may need when taking screenshots such as the ability to change resolution and file naming.