Gameplay Programmer
public void StartResurrection()
{
if (HasResurrected || IsResurrectionActive) return;
StartCoroutine(ResurrectionRoutine());
}
private IEnumerator ResurrectionRoutine()
{
IsResurrectionActive = true;
animationController?.SetIsResurrecting(true);
yield return new WaitForSeconds(1.0f);
float timer = 0f;
while (timer < resurrectionTime)
{
timer += Time.deltaTime;
yield return null;
}
SpawnMinions();
animationController?.SetIsResurrecting(false);
HasResurrected = true;
IsResurrectionActive = false;
}
Goal:
Design a mechanic for an enemy that triggers only once under the right corrections and spawns enemies as part of the gameplay loop.
Implementation:
I implemented a state-driven coroutine system to control the resurrection flow. Used boolean state checks to prevent duplicate
triggers. Leveraged a Unity coroutine to manage timing without blocking gameplay. Structured the sequence into clear steps: trigger, animate, delay, spawn, finalize.
Result:
This system was used in a boss encounter in order to apply pressure at the start of each new phase which increased the difficulty for the player.
Goal:
We wanted to make a boss feel responsive to the environment around the player and the
playstyle the player takes on. Attacks vary based on the distance the player is at from the boss,
however, we wanted to still have clear combat patterns.
Implementation:
I implemented a phase-based AI using Unity's behavior graph system, that incorporated navigation
and combat running in parallel. I also created a custom weighted composite node in order to have it
select the attacks dynamically based on player distance. This allows the boss to adapt and feel more fluid.
Result:
Blackboard variables coordinate states across systems and scripts (attackFinished, comboLanded, alreadyResurrected)
A custom weighted sequence composite that evaluates player distance and applies weighted randomness
to attack selection
Decision logic is decoupled from execution, allowing attack logic to be added or tuned without modifying
scripts which makes it easier for designers to tweak.