The Fallen One
Released2024School

The Fallen One

A C++ boss rush built around demanding, multi-phase encounters

Platform
PC
Team
10 people · 4 developers / 6 artists
Time
8 weeks
Role
Boss gameplay and animation tools
About the project

What it is

The Fallen One is a solo boss rush inspired by the Horsemen of the Apocalypse. Built from scratch with C++, SFML and Box2D, it combines a grappling hook, player powers, a platforming sequence and demanding boss encounters with multiple phases.

What I worked on

My contribution

I developed the reusable spritesheet animation system used to integrate the artists' work, then contributed to the gameplay implementation of the first boss and the final encounter against Death. My work connected animation states, attack timing, Box2D bodies and visual telegraphs so each pattern remained readable during combat.

Key features

Main systems

  • Reusable spritesheet animator with configurable frame size, frame rate, offsets and looping.
  • First-boss patterns combining charge attacks, ground spikes, rat projectiles and teleportation.
  • A two-phase Death encounter with distinct attack sets, movement and animation states.
  • Box2D collisions, attack indicators, particles and camera feedback synchronized with gameplay.
Technical deep dive

How it works

Animation tooling

A reusable spritesheet workflow

I built a common animation structure that stores each state's frame dimensions, frame rate, frame count, vertical offset, loop mode and playback time. The renderer selects the correct rectangle at runtime and also supports very large spritesheets split across several rows.

  • Artists could deliver new spritesheets without requiring a custom playback system for every character.
  • Boss states switch between idle, attack, movement, spawn and death animations while keeping their own timing.
First boss

Readable attack patterns

I worked on the first boss encounter and its state-driven attack flow. The fight moves from an interactive introduction into a sequence of patterns that combine movement, animated anticipation and Box2D hit areas.

  • The boss can charge and create ground shockwaves, raise spikes, fire rats and use a teleporting rat-ball attack.
  • Each pattern manages its own projectiles, animation state and cleanup before returning to the neutral state.
Final boss

Death across two phases

I also worked on Death, a more complex encounter that changes its available patterns and animations after losing half of its health. Separate front and side states keep its movement and attacks visually consistent.

  • Patterns include a shrinking projectile circle with a safe opening, bouncing projectiles, moving danger zones, a laser dash and a central blast.
  • Crystals can create safe zones, while teleports, indicators, particles and camera shake help communicate dangerous moments.
Challenges

What was difficult

The main challenge was synchronizing long spritesheet animations with the exact moment a Box2D hit area or projectile became active. Clear anticipation, reliable cleanup and visible safe spaces were essential to make difficult attacks feel fair.

Screenshots

Gallery

The Fallen One
Gameplay overview of the boss-rush project.
Conclusion

What I learned

This project strengthened my C++ gameplay programming and taught me how animation tools, collision logic and encounter design must work together to create readable boss fights.

Stack
C++SFMLBox2DBoss AITools
Flow
Next project
Flow
Unity 20th Anniversary Game Jam, ranked 4th out of 434