Hi, I'm Joshua Steinhauer

A few things about me:

  • Gameplay Programmer (Valkyrie Entertainment, Feb 2021-Present)
  • Software Engineer Consultant (TAE Technologies, Aug 2017-Present)
  • Game and Tool Developer

Notable Projects:

...

Project: Ardenfall

About

Ardenfall is an open world RPG built in Unity3D, and has been in development for over 3 years. As the only programmer, I have built this project from the ground up, and managed all systems to make a dynamic world possible. This includes world streaming, asset management, quest and dialog systems, AI, inventory and items, trading, and all other systems required for such a project.

Tools

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

Features

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.

Games

Last Light

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

Backfire

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

Sandboxx

Sandbox simulation project developed in Python (Github)

Unity Tools

Moss Painter

Tool that paints moss onto any meshes in scene (Github)

Git Gud

Git client developed in Unity (Github)

Skinned Mesh Combiner

Optimized skinned mesh combining utility (Github)

<