A multiplayer open-world shopkeeping game by Airstrafe Interactive.
As the first Gameplay Programmer to be hired since 2019, I was involved in virtually every system and in laying the foundation for the project's code architecture. The nature of the game presented us with many obstacles - especially with optimization and memory management, that we ultimately overcame. This project has helped me learn a lot about the inner workings of the Unity engine, so I can confidently say that no matter what the problem is, there is always a solution. Below are some highlighted features that I helped develop.

Features

Open World Level Streaming

Modified Procedural Worlds' SECTR level streaming system to support loading world chunks concurrently in multiplayer. Added support for saving and loading game items in each chunk at runtime. Created a Unity editor tool for artists and designers to easily modify and export chunk scenes within the editor.

Online Networking

Converted the once-singleplayer project to support online multiplayer using Mirror. Optimized to support syncing hundreds of game objects across its vast open world.

Everything Interactable

Implemented a component-based script design that made picking up and using any prop possible. From a wooden chair to a machine gun, each item had its own unique attributes, uses, and effects on the world.

Fully Networked Dialogue System

Local and global dialogue system that is shared across players. Players can join in on an ongoing conversation and participate.

Modular Behavior Trees

All NPCs have behaviors that allow them to dynamically react to the players' actions. Created support for many different types of NPCs with different behaviors - including pedestrians, bandit enemies, animals, and law officers.

Shopkeeping Simulation

Heavy focus on creating a fully customizable shopkeeping experience. Players could build their store, rename it, decorate it, and sell anything they want in it. Support for a large variety of customer types, each with their own unique quirks and preferences.