Hurtworld - An Open-World Surival Game for PC
Between 2014 to 2018, I worked at an independent games studio called Bankroll as a programmer and game designer. The studio was only between 3 and 5 people in size over the course of the 4 years. We created the open-world multiplayer survival game Hurtworld.
This game ran on PC, Mac and Linux and was built with the Unity engine. My role here touched most aspects of design and programming, such as networking, UI design, tools creation, and the creation of multiple complex runtime systems. There were lots of interesting problems to solve - from building a realtime icon-rendering system that could render dynamically generated items into an inventory system, to environmental systems that emulated dynamic weather and time of day, to shaders and graphics. It was a heck of an experience!
Mad Maps - A Non-Destructive Terrain Pipeline for Unity
Mad Maps was a set of tools I built in my time at Bankroll Studios in the period of 2017-2018 and then went on to sell on the Unity Asset Store as a standalone product.
Unfortunately, the IP for these tools is not in my control and so the asset fell out of maintainence, but I'm proud of this work. It helped enormously in the construction of the massive open worlds within Hurtworld, and while it was maintained I think it helped some people use the Unity terrain system a lot better. Here's the original pitch and Youtube tutorials!
An Intersection Test for Arbitrary Rectangular Prisms
Have you ever had two arbitrarily rotated and sized rectangular prisms, and wanted to check if they’re intersecting? I know I have! Just an old AABB won’t do the trick, as very snug fitting rectangular prisms need to be detected and dismissed. There are some dastardly configurations (for instance, imagine a very very small rectangular prism sitting just above the surface of a massive and highly skewed rectangular prism) which also need to be sussed out.
It turned out to be a surprisingly tricky problem, and I had to pull a lot of different things from a lot different places together to get it working.