src/projects/adv-movement/page.tsx
workspace/projects/adv-movement

Advanced Movement & Animation System

Animation & Movement
Role

Gameplay & Animation Programmer

Timeline

Feb 2025 - Apr 2025

-- Preview

adv-movement.png
Advanced Movement & Animation System

-- Demo

adv-movement.mp4

-- Description

Developed a comprehensive movement and locomotion system based on a custom character state coordinator and a dynamic animation controller. The primary challenge lay in integrating over 30 separate animations (sprinting, sliding, dashing, vaulting, landing) and ensuring seamless blending and transition states. Constructed a user input routing layer mapping keystrokes to specific physical forces. Implemented a central state coordinator to handle execution priorities and eliminate state conflicts (e.g., preventing sliding during a mid-air dash). Built an animation manager to synchronize physical states with appropriate AnimationTracks. The manager handles track weights, playback priority levels, and transition smoothing to avoid visual snaps. Optimized client performance by minimizing concurrently active animation tracks. Individual physics sub-modules handle specialized movement forces, including slide friction and dash velocity vectors. Built modularly to allow simple additions of new actions. The final product resembles mechanics found in modern fast-paced action titles, delivering high responsiveness, clean animation blending, and modular scalability.

-- Technologies

Roblox APIState MachinesAnimationTracksUserInputServiceTweenService

Challenges

Orchestrating smooth blending pathways across 30+ custom animations, resolving conflicts between overlapping physics forces, and minimizing client CPU overhead from multiple active AnimationTracks.

Solutions

Designed an animation priority state machine using the AnimationTracks weight API, decoupled input-driven physics impulses from the animation system, and implemented active track pruning for idle states.

-- Snippet

adv-movement.luau
local p = workspace:FindFirstChild("AdvancedMovement")

// EOF - Built with Next.js, Tailwind CSS & Framer Motion