A time management game with a bit of a defense/bulletstorm (beerstorm?) twist. Mix up some drinks, load them into a cannon, then blast your customers with their orders - which I suppose gives a new meaning to getting blasted, heh 🍺!
My Contributions to Barheim
Lead Game Engineer
ToolsUnity3D PlasticSCM (UVCS) Azure DevOps Jenkins FMOD Articy Miro
I was accountable for the technical planning and implementation of the game in an engineering team of four people (including myself).
Engineering Management
One of the primary goals was to have a game within a year which I accomplished by staying on top of scope negotiation, feasibility discussions, risk identification, task estimation and resource allocation within my department.
I also made sure that each member of the engineering team would get the opportunity to work on core gameplay, and have their achievements visible to the reast of the project members.
Initial Architecture Planning
During pre-production, I took point on planning the initial architecture for the game using UML - the primary purpose was to get a better sense of what the scope was and how to best divide the workload among members of the engineering team. The UML diagrams I set up were mostly guidelines as I wanted my teammates to have as much autonomy as possible.
Defining Done-ness
Defining what “done” meant for tasks was important for maintaining quality and managing expectations. This includes things like:
- Setting up automated tests
- Writing API documentation
- Writing README files for tools
- Early alignment check with the design team
- QA testing
Build Automation
I set up a Jenkins build server that was responsible for running our automated tests, preparing builds, deploying the builds to our company SharePoint, and sending notifications over Slack.
Re-usable Code Libraries
I set up several code libraries that are accessible to Dusk Wave Arts employees via the Unity Package Manager. Here are some of my favorites:
- Bootstrapper - an extensible utility for easily and explicitly setting up the order of initialization for any system. Internally, it’s an abstraction of
[RuntimeInitializeOnLoadMethod]
. - Spatial Query - allows us to set up “zones” and be able to track visitors in each zone with ease. Also includes helper functions for field of vision and line of sight checks.
- Service Locator - a simple service locator implementation, super handy!
- Update Manager - a service that allows us to easily manage the pause states and update timing of groups/categories of objects.
Some Hands-on Work
Here are some of the features I worked on directly:
- The Brewcannon’s cylinder
- Animation utility for controlling the way the cannon’s cylinder rotates.
- The number chambers on the cannon change as the cannon is upgraded, and the color of each chamber changes depending on what gets loaded into them.
- FTUE stuff, tutorials.
- A Python script for procedurally generating input prompt glyphs.
- Build profiles where each profile contains a custom set of Script Define Symbols and can be selected via CLI.