top of page

Coldsnap

Icebreak Studios - Capstone Project

Enemy AI and Gameplay Programmer

October 2025 - Current

Gameplay footage.  Displays player attacking, upgrades, heat meter/generator activation, and all types of enemies in the game so far.

Project Details​

  • Unreal Engine 5.6

  • 19 person team

  • Currently 22 weeks in development

Game Overview

The player assumes control of a robot traveling to the core of a frozen planet. They navigate the cold, abandoned landscape, left desolate due to over-exploitation of the planet's core as a valuable resource for advancing the efficiency of their robotic workforce. With no company to answer to, the workforce has lost control. The player's goal is to survive what is left of these robots, using core-powered upgrades to survive and fight

Gameplay consists of simple, two button attacks that can be combined in sequences to trigger new attacks, collection of upgrades that can be attached to different parts of the player character for different effects, and several types of enemies with different attack types and ways they patrol around the player.

Responsibilities and Code Examples

Enemy AI

There have been 6 types of enemies I have developed behavioral AI for so far.

  • Shockers

     

    • Small enemies with jump attacks that bounce between points, lock onto the player, and launch themselves towards the player position

    • ~10 hours

  • Collectors

     

    • Medium-sized melee enemies that, when the player is in range, follow the player and do collision attacks on a timer

    • ~6 hours

  • Torchers

     

    • Medium-sized long range enemies that shoot projectiles towards the player

    • ~ 6 hours

  • The Harvester

    • Miniboss enemy that patrols to points within a radius of the player and has three types of attacks

       

      • Melee attack works similarly to the Collectors' attack

      • Long-range projectile attack that works similarly to the Torchers' attack

      • Long-range attack that launches a projectile upwards, tracking the player position until it is at its maximum height, then homing onto that position

      • Ram attack where the miniboss randomly locks onto the player's position, waits, then charges at them.

  • Flying enemy

    • The flying enemy moves along the nav mesh as a normal enemy, but in its patrol state, moves the mesh up and down to mimic the look of flying haphazardly.  ​

    • When detecting the player in perception, it will launch itself on a spline towards the player.  If the player does a special combo on collision with the enemy, it will be hit back.  Otherwise, it explodes and does damage to the player.

  • Final Boss

    • The final boss has several attacks, adapting the formulas of the smaller enemies' attacks so the player uses what they've learned along the way to attack.  This includes a melee attack, a bomb attack (flying enemy), and a unique laser attack.​

    • The laser attack uses two warning vfx that will narrow in on the player's position and once narrowed in, shoot lasers that will harm the player.

  • ~300 hours​

All enemies use the Unreal Engine AI Controllers and State Trees for their behavior, with every type of enemy inheriting from a base enemy controller and adapting their own controller and tree for their specific patrolling and attacking behavior. Each tree travels between a root, patrol, agrro, and stun state, with each sub-state having more specific state tree tasks defined for their behavior. Behaviors are defined in combination of State Tree Tasks and actor blueprints as appropriate, with transitions controlled by parameters and entry conditions.

Video of Shocker, Collector, and Torcher enemy interactions in game with the player.  Enemies are shown patrolling and attacking the player.

Screenshot 2025-11-11 163158.png

Example of a state tree task, specifically the spring attack task for the shocker enemy.  When the task starts, it executes a spring function, shown above, which calculates the direction between the enemy and the player, then launches the enemy with an add impulse node in that direction.  It then calculates the distance between the player and enemy to determine if the attack will start again, or if the enemy will go back to patrolling.

Video showing "Mortar attack" from the miniboss.  Attack launches a projectile in the air that tracks player position until it drops

Miniboss behavior state tree for the patrol, aggro, and stun states.  While patrolling, AI executes a task looking for move points within player range, then in aggro, chooses between a melee attack or long range attack based on distance from the player, and conducts several types of long range attacks based on randomization and priority.

Screenshot 2025-11-11 163444.png

Example of a blueprint for long range attack type  This is the "Mortar" attack on the miniboss, the projectile that homes in on the player's position.  This section of the blueprint uses a timeline and spline to lerp across the spline's points, positioned in an arch.  It calculates when the projectile is at its highest point, and gets the player position, separates from the spline, and lerps towards that position instead.

Video of in-progress flying enemy patrol movement.  The enemy haphazardly moves up and down in the area.

Blueprints controlling flying enemy patrol behavior, choosing patrol points (based on all enemy inherited behavior), and choosing points on the Z-axis to move the mesh up and down.

Video of in-progress final boss behavior.  The boss patrols around the area, then commences attacking when the AI perception component detects the player, like other enemies.  Once detected, the video shows the bomb attack launch and the laser attacks.

Blueprint examples controlling laser attack for the final boss.  It locates t he player, moves VFX indicators towards the player, then shoots wo harmful lasers at them.

  • png-transparent-itch-io-a-mortician-s-tale-milkmaid-of-the-milky-way-the-fall-itch
  • GitHub
  • LinkedIn
bottom of page