Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
ValheimBattleRoyale
Server-authoritative Battle Royale safe zones for Valheim with shrinking circles, synchronized timers, map overlays and configurable zone damage.
By Xtasy
| Date uploaded | a day ago |
| Version | 1.1.0 |
| Download link | Xtasy-ValheimBattleRoyale-1.1.0.zip |
| Downloads | 25 |
| Dependency string | Xtasy-ValheimBattleRoyale-1.1.0 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2350README
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.0 on the server and every participating client. This release uses protocol 110 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.0
- 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.0. 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.
CHANGELOG
Changelog
1.1.0
-
Fixed host/server control commands reading a locally written packet at its end. Local command packets are rewound before processing.
-
Fixed outside-zone damage incorrectly skipping living characters whose health field is absent from their ZDO. Missing health now follows the game's default-health semantics; explicit dead, nonpositive or invalid health remains excluded.
-
Added a transport-level ingress check before routed BR messages are handled or forwarded. Claimed sender identity must match the actual connected peer, and message direction and destination must be valid. Client-originated BR state/damage messages and forwarding to other clients are rejected.
-
Added rate-limited diagnostics for rejected routed messages and missing explicit health values.
-
Updated plugin and assembly versions to 1.1.0 / 1.1.0.0 and the BR protocol to 110.
-
Fixed PvP notification filtering by patching the actual Player.Message override. Repeated enable notifications remain suppressed across respawns within a match.
-
Preserved the original PvP setting across player-object replacements. If a match ends while the player is dead or absent, restoration waits for a living local player; disconnect/unload clears session state.
-
Blocked map shortcuts while chat, text entry, menus, inventory or virtual keyboard are active. Map commands now require a pointer hit on the map rather than an overlapping control.
-
Corrected br status: server state age is reported as N/A(server), and clients without a snapshot show N/A(no snapshot).
-
Added HUD component recovery and diagnostics for active/enabled state, timer rectangle and canvas state. A missing canvas triggers recreation.
Upgrade
Install 1.1.0 on both the server and all clients. Versions 1.0.3 and 1.0.4 do not share this protocol. Restart the server and clients after replacing the plugin DLL.
Validation and scope
The source was compiled against the available local Valheim/BepInEx libraries. Automated checks cover the ingress authorization matrix, health semantics, command packet round trips, version metadata and zone-state serialization. No live multiplayer, HUD rendering or end-to-end network attack test was performed.
This release addresses all confirmed P1/P2 findings from the October 25 review. The additional PvP, map-input and HUD changes were compiled and reviewed against local game APIs; the 688 existing managed checks do not simulate these Unity lifecycle/UI paths. The original missing-HUD report still requires a live reproduction.
1.0.4
Fixed
- Fixed repeated PvP notifications and prevented disabling PvP during active matches. The previous PvP setting is restored afterward.
- Fixed outside-zone player detection by checking connected peers and character ZDOs, including players outside the server's loaded scene.
- Prevented duplicate, expired and outdated damage commands from affecting the wrong character or match.
- Made lethal zone damage use direct health reduction followed by the standard Valheim death pipeline.
- Fixed missed initial snapshots, reconnect recovery and duplicate RPC registration.
- Fixed administrator authorization, malformed-packet handling, zone cancellation, match restarts and configuration reload handling.
- Improved HUD recovery, font loading and screen positioning.
Added
- Added character, match, zone revision and tick identifiers to damage RPCs.
- Added damage acknowledgements with execution results and health values before and after each tick.
- Added snapshot retries and periodic state synchronization.
- Added a HUD synchronization indicator.
- Added rate-limited diagnostics for server/client RPCs, zone synchronization, HUD and damage application. Repeated summaries default to once every 30 seconds.
Changed
- Zone timers, shrink duration and damage settings now use server-provided values.
- Updated the RPC protocol. The server and all clients must run 1.0.4; the new protocol is incompatible with 1.0.3.
Validation
- Release build completed with zero errors and warnings.
- Passed 210 state-packet checks. Live gameplay and the 10-player multiplayer test have not been run.
1.0.3
Fixed
- Fixed a compilation error caused by a leftover reference to the removed
shiftvariable. - Removed the unused
_shiftWasDownfield after migrating map controls to configurable shortcuts.
1.0.2
Changed
- Added mouse button explanations to the configuration descriptions for zone placement and cancellation.
- Documented
Mouse0(left click),Mouse1(right click), andMouse2(middle/wheel click).
1.0.1
Added
- Added configurable
PlaceZoneHotkeyandCancelZoneHotkeyshortcuts. - Added support for changing the modifier and mouse button used for zone placement and cancellation.
- Zone control shortcuts now use BepInEx
KeyboardShortcutsettings and support runtime configuration reload.
Changed
- Replaced hardcoded Shift/Ctrl + left-click zone controls with configurable bindings.
1.0.0
Added
- Server-controlled Battle Royale match system.
- Configurable match start countdown.
- Automatic PvP for all players when the match starts.
- Automatic PvP disable when the match stops.
- PvP is continuously enforced while a Battle Royale match is active.
- Late joiners automatically enter PvP after receiving the active match state.
- Initial and next safe zones.
- Configurable initial radius, next-zone multiplier and minimum radius.
- Configurable delay before shrinking and shrink duration.
- Optional requirement that the next zone fits completely inside the current zone.
- Smooth synchronized interpolation of safe-zone center and radius.
- Current and next safe-zone circles on the world map and minimap.
- Administrator map controls for creating, moving and cancelling zones.
- Server-authorized outside-zone damage for remote players.
- Zone damage bypasses armor, blocking and elemental resistances.
- Normal Valheim death handling for lethal zone damage.
- Cosmetic burning effect outside the safe zone.
- TextMeshPro HUD using Valheim's native
Valheim-Norseboldfont asset. - Automatic English and Russian localization.
- HUD countdowns for match start, waiting phase and active shrinking.
- Outside-safe-zone warning.
- Runtime configuration reload.
- Server-side validation of administrator Battle Royale requests.
- Console commands for match and zone administration.
Fixed
- Fixed outside-zone damage not reducing health for remote/non-host players.
- Fixed lethal direct HP removal causing errors in Valheim's death pipeline.
- Fixed compatibility with Valheim builds where
GetServerPeerID()is private. - Fixed inconsistent Russian HUD glyphs caused by IMGUI font fallback.
- Fixed inconsistent title/timer font sizes.
- Removed deprecated TextMeshPro
enableWordWrappingusage.