Projects

Dino

Odin Language

Dino
Some crash debugging tools

A hobby game engine / framework that started after trying out the Odin programming language. Dino is not aimed at being a general engine, but more specific to hobby projects focusing on tooling and technical design. A key focus for creating Dino was to learn more about the graphics pipeline.

Challenges:

Architecture and scope:
Keeping Dino’s architecture lean for hobby projects while supporting a robust graphics pipeline, avoiding the bloat common in larger engines has been a challenge. However it has also meant that itteration on general architecture and systems is fast and forgiving.

Simplified Pipeline:
Designing an accessible graphics pipeline using Odin’s DirectX11 bindings that balances learning and functionality. Dino's rendermakes it easy to customise how a game is rendered, making it easy to stylize rendering.

Tooling Without Bloat:
Creating friendly editor tools while maintaining a lightweight reusable framework where it makes sense.

Dismember plugin

Unreal Engine 5

Dino

Challenges:

Creating a custom asset editor:
Engine source was the primary source of how to do create a custom editor. I am verry familiar with how the Paper2D plugin works and used that as a base.

Edge cases:
Skeletons can be vastly different case by case. Ensuring that the tools created work well was quite a challenge.

Memory & Performance:
Avoiding using multiple skeltons and or spawning in gib Actors was hard. The standard way that Physics, Animation, and Geometry skinning works in Unreal Engine 5 is quite limiting. It was necessary to ensure that memory was kept to a minimum and that there would only be 1 skeleton animated per character at a time. this made it really easy for Artists and Designers to configure some properties and then test it immedtiatly with out needing to go through a big pipeline.

Dumb Robot

Unreal Engine 5

A cleaning-like simulator where you manage robot vacuums. With Dumb Robot, the goal was to explore Debug Visualizers and runtime Render Targets in Unreal Engine 5 in more detail along with the asset manager.

Challenges:

Texture Analysis for Mess Generation:
Converting arbitrary designer-provided textures into usable voxel mess data introduced edge cases, especially with semi-transparent pixels.

Level Dependency Management:
Ensuring MAD data was tightly coupled to the correct level while still being reusable or re-bakable when needed was a persistent challenge.

Asset Manager Integration:
Hooking MAD into Unreal’s Asset Manager system involved non-trivial setup to ensure caching, referencing, and level-specific data were handled cleanly. In the end I opted for a single asset per level.

The vacuum

Any texture can be used to generate Mess Actor Data (MAD) and a transparentcy threshold is used to aid in control for what contributes to MAD. DumbRobot MAD is built in editor and is cached to an asset for each level. The obvious downside to this is having to load all MAD data, however it is rather tiny in size and is only required at the beginning of a level.

Each Mess Actor texture has its own voxel resolution and is automatically suggests a smaller sizes or larger resolution when a new texture is selected or a designer asks for it, to keep consistancy, and performance impact at a minimum.

DumbRobot2
nice and easy to see what has been cleaned
Each Mess Actor also has a “Percent cleaned for complete” property. This helps when there is practically no mess left, but also gives an easy way to configure Mess Actors that might be only partially visible.

Untitled prototype

Game Maker Studio 2

Dino

This untitled prototype was a short project between me and a friend. I handled all the programming and my friend handled all the game design and art.

Challenges:

Game Maker Studio scripting:
Game Maker Studio 2 had only got struct support just before this project. Although it was challenging to program, it meant finding creative ways to make things work. If i was to revisit this, I would use Dino for it.

Isometric perspective in 2D:
This was my first time creating an isometric game in 2D. this meant i needed to learn new formulas for handling positions.

UI:
Game Maker Studio 2 does not have any build in UI tools out of the box, just sprites and collision, the building blocks for UI.

Gorilla prototype

Unreal Engine 5

Small project where i quickly prototyped an idea i woke up with. The goal is to collect all bananas and reach the end. Each time the player punches, they eat a banana. Running out of bananas is bad, you get too hungry!

Challenges:

Velocity tuning:
In future i would prefer to use a velocity curve which would make it much more easy to design level elements and tweak the feel for the player.