🔞 Age Verification · Ravenspire

Are you 18 or older?

This site is strictly for adults 18+. Virtual entertainment only, no real money gambling.

Combat

Inside Our Tab-Target Combat: The 200ms Rule

Every combat system in every MMORPG since 2001 has been secretly fighting one boss: the latency between a player pressing a key and the server admitting something happened. In Ravenspire, we call this the 200ms rule. Every swing, every cast, every dodge is designed around it.

Why 200 milliseconds?

Studies on competitive reaction time put the floor of human reflex at roughly 180ms for visual stimulus and around 140ms for auditory. Most console controllers poll at 1000Hz. Most routers add 20-40ms of jitter. We have a theoretical ceiling of about 160ms for server-side acknowledgement before the player starts perceiving delay as “lag.”

So we built the combat system to be responsive under 200ms of round-trip time — 100ms up, 100ms down — and used aggressive client-side prediction to hide everything else.

What that means in practice

When you click your Knight's Shield Bash ability:

  • Frame 1 (0ms): Client animates the wind-up. Ability enters cooldown locally.
  • Frame 2 (1-50ms): Packet fires to server. Client continues animating.
  • Frame 3 (50-120ms): Server validates — target in range, cooldown not active, not stunned. Computes damage.
  • Frame 4 (120-180ms): Damage packet returns to affected clients.
  • Frame 5 (180-220ms): Client plays hit reaction, shows damage number, updates target HP.

The player perceives the swing as instant. The server retains authority. If the server rejects the ability (out of range, stunned), the client gets told within 120ms and reverses the animation with an “interrupt” micro-animation that has been playtested to feel less jarring than a hard cancel.

The hardest problem: positional combat on latency

Ravenspire has true positional hits. A Silver Ranger's Aimed Shot requires line-of-sight on the server side. A Phantom Ranger's Shadow Step teleports four meters behind the target — based on where the server, not the client, believes the target is standing.

The only lie we allow the client to tell is movement prediction. Everything else is server-authoritative.

This means your positional abilities are always evaluated against the 80-120ms-old server state. In closed alpha we ran a study: players on 150ms+ connections landed 8% fewer Shadow Step attempts than players on 40ms. We capped backstab targeting windows to 1.2 seconds post-cast to absorb the worst of that.

Zealot's Frenzy and the self-damage exploit we almost shipped

Destroyer's Zealot's Frenzy trades health for damage. In an early build, because health is client-predicted, a clever player could rapid-tap the ability to self-damage to near-zero, then back off, triggering a defensive buff that was tied to “low health”. Server validation caught it but not before a test group farmed 40-player-worth of world-boss credit in 12 minutes.

The fix: any ability that modifies the user's own resources is now evaluated against a 250ms smoothing window on the server before the buff triggers. We also added a per-ability “state-changing” flag in the combat event schema so future abilities can opt into the same protection.

What's next

Closed beta starts in April. The first thing we will be watching is Zealot's Frenzy pickup rates, Shadow Step success rates by ping, and whether our hit-feedback window is tight enough for tournament-level PvP players. Expect a follow-up post after the first beta weekend.

See you on the battlefield.

— Thane