ValheimBattleRoyale
Server-authoritative Battle Royale safe zones for Valheim with shrinking circles, synchronized timers, map overlays and configurable zone damage.Valheim Battle Royale
Server-controlled Battle Royale matches for Valheim with shrinking safe zones, synchronized timers, map circles and configurable outside-zone damage.
Installation and upgrade
Requires BepInEx for Valheim. Install 1.1.1 on the server and every participating client. This release uses protocol 111 and is incompatible with previous releases.
For manual installation, place ValheimBattleRoyale.dll in BepInEx/plugins/. Replace the previous DLL and remove duplicate copies. Restart the server and clients after updating. The configuration file is BepInEx/config/com.xtasy.ValheimBattleRoyale.cfg.
Features
- Server-controlled match start countdown and zone transitions.
- Current and next safe zones with configurable waiting and shrinking times.
- Server-authorized outside-zone damage, applied by the owning client.
- Automatic PvP during matches.
- Safe-zone circles on the map and minimap.
- TextMeshPro HUD with English and Russian text.
- Administrator commands, configurable hotkeys and rate-limited diagnostics.
Quick start
- As an administrator, set an initial zone with
br here 1000, or Shift + left click on the large map. - Start the countdown with
br startor F7. - Set a next zone using
br nexthere 500or Shift + left click on the large map. The waiting phase precedes shrinking. - Stop the match with
br stopor F7.
Zone controls require administrative access. Map shortcuts are configurable. Map commands are blocked during text entry and menus, and require a pointer hit on the map.
Commands
| Command | Action |
|---|---|
br start / br stop / br toggle |
Control the match |
br status |
Display local match/synchronization information |
br zone <x> <z> [radius] |
Set the initial/current zone |
br here [radius] |
Set the initial/current zone at your position |
br next <x> <z> [radius] |
Set the next zone |
br nexthere [radius] |
Set the next zone at your position |
br cancelnext |
Cancel the next zone when allowed |
Default map controls are Shift + left click to place/move a zone and Ctrl + left click to cancel a zone. Cancellation prioritizes NEXT; cancelling CURRENT can stop the match. Zone changes are restricted during shrinking.
Changes in 1.1.1
- Fixed locally issued host/server commands failing to read their packets.
- Fixed living characters with an absent health field being skipped by outside-zone damage.
- Added verification of the actual transport peer, message direction and destination before BR RPC routing.
- Added rate-limited diagnostics for rejected packets and absent explicit health values.
- Fixed PvP notification filtering, preservation of the original PvP setting across respawns and map input focus.
- Corrected server state-age reporting and added HUD component recovery/diagnostics.
See CHANGELOG.md for details and previous release notes.
Diagnostics and limitations
Enable diagnostic logging in the plugin configuration and collect BepInEx/LogOutput.log from the server and affected clients. Check that all participants report version 1.1.1. A missing or incompatible client mod cannot participate correctly; the server waits for its state acknowledgement before sending zone damage.
This release addresses all confirmed critical and P2 findings from the October 25 review, including PvP notifications, restoration across respawns and map input focus. Disabled or missing HUD rendering components are recovered, with additional diagnostics. The reported missing HUD on some clients has not yet been reproduced conclusively. Client-side damage application is not an anti-cheat guarantee.
The DLL compiled successfully against the available local game/BepInEx libraries. 478 critical-fix checks and 210 zone serialization checks passed. No live multiplayer or HUD rendering test was performed; a multiplayer validation run is still needed.
License
MIT. See LICENSE.
Zone-status logging
Zone and successful damage messages remain enabled when Diagnostics.Enabled is false (30-second repeats). When enabled, outside-zone status and successful damage messages repeat every 5 seconds, and safe-zone status every 10 seconds. Entry/exit transitions are logged immediately. General diagnostics still follow their existing settings.
Outside-zone warning appearance
Client-local settings in BepInEx/config/com.xtasy.ValheimBattleRoyale.cfg:
[UI]
OutsideWarningTopPercent = 20
OutsideWarningFontSize = 25
OutsideWarningTopPercent (0-100) sets the warning center's distance from the top as a percentage of screen height; the rectangle stays on screen. OutsideWarningFontSize (12-100) sets the text size. Changes use automatic config reload. Each player configures their own HUD. Entries are created when the updated plugin starts.
Administrator exemptions
Set this on the server in BepInEx/config/com.xtasy.ValheimBattleRoyale.cfg:
[Administration]
ExemptSteamIds = 76561198000000001,76561198000000002
Replace the examples with real SteamID64 values. An empty list exempts nobody. Spaces around comma-separated entries are allowed. The server resolves Steam identities from network connections (or the local platform API for a listen host); client config entries cannot grant an exemption. Non-Steam identities are not accepted.
Exempt players receive no BR zone damage or forced PvP, and do not receive the personal zone warning, cosmetic fire or periodic zone-presence logs. Match HUD, map circles and authorized administration controls remain available. This setting does not grant administrator permissions or immunity from normal game damage. Previously captured PvP is restored when exemption becomes active.
Config changes use automatic reload; the server distributes each player's exemption with its state snapshot. Install this exact updated DLL on the server and all clients: the exemption snapshot uses protocol 111, incompatible with earlier 1.1.0 test builds using protocol 110. Live multiplayer validation is still required.
