Skip to main content

Client-Side Enemy Mechanics

While enemy behavior runs on the server (see ECS System), three client controllers handle rendering, input, and local feedback.

Enemy Controller​

EnemyController receives network sync data and renders enemy models.

Responsibilities​

  • Model Management — Clones enemy models from ReplicatedStorage templates on spawn
  • Position Interpolation — Lerp with 0.15 alpha for smooth movement between server updates
  • Visibility Tracking — Checks every 0.1s which enemies the player can see (fires to server for Weeping Angel mechanic)
  • Animation — Drives Quirkymal walk/idle animations on Lost Quirkymal entities
  • Petal Colors — Applies session-specific color palette to FlowerTrap meshes

Network Events​

RemotePurpose
entitySpawnedClone model, register entity
entityUpdatePosition/state sync (lerp target)
entityStateChangeTrigger animation transitions
entityDespawnedDestroy model, cleanup

Root Snare Controller​

RootSnareController handles client-side proximity detection and movement restriction.

Mechanics​

ParameterValue
Trigger radius3 studs
Tether radius5 studs
Snare duration5 seconds

Behavior​

  1. Player walks within 3 studs → snare triggers
  2. WalkSpeed reduced to 0 (immobilized)
  3. If player somehow moves beyond 5 studs, velocity cancelled and pulled back
  4. After 5 seconds, speed restored
  5. "Already triggered" tracking prevents double-activation per snare instance

FlowerTrap Drag Controller​

FlowerTrapDragController manages the escape mechanic when grabbed by a FlowerTrap.

State Atoms​

AtomTypePurpose
dragActiveAtombooleanWhether drag is in progress
dragProgressAtomnumber0-1 escape progress
dragDrainRateAtomnumberHow fast progress drains

Input​

  • Player mashes input to fill progress bar
  • Max 15 inputs per second (throttled to prevent macro abuse)
  • Progress drains continuously at dragDrainRate
  • Local drain prediction for responsive feel, synced to server

UI​

The DragBarController UI renders a progress bar with red → yellow → green gradient. At 1.0 progress, the player escapes and the FlowerTrap enters cooldown.