
ValheimBattleRoyale
Server-authoritative Battle Royale safe zones for Valheim with shrinking circles, synchronized timers, map overlays and configurable zone damage.Valheim Battle Royale
Battle Royale system for Valheim with server-controlled matches, shrinking safe zones, synchronized map circles, outside-zone damage, automatic PvP and an in-game HUD.
Requirements
- BepInEx for Valheim
- The mod must be installed on the server and on every participating client.
- All participants should use the same mod version.
Install ValheimBattleRoyale.dll into:
BepInEx/plugins/
Main Features
- Server-controlled Battle Royale state
- Match start countdown
- Automatic PvP during the match
- Automatic PvP disable when the match ends
- Current and next safe zones
- Smooth zone shrinking
- Safe-zone circles on the large map and minimap
- Server-authorized outside-zone damage
- Damage that bypasses armor, blocking and elemental resistance
- Cosmetic fire effect outside the zone
- Valheim TextMeshPro / Norse Bold HUD
- English and Russian localization
- Administrator hotkey and console commands
- Runtime configuration reload
Match Flow
- Create the initial safe zone.
- Press
F7or usebr start. - The configured start countdown begins.
- When the countdown finishes, the match becomes active and PvP is forced ON for every player.
- Assign the NEXT safe zone.
- After
WaitBeforeShrink, the current zone begins shrinking toward NEXT. - Players outside the effective current zone receive
OutsideDamage. - When shrinking finishes, NEXT becomes CURRENT.
- Assign another NEXT zone and repeat.
- Press
F7again or usebr stopto stop the match. - PvP is automatically switched OFF for players whose PvP was forced by the Battle Royale.
PvP
PvP is not forced during the start countdown.
When the Battle Royale becomes active, every client continuously applies:
PvP = ON
This prevents normal players from disabling PvP through the Valheim interface while the match is running.
Players who join an already active match also receive PvP after synchronizing the Battle Royale state.
When the match stops, the mod automatically switches PvP OFF again for players whose PvP state was forced by the Battle Royale.
Safe Zones
The system uses two zones:
CURRENT— active safe zone.NEXT— destination of the next shrink.
The current zone is shown in green and the next zone in yellow.
Both are rendered on the world map and minimap.
Initial Zone
On the large map:
Shift + Left Click
If no CURRENT zone exists, this creates the initial zone using InitialRadius.
Console alternatives:
br zone <x> <z> [radius]
br here [radius]
Next Zone
If CURRENT already exists:
Shift + Left Click
creates NEXT.
Without an explicit radius:
NextRadius = CurrentRadius × NextRadiusMultiplier
The radius will not go below MinimumRadius.
Console alternatives:
br next <x> <z> [radius]
br nexthere [radius]
Move NEXT
During the waiting phase, Shift + Left Click moves an existing NEXT zone while preserving its radius and restarting the waiting timer.
NEXT cannot be moved while shrinking is in progress.
Cancel
Ctrl + Left Click
cancels NEXT when one exists. If there is no NEXT zone, it cancels the current/start zone.
Console:
br cancelnext
Cancellation is blocked during active shrinking.
Zone Shrinking
After NEXT is assigned, the mod waits for:
WaitBeforeShrink = 300
Then CURRENT smoothly interpolates toward NEXT over:
ShrinkDuration = 180
Both the center and radius change during the shrink.
When the transition completes, NEXT becomes CURRENT.
Outside-Zone Damage
Default configuration:
OutsideDamage = 10
DamageInterval = 2
With these values, an outside player loses 10 HP every 2 seconds.
The server determines which players are outside the safe zone and authorizes the damage. The authorized damage is delivered to the owning client to work correctly with Valheim's player ownership model.
Battle Royale zone damage bypasses:
- armor
- blocking
- fire resistance
- elemental resistance
The visible burning effect is cosmetic and is not the source of the damage.
Lethal zone damage uses Valheim's normal damage/death pipeline.
HUD
The HUD uses Valheim's native TextMeshPro font asset:
Valheim-Norsebold
It displays:
- match start countdown
- time until shrinking
- active shrink countdown
- outside-safe-zone warning
The main status block is positioned below the minimap.
Localization
Supported automatically:
- English
- Russian
English is used as the fallback for unsupported languages.
Controls
| Control | Action |
|---|---|
F7 |
Start/stop Battle Royale |
Shift + Left Click on map |
Create initial/NEXT zone or move NEXT |
Ctrl + Left Click on map |
Cancel NEXT/current zone |
Administrative actions are validated by the server.
Console Commands
br start
br stop
br toggle
br status
br zone <x> <z> [radius]
br next <x> <z> [radius]
br here [radius]
br nexthere [radius]
br cancelnext
br start
Starts the match countdown. A current safe zone must already exist.
br stop
Stops the Battle Royale. Forced PvP is automatically switched off on clients.
br toggle
Starts or stops the match depending on the current state.
br status
Displays the current Battle Royale state.
br zone <x> <z> [radius]
Creates or changes CURRENT.
br here [radius]
Creates CURRENT centered on the administrator.
br next <x> <z> [radius]
Creates NEXT.
br nexthere [radius]
Creates NEXT centered on the administrator.
br cancelnext
Cancels the pending NEXT zone.
Default Configuration
[Controls]
StartHotkey = F7
[Match]
StartCountdown = 10
[Zone]
InitialRadius = 3000
NextRadiusMultiplier = 0.5
MinimumRadius = 25
WaitBeforeShrink = 300
ShrinkDuration = 180
RequireNextZoneInsideCurrent = true
[Damage]
OutsideDamage = 10
DamageInterval = 2
[UI]
ShowHud = true
Configuration
StartHotkey
Administrator hotkey used to start or stop the match.
StartCountdown
Seconds between starting the Battle Royale and the match becoming active.
InitialRadius
Radius used for the initial safe zone.
NextRadiusMultiplier
Multiplier used to calculate NEXT when no explicit radius is supplied.
MinimumRadius
Minimum automatically calculated safe-zone radius.
WaitBeforeShrink
Seconds between assigning NEXT and beginning the shrink.
ShrinkDuration
Duration of the CURRENT → NEXT transition.
RequireNextZoneInsideCurrent
When enabled, the complete NEXT zone must fit inside CURRENT.
OutsideDamage
HP removed per outside-zone damage tick.
DamageInterval
Seconds between outside-zone damage ticks.
ShowHud
Enables or disables the Battle Royale HUD.
Runtime Configuration Reload
The configuration file is monitored and reloaded while the game is running.
Values such as zone timings and outside damage can therefore be adjusted without rebuilding the plugin.
Server Authority
The server controls or authorizes:
- match state
- current and next zones
- zone phases
- synchronized timing
- administrator requests
- outside-zone detection
- outside-zone damage
Clients render synchronized UI/map information and apply server-authorized player-owned health changes.
Version
1.0.0