Back to Revocure
VR - Animation - Systems

NPC Animation System

Randomized animation system for crowd NPCs with multiple character classes reacting to in-game events.

Unity URP Animator Controller C# Revocure Role: Technical Artist

// Overview

A crowd animation system that brings the stadium and arena environments to life. The system manages three distinct NPC classes - standing audience, seated audience and athletes - each with their own animation pools and behavioral responses to gameplay events.

NPCs react dynamically to what happens in the training session: correct task completion triggers positive reactions, failed attempts trigger negative responses, and during idle moments NPCs randomly cycle through up to 30 different animations to maintain visual variety.

// Gallery

NPC Animation System - Base Layer state machine with IDLE, TRENING, GOOD and BAD states NPC Animation System - full Animator Controller overview showing all transition connections NPC Animation System - standing cheer sub-state with 4 randomized Mixamo animation clips NPC Animation System - negative reaction sub-state with Disappointed, Dismissing, Sad Idle and Shaking Head NPC Animation System - Animator parameters: int_trening, IdleIndex, ResultIndex, Cheer, Sad, StartTraining NPCAnimationConfig Inspector - Sportowiec class settings with desync delay, idle variants and training cycle NPC Manager Inspector - three config slots for Sportowiec, Audience Sit and Audience Stand with broadcast buttons

// My Role

  • NPC class system - designed three distinct character classes: standing audience, seated audience and athletes, each with unique animation sets and behavior.
  • Randomized animation selection - built a system that randomly picks from a pool of ~30 animations per class, ensuring visual variety across the crowd.
  • Event-driven reactions - NPCs respond to in-game events: positive reaction for correctly completed tasks, negative reaction for failed attempts, smooth transitions between states.
  • Idle behavior - during downtime, NPCs independently cycle through randomized idle and training animations, keeping the scene feeling alive.
  • Performance optimization - efficient animation instancing and LOD-aware playback to maintain VR framerate with dozens of animated NPCs on screen.

// Tech Stack

Unity URP Animator Controller C# Animation Events Meta Quest