Skip to content

M6 · PVP: five versus five town battles

Current scope: 5v5 only. Local implementation; public release and human balance remain acceptance gates.

M6 builds on the first alpha. It uses the original Game client, Zone server, world document, renderer, authored assets, player entities, movement, combat, work challenges and crafting interface. It does not introduce a replacement arena or game engine. PVE retains the cooperative campaign and persistent saves.

Match layer

  • Blue and Red have exactly five seats each. Missing players and disconnects are covered by ordinary player characters driven by bots. Joining and reconnecting attach a human connection to a seat without refreshing its combat state or resources. For 90 seconds, matchmaking prefers other bot seats before replacing a disconnected player’s seat, but every bot seat remains available to newcomers.
  • PVP clones the campaign document into a separate map. Blue begins in Greyfen, Red in a fortified Sunken Bell town. Sunken Bell has a full stone perimeter, open road gate, houses, cobbled streets, lanterns and a layered volcanic skyline that remains visible at short view distances. Each town has two destructible archer towers and a final standard. Five road frontiers start neutral. The PVE document, colliders, terrain and saves are never rewritten.
  • Every capture and recapture is free and uses the original six-second held action (F / controller X). Gathering and crafting are optional equipment progression; PVP uses its own recipes and no quests. Neutral resource access supports both teams. Legacy autonomous campaign raids do not overwrite match ownership.
  • Original weapon attacks, blocks/parries, abilities, arrows and spells gain authoritative enemy-player targets. Team immunity and staging protection apply to direct and splash damage. Both sides receive the same Frontier One baseline; account age and PVE inventory give no advantage.
  • A 2-second warmup precedes town warfare. Capture all five road frontiers once, destroy both opposing towers, then channel the enemy town standard for six seconds to win. A full breakthrough keeps the enemy town unlocked for the round, even if a road frontier is recaptured. There is no score victory or arbitrary tie-break; 25 minutes begins town-capture overtime. Three-second respawn protection replaces permanent base immunity; out-of-combat home recovery remains vulnerable. Results remain for 30 seconds before a clean round reset.
  • Captured road towns respawn their original balanced mob roster as Blue or Red guards after 15 seconds. Fallen guards replenish after 30 seconds; enemy pressure within the holding pauses reinforcements, and occupied spawn positions stay clear. Friendly guards ignore allies and their attacks, while enemy players and bots must defeat them to recapture. Recapture transfers the next garrison to the new owner; capturing a home town still wins the round.
  • Each player’s PVP death delay increases by 15 seconds: 15, 30, 45, then 60 seconds maximum. Death counts persist through reconnect and reset each round. A new human does not inherit the replaced bot’s accumulated death count. Legacy PVE respawns are unchanged.
  • Towers are stationary authoritative combat entities with 240 health, real shield-blockable arrows, friendly immunity, no loot or respawn, and visible collapse. They are excluded from ambient territory cleanup and encounter scaling. Their remaining rubble keeps the small navigation footprint.
  • Temporary characters, work receipts and ownership use an isolated in-memory campaign database. Authentication still uses existing accounts. PVE characters and world state never enter the match database.

Rooms and matchmaking

Players choose Blue or Red before entering. Public joins prefer an in-progress public room with a bot seat on the selected team, then a waiting public room, then create a room. Full private teams return an actionable error without silently switching sides. Rejoining on a different team releases the old bot reservation only after a destination seat is available; neither seat receives refreshed combat state. Private rooms require a randomly generated 10-character code and are excluded from public listings. Each room owns a separate original Zone and in-memory database; message routing is bound to the authenticated connection. Duplicate accounts are rejected across v1 and all rooms. Rematches keep the room/code and connected teams while rebuilding temporary game state.

The launch configuration supports two rooms on the existing host, configurable with VYRGARDE_MAX_MATCH_ROOMS. Empty rooms pause and expire after two minutes (public) or ten minutes (private); a restart invalidates rooms/codes. Full capacity returns an actionable joining error. The immutable navigation occupancy grid is shared for identical geometry, with separate per-room routes. It is warmed before the server accepts connections to avoid stalling a running match on first room creation.

Player bots

Bots drive ordinary PlayerEntity instances through Zone.handleMessage. Five complementary roles use finite sight, delayed decisions, imperfect aim, normal movement/colliders, windups, bow draws, stamina, cooldowns and healing. Optional equipment jobs derive from the PVP recipes and named gathering nodes and complete the same timed work challenges as humans. Bots can gather, craft, clear defenders, capture, fight opposing players, defend, retreat and improve their equipment.

Usually two raiders intercept the opposing capture route while at least two allies keep progressing. A team behind or without a capture for 90 seconds reduces this to one; supply orders and the opening route suspend raids. Up to three bots respond to a visibly invaded town. Twelve-second assignments use public ownership and teammate line of sight, never hidden human locations. Raiders fight visible enemies, retreat when injured, and resume the assigned intercept. Once the road is secured all roles siege towers and capture the town. At most one bot per team rotates through optional upgrade work, yielding to threats and crafting cooldowns; blocked captures trigger defender searches.

Human orders supply a shared priority for one minute. There is no extra damage, health, free capture material or skipped work challenge for a bot-heavy team. A three-human/two-bot team against one human/four bots is a supported population layout. Real human sessions are required to establish its competitive balance.

Acceptance and evidence boundaries

Area Required check
Original alpha preserved Verify the PVE source stays unchanged, PVP clones it idempotently, both towns are reachable, and the changed player journey renders.
Authority Enemy-only combat, guard, projectiles, protection, capture prerequisites, real work/material spending, fixed slot cap and finished-round rejection.
Continuity Takeover, disconnect/reconnect and repeated rounds preserve the right state; v1 records remain isolated.
Bot rounds Multiple seeds with winners and measured captures, gathering and crafting on the real Zone; report stalls and side bias.
Human validation Keyboard/controller sessions, three humans versus one plus bots, comeback opportunities and clear next actions.
Hosted capacity Measure ten clients on the intended host, including combat, join bursts, network traffic, tick latency and client frame time before a public release.

npm run simulate:clash -- SEED 2700 runs the real game headlessly. npm run test:clash checks the match integration. Simulation is evidence for tuning, not proof of human balance. No larger team mode is part of this milestone.

How to play PVP · Roadmap · Original campaign guide