A downloadable game

Super Vault Boy

A technical demonstration showcasing advanced 3D character control systems in Godot 4.4, featuring fluid camera movement (built upon my third-person camera controller that provides Mario Odyssey-style camera functionality), state-driven animations, and reactive facial expressions. 


Core Systems

State-Driven Animation System 

Implemented a BlendSpace2D-based state machine that seamlessly transitions between player states: 

  • Ground Movement: Idle → Walking → Running with smooth speed-based blending 
  • Aerial States: Jumping → Falling → Landing with proper apex detection 
  • Smart Transitions: Context-aware state changes that feel natural and responsive 

Dynamic Facial Animation System 

Created a texture-swapping facial controller that responds to gameplay: 

  • Facial expressions automatically change based on player state 
  • Neutral (idle), Smug (running), Shocked (jumping/falling) 
  • Easily extensible system supporting 8+ expressions 
  • Material override system for performance-efficient texture changes 

Professional Blender-to-Godot Pipeline 

  • Custom character modeled and rigged in Blender 
  • Animation retargeting in Godot 4.4 for seamless integration 
  • Optimized mesh and material setup for real-time rendering 

Animation Architecture 

The UnifiedPlayerController uses a two-axis BlendSpace2D system: 

  • X-axis: Movement speed (Idle → Walk → Run) 
  • Y-axis: Vertical state (Ground → Jump Start → Jump → Fall) 
  • Smooth interpolation between animation states prevents jarring transitions 

Modular Effect System 

Auto-discovery system for audio and particle effects: 

  • Jump, land, and run effects tied to state changes 
  • Continuous effects (running particles) vs one-shot effects (landing) 
  • Decoupled architecture for easy expansion 

State Machine Design 

Clean separation of concerns: 

  • State calculation logic 
  • State transition handling 
  • Animation blending system 
  • Effect triggering 
  • Facial expression management

Each system operates independently but coordinates through the state machine, making the codebase maintainable and extensible.