Hi, I'm Joshua Steinhauer

A few things about me:

  • Software Engineer (Valkyrie Entertainment, Feb 2021-Present)
  • 4+ years of professional and 10+ years of personal programming experience
  • Computer Science B.S. (Fort Hays State University)

Notable Personal Projects:


Project: Ardenfall


Ardenfall is an open world RPG built in Unity3D, and has been in development for over 4 years, with myself as the project lead and sole programmer. I have built this project from the ground up, and managed all systems to make a dynamic world possible.

Such a large task has forced me to develop habits that result in the stable and modular implementation of features. Managing a team has also taught me countless lessons, and has made me realize my passion for working with people.


Cell Loader

Allows the loading of areas in editor

Record System

Allows various objects (Such as NPC's) to be accessed externally

Prefab Window

Allows level designers to quickly find and place prefabs and other assets


World Streaming System

The world is split into cells - each of these cells are individual scenes.

During runtime, cells are asynchronously streamed in a 3x3 grid around the player.

For distance objects, a Distant Cell is generated during edit time - this consists of a lowpoly mesh terrain, and any objects tagged as 'distant'

Modular AI

AI is split up into two forms - combat and idle.

Combat takes form of attack assets - when the NPC wish to attack, it calculates a cost value for each asset, and picks the best one.

Idles takes form of packages - these are much more modular, allowing for easy tweaks depending on the NPC. This is used to make npc's interact with certain objects in an area, or go to a location at a certain time of day.

Dialog System

Built atop FlowCanvas, Ardenfall's dialog system is designed to be as open ended as possible, while also being a breeze to use.

Dialog is built with graphs, and they are modular - a single npc may get a graph from a quest, and have their own graph as well, combining into one.

Quest System

The Quest system also uses FlowCanvas, as well as its own editor to manage many different quest related variables.

Quest Objects allow for an easy reference to a character, character group, location, scene object, and more.

A Quest also contains phases and objectives, as well as macros and variables.


Last Light

Topdown defence game developed in 2 weeks in Unity (itch.io)


Game jam project developed in a week in Unity (itch.io)


Sandbox simulation project developed in Python (Github)

Unity Tools

Moss Painter

Experimental tool that paints moss onto any meshes in scene (Github)

Git Gud

Simple Git client developed in Unity (Github)

Prefab Library

Powerful and extendable world building tool that allows placement of prefabs or custom assets(Github)