← projects

game · Unity · C# · 2025

Crimson Sanctum

A 2D arcade-style endless-tower platformer with an auto-moving character. Time your dashes, line up your climbs, and see how far you can ascend.

Crimson Sanctum gothic interior scene with stained-glass windows in deep red

Case study · STAR

The story

S

Situation

Crimson Sanctum is a 2D arcade-style platformer with an endless tower concept. The character moves automatically, so the player focuses on precise timing, positioning, and dash usage. The design challenge was that auto-movement removes a lot of player agency, and the controls had to feel responsive and fair without giving full directional control.

  • Endless-tower platformer, auto-moving character
  • Player agency limited to timing, dashes, and positioning
  • Performance had to stay stable across long runs
T

Task

As Gameplay Programmer, I owned the player controller, the auto-movement direction logic, climbing transitions, dash and jump mechanics, and the floor spawn system that supports the endless tower without leaking memory.

  • Player controller and movement state machine
  • Direction handling when transitioning to climbing
  • Dash, jump, and climb mechanics
  • Endless floor spawn with object pooling
A

Action

I built the player controller around a state machine so walking, dashing, jumping, and climbing could be integrated without state conflicts. The trickiest part was making horizontal-to-vertical transitions feel natural, which I solved by separating movement logic by surface context and tuning state priorities. For the tower, I used Unity's object pooling so floors could be spawned and recycled dynamically as the player ascended, avoiding the cost of repeated instantiation. I also set up the post-processing stack and wrote an outline effect using Shader Graph for the game's atmosphere.

  • State-based player controller covering walk, dash, jump, and climb
  • Movement logic separated by surface context for natural transitions
  • Object pooling on floors to keep performance stable on long runs
  • Post-processing stack and Shader Graph outline effect
R

Result

The gameplay system runs smoothly and stays in line with the design intent. The player controller feels responsive even though it is auto-movement based. Dash and climb add mechanical depth without breaking the rhythm. The pooled floor spawn system holds performance across extended sessions.

  • Stable performance during long endless-tower runs
  • Controller feels responsive in spite of auto-movement
  • Dash and climb provide the difficulty curve the design wanted
Role
Gameplay Programmer
Patterns
State Machine · Object Pooling
Polish
Post-process · Shader Graph