-
Notifications
You must be signed in to change notification settings - Fork 0
Characters
Home · Gameplay · Enemies · Multiplayer
Every run selects one of eight gameplay classes. The selection applies in Classic, Tutorial, and Multiplayer. In first person, the player sees a weapon viewmodel; the selected class is represented by an invisible local shadow caster and by a full 3D avatar for remote multiplayer players.
The class models below are rendered directly through the implemented character builders, with one evenly sized slot per class. These are the remote/multiplayer avatar models; first-person gameplay uses weapon viewmodels instead.

| Class | Visual identity | Active ability | Cooldown / duration | Passive |
|---|---|---|---|---|
| Ranger | Green hood, glowing eye band, quiver | Dash | 5 s / instant | −10% ability cooldown |
| Scout | Gold cap, visor, backpack | Adrenaline | 11 s / 4 s | +12% movement speed |
| Heavy | Red armor, helmet, oversized pauldrons | Bulwark | 15 s / 5 s | +20% maximum HP, −8% speed |
| Operative | Dark tactical helmet and quad-tube NVGs | Overclock | 15 s / 5 s | +10% headshot damage |
| Pyro | Orange fire-themed suit and bright visor | Firestorm | 13 s / instant | +6 flat damage on every bullet hit |
| Medic | White and red field uniform | Field Triage | 14 s / instant | Regenerate 0.5 HP/s out of combat |
| Engineer | Yellow-brown work gear, cyan visor | Demolition | 12 s after detonation | −15% reload time |
| Phantom | Dark violet stealth suit, glowing purple accents | Cloak | 15 s / 4 s | +15% Phantom pickup duration |
Class jump multipliers range from 0.94 (Heavy) to 1.06 (Scout). There is no separate class-specific player hitbox value in the implementation; class selection changes abilities, passives, jump multiplier, visual model, shadow silhouette, and multiplayer replica metadata.
Dash is a 0.24-second, 2.9× speed charge in the input direction. It tramples enemies in its path: one target may be lethal, while other targets are heavily damaged and shoved. Nearby barrels can detonate during the charge. Dash briefly applies a cinematic time slowdown and uses the standard ability cooldown system.
Adrenaline activates the same speed state used by the Speed pickup for four seconds. The active effect is a 1.75× movement-speed surge, compounded with applicable modifiers.
Bulwark raises the shared directional riot shield for five seconds. It absorbs front-arc incoming damage up to a 160-damage pool, then shatters. It is not an invulnerability bubble; attacks from outside the front arc can still deal damage.
Overclock instantly refills the active weapon's effective magazine and applies both unlimited ammunition and the Overcharge buff for five seconds. Overcharge is 1.6× damage and 1.8× fire rate.
Firestorm performs a local rocket-style blast with 70 base damage plus a large fire-nova presentation. It uses the same area-damage path as the rocket, including distance falloff and multiplayer host reporting.
Field Triage restores up to 18 HP, capped by maximum health. It is deliberately a small stabilizing heal rather than a full reset.
The Engineer's ability is two-stage:
- Stand within 5.5 units of an unwired explosive barrel and cast to wire it. Arming takes one second and grants a short 1.3-second follow-up gate.
- Cast again to remotely detonate it. The armed barrel is upgraded to at least 9.5 blast radius and 220 damage, then the full 12-second cooldown begins.
Only one bomb can be armed. A held remote detonator occupies the same left-hand space as a shield, so the Engineer cannot wire while a shield is active or raise a shield while the bomb is armed.
Cloak makes the player untargetable and intangible to enemies for four seconds. Enemies do not begin melee attacks or ranged charges against a cloaked player. The class passive extends the duration of a Phantom loot pickup, and also applies to the active ability duration calculation.
All classes share the same base first-person movement system, then apply class passives and weapon-weight effects. Supported movement animations and feedback include idle sway, walk/run bob, ADS, strafe lean, jump/landing inertia, recoil, reloads, weapon inspection, class cast effects, camera impulses, and screen pulses.
Remote multiplayer models animate walk/idle, crouch, aim pitch, held weapon pose, death collapse, billboarding nameplate, and health bar. Their player class and current weapon replicate with position, rotation, health, and crouch state.
- Solo and Tutorial use
CharacterSelectbefore the run. - Multiplayer has unique class ownership in the lobby; a class card can be unavailable if another player has selected it.
- The selected class is broadcast as
modelClassand drives the remote avatar builder as well as the class modifiers at match start. - The local class casts a weapon-aware full-body shadow, but the shadow itself does not change hit detection.
Implementation references: src/utils/CharacterAbilityRegistry.ts, src/utils/CharacterPassiveRegistry.ts, src/utils/CharacterModels.ts, src/utils/LocalPlayerShadow.ts, src/App.tsx.