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.