Tools Programming

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

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.

nearby-characters.png

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.

_4396572dbc958c04a7e6bbc036d61099-gif

I later in my career adapted this to become a custom state machine system I used for AI. I found Unity’s Animator quite limiting, and creating my own was quite freeing.
This tool was made for Unity, however, I avoided almost all of Unity’s built-in UI instead opting to create my own rendering system to allow for drawing of much more in the editor windows. This allowed my custom node editor to render 100,000 nodes without any performance issues.

Features:

  • 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.

_e20b54280bec797910be31a29150b3ce-gif

Radient

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

Gradient Editor

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.

Fire Asset

I also created an exporter, allowing users to bulk export the gradients for use in other game engines or for presentation.

Exporter

Reflection Inspector

The Reflection Inspector project is my fully custom inspector system for Unity and bespoke engines with custom tools.

Reflection Inspector

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.

Abstract Type Selection

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

AssetIcons is a tool built for Unity to draw a ScriptableObject icon in the project window.

Screenshot 1

Map Editor

The map editor script allows integrating of an Excel document to enter a pattern into the map file.

c29f20f59a9fc61be8753f9fc631bbe5

Map Editor of “Crypt Crawl”

Tile Editor

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.

cdedea16fff41ae04dd0de0e94d442aa

Tile Editor of “Crypt Crawl”

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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s