1 The PvP Challenge
Designing PvP for a turn-based browser MMO requires solving a problem that real-time games don't face: the absence of player skill expression in the mechanical sense. In VvW, when two characters fight, there's no input timing, no reflexes, no micro. The battle engine resolves it entirely from stats, gear, and skill loadouts.
That sounds like it would make balance trivial — just make the numbers even. In practice it makes balance harder. Without mechanical skill as a differentiator, stat gaps dominate completely. A level 30 player attacking a level 10 player isn't an interesting contest — it's a stomp, and it poisons new player retention instantly.
Our design goals for PvP were:
- Fair matchmaking — players should only fight opponents of comparable power
- Meaningful outcomes — wins and losses should affect standing and rewards
- Protection for new players — a fresh level 5 should not be farmed into quitting
- Faction identity — PvP should reinforce the Vampire vs. Werewolf narrative
- No pay-to-win vectors — the shop must not create insurmountable PvP advantages
The original BiteFight-style browser MMOs from 2006–2012 struggled with high-level players endlessly farming low-level ones. Our entire PvP architecture was designed to make that impossible from day one.
2 ELO Rating System Implementation
Every character in VvW starts with an ELO rating of 1000. The rating changes after every PvP battle using the standard ELO formula, with a K-factor of 32 for players under level 20 and 16 for players above level 20 (reducing volatility for established players).
The key constraint is the attack range restriction: you cannot initiate PvP against a player whose ELO differs from yours by more than ±400 points. This single rule eliminates the most common form of griefing in browser MMOs — high-ranked veterans farming beginners for easy wins.
ELO Calculation
| Parameter | Value | Notes |
|---|---|---|
| Starting ELO | 1000 | All new characters |
| K-factor (≤ level 20) | 32 | Higher volatility for new players finding their bracket |
| K-factor (> level 20) | 16 | Lower volatility for established players |
| Attack range | ±400 ELO | Hard cap, enforced server-side |
| Max attacks per day | 3 per target | Prevents single-target farming |
| ELO floor | 600 | Rating cannot drop below this |
The ELO rating is distinct from character level. A highly optimized level 15 vampire with a strong gear set can reach 1200+ ELO while a poorly built level 25 might sit at 950. This naturally creates organic skill brackets.
We considered a separate "PvP level" system rather than ELO, but ELO's self-correcting nature is exactly right for this use case. Players naturally find their bracket without developer intervention.
3 Immunity Windows & Anti-Griefing
The ELO range restriction handles matchmaking fairness, but it doesn't fully address griefing between similarly-rated players. A player at 1050 ELO can still relentlessly target another player at 1050 ELO three times per day, every day. In a small early-game community, this is toxic.
New Player Immunity
All characters are immune to PvP for the first 72 hours after account creation. During this window they can still initiate PvP themselves (the immunity is one-directional), but they cannot be targeted. This gives new players three days to find their footing without being hunted.
Post-Attack Immunity
After being defeated in PvP, a character receives a 2-hour immunity window. This prevents the most common griefing pattern: defeating a player, waiting for their healing cooldown to expire, then attacking again immediately. The immunity resets on any new PvP initiated by the immune player.
Daily Attack Cap
The 3-attacks-per-day-per-target limit is enforced with a rolling 24-hour window, not a midnight reset. This prevents coordinated burst harassment where players time attacks to reset at midnight.
All PvP attack attempts are rate-limited at the API level (separate from the in-game daily limit) to prevent automated attack scripts. Unusual win rate patterns trigger the anti-cheat audit log.
4 PvP Rewards & Gold Steal (10–25% Cap)
PvP in VvW has tangible stakes. Winning a PvP fight rewards the attacker with:
- ELO rating increase — scaled by the ELO difference (beating a higher-rated opponent rewards more)
- Gold steal — a percentage of the defeated player's on-hand gold
- PvP points — currency for the PvP rewards shop (exclusive cosmetics and titles)
- Faction score — contribution to the Eclipse War running total
The Gold Steal Cap
Gold steal is deliberately bounded. The attacker steals between 10% and 25% of the defender's current gold, calculated at fight resolution. The exact percentage scales with the ELO difference: beating an opponent 300 ELO above you yields 25%; beating someone 300 below you yields 10%.
The cap is crucial. Uncapped gold theft creates a degenerative economy where active PvP players drain passive players entirely, making the economy feel punishing rather than exciting. The 10–25% range keeps PvP consequential without being ruinous — a defeated player loses a meaningful amount but not enough to set their progression back severely.
Gold in the bank (deposited to clan storage or spent on gear) is immune to PvP theft. This creates a natural gold sink: savvy players spend or deposit gold rather than sitting on large liquid reserves.
5 The Eclipse War Event
The Eclipse War is a weekly faction-wide PvP scoring event that runs for 48 hours every Sunday and Monday. During the event, all PvP kills between Vampire and Werewolf players contribute to a running faction score. The winning faction at the end of the 48-hour window receives collective bonuses for the following week.
Scoring Mechanics
Points are awarded per PvP kill against an opposing faction member, scaled by the defeated player's ELO:
| Defeated Player ELO | Faction Points Awarded |
|---|---|
| 600–900 | 1 point |
| 901–1100 | 2 points |
| 1101–1300 | 3 points |
| 1301–1500 | 5 points |
| 1501+ | 8 points |
Winning Faction Rewards
The faction that accumulates more points by event end receives:
- +10% XP gain for all faction members for 7 days
- +5% gold drop rate from dungeons for 7 days
- Faction War Chest — a random rare item reward distributed to the top 50 scorers
- "Eclipse Victor" title — displayed next to the username for the week
The Eclipse War scoring is aggregated server-side in a single SQL query against the BattleLog table. The live scoreboard updates every 5 minutes via a scheduled job — no real-time WebSocket overhead needed.
6 What's Next
The PvP system as described is live and being actively tuned based on player data. Coming additions include:
- Clan Wars: Structured PvP conflicts declared between rival clans, with automated resolution via the scheduler and clan-wide rewards for the winning side.
- PvP Arena: An opt-in ranked arena mode with weekly seasonal resets and a dedicated cosmetics track separate from the open-world ELO ranking.
- Bounty System: Players will be able to place gold bounties on specific targets, creating emergent PvP incentives beyond the base ELO reward.
- PvP Spectating: Logged battle replays will be viewable by other players for high-ELO fights, adding a social dimension to competitive play.
DevLog #3 will go deep on game balance — the math behind the stat formulas, how we monitor win rate data, and the decisions we made when balancing life steal and wolf rage duration.
7 FAQ
Can I be attacked while I'm offline?
Yes. PvP in VvW is asynchronous — attackers initiate fights against your character's stats regardless of whether you are logged in. Your defense stat, gear, and active skill loadout determine how well you hold up while offline. This is by design: the risk of being attacked while offline is a core part of the browser MMO loop.
Does losing PvP fights permanently hurt my character?
Losing costs you ELO (which naturally recovers as you win fights) and a portion of on-hand gold (10–25%). You do not lose gear, skill progress, or levels from PvP losses. The stakes are meaningful but not catastrophic.
What is the ELO floor and why does it exist?
The ELO floor is set at 600 to prevent rating manipulation — a common exploit in browser MMOs where players deliberately lose fights to get into a lower bracket for easy farming. The 600 floor means there's no value in tanking your rating below that point.
Is there cross-faction PvP outside the Eclipse War?
Yes. You can attack any player within your ±400 ELO range at any time, regardless of faction. The Eclipse War simply adds faction scoring on top of normal PvP. Cross-faction kills always award Eclipse War points when the event is active.
How do I check my current PvP immunity status?
Your character profile page shows your current immunity status with a timer if applicable. New account immunity shows a "Protected" badge that disappears after the 72-hour window expires. Post-defeat immunity shows a countdown timer.