Professional Work

Projects I've worked on as part of my job at Half Full Nelson

Democracy Quest

Tools: Unity, C#, XR Toolkit, ShaderGraph, Custom UPM Assets

Platforms: Meta Quest 3

Democracy Quest is an instructional VR experience developed with the support of the US Department of Defense. Players travel to various locations and times in US history to interact with everyday people and learn what life was like. Unlike most historical games that focus on the figures looming large in history, DQ focuses on the periphery, zooming in on individuals like you and I.

This project represents a nice refinement of previous work HFN has done. In particular, using various shader techniques to maximize device performance while keeping high quality visuals has been paramount for this project.

Early screenshot of the custom UPM (Unity package manager) packages we developed and have since implemented in our projects going forward. Compared to the old DLL-Unity package approach, updating our core codebase across projects is now much faster and waaaaaay more pleasant.

  • Refined the graph based dialogue tool developed in Crimson Dilemma to support audio, and integrated 3D model and animation support to allow for more detailed actor interactions.

  • Developed a generic tag system to allow interactable items to be ascribed attributes without needing specific code to be written. Tossing an ink bottle into a soup kettle would make the soup inedible, for example. While tossing bread into the (non-toxic yet) soup may elicit a comment about flavor from an actor. Tags can be managed by designers to encourage emergent gameplay.

Your PortrAIt

Tools: Unity, C#, URP, VFX Graph, Twilio, SendGrid, TensorFlow

Platforms: iOS

Your PortrAIt (pronounced “your portrait”) is an iOS museum experience developed in coordination with the Salvador Dali Museum that allows users to take a selfie and process it into one of several artistic styles. This is not simply an image filter, but proper image generation using machine learning based on publicly available works of art. Museum goers have the option to send their stylized portraits to their phone or an email address, or print them at the museum.

Inspector for a style transfer stack profile. Stack segments can be enabled and ordered as desired, allowing non-programmers to develop and adjust art styles.

  • Developed the "style transfer stack" system allowing non-developers to add, adjust, and rearrange image processing steps and effects arbitrarily for each art style.

  • Integrated ONNX models to allow runtime applications of art styles to input images.

  • Learned how to properly convert image color space values for image processing operations and output results. (This was a big gatcha for the artists we worked with)

  • Integrated with Twilio, SendGrid, and other backend APIs to send user portraits to either a mobile phone number or an email address.

Crimson Dilemma

Tools: Unity, C#, GraphView API, Addressables

Platforms: Web

Crimson Dilemma is an instructional web experience developed for the Kelly School of Business at Indiana University. Players interact with a cadre of business personalities as they grapple with ethical dilemmas encountered in the business world.

Had a lot of fun with this project! The characters and backgrounds were pulled from an old Flash project that no longer functioned. We didn’t have the source files unfortunately so we had to upscale what we could for modern displays.

I developed a graph based tool for writing dialogue, along with a variable system to track player decisions and alter future conversations. The characters each had a dataset associating emotions and poses with sprites to allow

Node based tool used to write dialogue. Writers can specify speaker data, text, and player options. It’s also possible to set data values, fire events, play sounds, and more to affect gamestate and display effects.

  • Developed a graph based tool for writing dialogue along with a variable system to track player decisions and alter future conversations.

  • Characters have datasets associating emotions and poses with specific sprites, allowing dialogue to drive character emotes. This data is loaded via addressables so it can easily be unloaded from memory when it is no longer needed.

  • Player decisions are tracked so course instructors can track student responses for class discussion.

Future Reality Portal

Tools: Unity, C#, Custom URP + Shader Graph, VFX Graph, Timeline

Platforms: Meta Quest 2 and 3

The Future Reality Portal is a VR experience developed in coordination with Indiana University to aid in substance abuse rehabilitation. Players are guided through conversations and activities with their future self to see the potential effects of succeeding, or failing, to continue their efforts to recorver.

This project has evolved over time from an experience using Windows XR headsets to the Meta Quest 2 and 3. Porting required some effort as we went from a headset connected to a powerful device in a controlled environment to a portable headset with... not that. It was a fun challenge to rework and polish the project to allow a good take home experience for players.

Example of the effector-keyframe blending setup. Custom editors for state machine behaviours allow for easy adjustments on profile assets that can be reused across states.

  • Developed custom shader graphs for various visual effects like dissolving walls and simulated sub-surface scattering in the custom URP pipeline.

  • Created system for blending between keyframe and effector based animations via animator state transitions.

  • Wrote numerous classes to drive game behavior and visuals via Timeline.

  • Created progression system to track player as they complete activities and celebrate milestones.

Action Citizen

Tools: Unity, C#, Shader Graph, Addressables, XCode

Platforms: Web, iOS, Android

Links: Homepage

Action Citizen is an educational game that informs players how decisions made by them and their government can affect the environment. Players are taught about how people can cooperate to combat issues facing them and how they can impact their world in a positive way.

Gameplay is a combination of educational activities like examining primary source documents for cultural and historical context, and minigames relevant to each module’s theme.

  • Utilized addressables to keep initial web and device install size small, as well as manage memory for WebGL and provide content updates without requiring rebuilds.

  • Created a card minigame where players try to balance personal and civic actions against their ecological and environmental costs.

  • Some of the UI uses custom shaders to procedurally replicate comic printing techniques like Ben Day dots.

  • Created a system to reliably detect user devices and confine UI to the devices' safe area so things like phone notches do not affect gameplay.