Gravity Well Project - Core Systems
AI Behaviors
I was assigned to re-write AI from the ground up along with another coder. I wrote many individual behaviors (firing from cover, reactions, patrolling, searching) as well as level designer tools for combat (spawn triggers, restriction areas), while code handled the fundamental jobs/behavior chooser and positioning logic.
Other behaviors I contributed to:
Enemy Captain - Our existing AI were designed as being “popcorn” and low-threat. We needed another AI to fill the gap of being a challenge for a whole squad. I decided on having an armored enemy that can place turrets around the battlefield, with a large AOE ranged attack. After my initial prototype, an engineer and animators added melee attacks.
Turrets - I wrote our turrets from scratch, including the ballistic targeting logic. I made a variety of them: armored, machine gun firing (with an oscillating spray-pattern variant), ballistic explosive, and a ballistic explosive that fragments mid-air.
AI Perception
I identified the first part of rewriting our core AI to be their perception. Our system at the time relied mostly on out-of-the-box functionality from Unreal, which proved insufficient. I re-wrote perception from scratch, with the goal of having clean states that supported the type of game we were making at the time: idle, alerted, combat, and transitions in-between. These perception states drove the AI job chooser, as well as battle chatter (which I also wrote). Eventually, when the game pivoted to being primarily melee-focused with Hades-style small room encounters, most of this was abandoned as AI became vastly simplified.
Dialogue and subtitles
Every kind of dialogue was played through my system, which was written from scratch. That included pain efforts, story dialogue, and battle chatter. I started by creating a system similar to what we had on Apex, which basically had a queue of dialogue that provided options for cancelling lines, re-shuffling them based on priority, and waiting for lines to finish for each player before playing another. Once we had that, the writing team requested a big addition:
Make Left-4-Dead style fuzzy pattern matching (explanation here). I then re-wrote the system to include this, allowing for dynamic dialogue that is as unique as the writers wanted.
I also created the subtitles system and UI to handle prioritization of what showed up on screen, with options for filtering out unwanted subtitles.
Objectives System
The objectives system was our method of injecting goals and unique gameplay into each level.
For system designers, I created a solid base to build upon that handled late-joining players, replicated updates, a seperate client-side UI system that allowed for easy adjustment, and a series of example core objectives to build upon.
From the level designer side, I created a plug-and-play system of a high-level mission that included various objectives, which in turn could “activate” whatever actors you wanted. So for example, you could fire off some custom dialogue whenever an objective started, or open some doors and spawn enemies when a countdown timer reached 10 seconds left.







