Made for: Sonalysts, Inc.
Date: 2021-2024
My Role: Gameplay and AI Programmer
Genre: Orbital Mechanics Simulation
Platform: Windows, Android, iOS
Overview
Black Horizon is an educational game designed to help players internalize the counterintuitive aspects of how satellites maneuver in Earth's orbit. The game consists of 57 different missions across two different campaigns (one designed for singleplayer and one designed for multiplayer), both with their own cartoony sci-fi storyline. In each mission, players take control of a satellite constellation and are tasked with performing objectives ranging from carrying supplies and crew between space stations to fighting off extraterrestrial invaders with mechs.
My Contributions
AI:
-
I single-handedly designed and built the behavior tree system used for all non-player spacecraft AI.
-
NPC craft are almost identical to player-controlled craft, so the AI system has to be capable of performing every action that a player can and of solving complex orbital maneuvering problems.
-
Furthermore, AI pilots only have access to information that a player in their circumstances would, having to rely on the same suite of scanners and information sharing systems and needing to account for the same handicaps.
- This system is node-based (built using the XNode extension), enabling our designers to create new AI types without having to touch the underlying code at all.
Scanning/Awareness:
-
Satellite platforms are (relatively) tiny and move incredibly quickly, so tracking, identifying, and then losing sight of orbiting objects is a major focus of the game.
-
When we transitioned to focusing on the multiplayer, I rebuilt the existing scanning system into a system that properly handles craft being scanned by multiple different teams of both players and NPCs.
-
I also built the uncertainty system, which models where an unsighted object could be based on its last known location, orbit, and velocity and displays an expanding "uncertainty cloud" that encompasses all possible locations.
Other:
-
I added support for multiple teams and multiple players, replacing significant portions of the code that were written when the game was singleplayer-only and that made the assumption that craft either belonged to the player or to enemy AIs.
- I was the primary developer responsible for maintaining feature parity, bugfixing, and supporting the UI for mobile platforms. I was also in charge of handling mobile builds and uploading to the Google Play and Apple App Stores.
- I added functionality for and built the passive scanning modules.
- I built several missions, both for singleplayer and multiplayer.
- I led major refactoring and code cleanup efforts that significantly optimized the game and made the code much more maintainable.
The Team
Black Horizon was developed by a fairly small team that had at most six developers at a time. We primarily worked remotely and were spread out across time zones, so maintaining good communication and collaboration was key for the project to go smoothly. We followed an agile development methodology, using Jira to track tasks and Bitbucket to host the repo and manage PR reviews. There were also daily standup meetings where we shared our own progress and roadblocks, as well as discussed the development and design of the game.
I also played a large role in the hiring process for our team: I conducted several interviews, for which I prepared my own sets of questions; gave hiring recommendations; and helped onboard new hires. The onboarding process included walking them through our processes and helping to direct them towards easier assignments that would give them a comprehensive overview of how Black Horizon was built. Additionally, most of the programmers that we recruited onto the team from other projects within the company had never worked with Unity before, and so I helped introduce them to the fundamentals and familiarize them with how we were using it for the project.
Black Horizon copyright Sonalysts, Inc. 2024