V3.0 SandboxCode — The serverconfig.xml Migration Guide for Dedicated Servers

Updated June 12, 2026, from the official V3.0 "Dead Hot Summer" release notes (published June 11). PC experimental is announced for Monday, June 15, 2026 (streamer weekend June 12-14); everything here applies from the moment the branch goes live. V2.6 servers are unaffected until they update.

V3.0 makes the biggest change to serverconfig.xml in the game's history: 29 legacy properties are removed and replaced by a single SandboxCode property that encodes your entire sandbox configuration. If you run a dedicated server, your old config will not carry those settings into V3.0 — here is exactly what changed, the migration procedure TFP prescribes, and the gotchas for continued V2.6 saves.

What changed

The 150 new sandbox options replace the old scattering of serverconfig properties. Instead of editing individual XML lines, you now configure everything in the in-game Sandbox Options menu, which generates a compact code string. That code is the new single source of truth, set in serverconfig.xml as:

<property name="SandboxCode" value="AAAJABJACJADJARFBNC"/>

That default value is the equivalent of the legacy GameDifficulty "Adventurer" (1) setup. Any custom ruleset produces its own code.

The 29 removed legacy properties

These no longer function in V3.0's serverconfig.xml — their values are encoded in SandboxCode instead:

GameDifficulty · BlockDamagePlayer · BlockDamageAI · BlockDamageAIBM · XPMultiplier · DayNightLength · DayLightLength · BiomeProgression · StormFreq · DeathPenalty · DropOnDeath · DropOnQuit · JarRefund · EnemySpawnMode · EnemyDifficulty · ZombieFeralSense · ZombieMove · ZombieMoveNight · ZombieFeralMove · ZombieBMMove · AISmellMode · BloodMoonFrequency · BloodMoonRange · BloodMoonWarning · BloodMoonEnemyCount · LootAbundance · LootRespawnDays · AirDropFrequency · AirDropMarker · QuestProgressionDailyLimit

Server-level properties unrelated to gameplay rules (ports, names, passwords, player counts, region settings) are untouched.

The migration procedure

  1. Before updating: record your current settings. Open your V2.6 serverconfig.xml and note the values of every property in the removed list above. A screenshot or copy of the file is enough.
  2. When the experimental branch goes live (announced June 15) — or stable, later — update the server, after a verified backup of the save.
  3. Recreate the ruleset in-game. Start the V3.0 client, open the Sandbox Options menu, and set each option to match your recorded values (the new options are finer-grained, so most legacy values map onto an equivalent or better knob).
  4. Copy the generated code from the menu.
  5. Paste it into V3.0's serverconfig.xml as the SandboxCode value, replacing the default.
  6. Start the server and verify in-game that difficulty, XP, blood moon cadence, and loot behave as before.

What the V3.0 file should look like (simulated)

Until the experimental build lands on June 15 nobody outside TFP has the real file, but it is derivable: take the V2.6 default, delete the 29 removed properties, add SandboxCode. Everything below the gameplay section (server name, ports, slots, telnet, land claims) is untouched by the announced changes. This is a simulation built strictly from the official notes — we will verify it against the real file on June 15.

V2.6 gameplay section (today):

<!-- GAMEPLAY / Difficulty -->
<property name="GameDifficulty"      value="2"/>    <!-- REMOVED in V3.0 -->
<property name="BlockDamagePlayer"   value="100"/>  <!-- REMOVED -->
<property name="BlockDamageAI"       value="100"/>  <!-- REMOVED -->
<property name="BlockDamageAIBM"     value="100"/>  <!-- REMOVED -->
<property name="XPMultiplier"        value="100"/>  <!-- REMOVED -->
<property name="DayNightLength"      value="60"/>   <!-- REMOVED -->
<property name="DayLightLength"      value="18"/>   <!-- REMOVED -->
<property name="DropOnDeath"         value="1"/>    <!-- REMOVED -->
<property name="DropOnQuit"          value="0"/>    <!-- REMOVED -->
<!-- Zombies -->
<property name="EnemySpawnMode"      value="true"/> <!-- REMOVED -->
<property name="EnemyDifficulty"     value="0"/>    <!-- REMOVED -->
<property name="ZombieFeralSense"    value="0"/>    <!-- REMOVED -->
<property name="ZombieMove"          value="0"/>    <!-- REMOVED -->
<property name="ZombieMoveNight"     value="3"/>    <!-- REMOVED -->
<property name="ZombieFeralMove"     value="3"/>    <!-- REMOVED -->
<property name="ZombieBMMove"        value="3"/>    <!-- REMOVED -->
<property name="BloodMoonFrequency"  value="7"/>    <!-- REMOVED -->
<property name="BloodMoonRange"      value="0"/>    <!-- REMOVED -->
<property name="BloodMoonWarning"    value="8"/>    <!-- REMOVED -->
<property name="BloodMoonEnemyCount" value="8"/>    <!-- REMOVED -->
<!-- Loot -->
<property name="LootAbundance"       value="100"/>  <!-- REMOVED -->
<property name="LootRespawnDays"     value="7"/>    <!-- REMOVED -->
<property name="AirDropFrequency"    value="72"/>   <!-- REMOVED -->
<property name="AirDropMarker"       value="false"/><!-- REMOVED -->
<!-- (plus, in V2.x-era files: BiomeProgression, StormFreq, DeathPenalty,
     JarRefund, AISmellMode, QuestProgressionDailyLimit - all REMOVED) -->

V3.0 gameplay section (simulated):

<!-- GAMEPLAY -->
<property name="GameWorld"    value="Navezgane"/>
<property name="WorldGenSeed" value="asdf"/>
<property name="WorldGenSize" value="6144"/>
<property name="GameName"     value="My Game"/>
<property name="GameMode"     value="GameModeSurvival"/>

<!-- ALL gameplay rules now live in one property. Generate the code in the
     in-game Sandbox Options menu and paste it here. This default is the
     equivalent of the old GameDifficulty="Adventurer": -->
<property name="SandboxCode"  value="AAAJABJACJADJARFBNC"/>

<!-- Unchanged: PlayerSafeZone*, Bedroll*, MaxSpawnedZombies/Animals,
     view distance, PartySharedKillRange, PlayerKillingMode, LandClaim*,
     DynamicMesh*, Twitch*, and the entire general-server section
     (ServerName, ports, slots, passwords, telnet, EAC). -->

The visual is the point: roughly thirty lines of gameplay tuning collapse into one opaque string, and the in-game menu becomes the only sane editor. Server panels that template these properties will need V3.0-aware templates; until your host ships one, the copy-paste flow above is the way.

Continuing a V2.6 save

TFP confirms V2.6 save continuation is supported, but the settings migration is on you: the server will not translate your old properties automatically — an un-migrated config silently runs the default Adventurer-equivalent ruleset, which is how a hardcore server wakes up casual. TFP also notes, verbatim, that you "may need to work with your specific provider" — hosting panels that template serverconfig.xml need V3.0-aware templates before their customers update. Until your host confirms V3.0 support, pin your server to V2.6.

Gotchas worth knowing on day one

  • The code is opaque. SandboxCode is not human-readable; the in-game menu is the only sane editor. Keep a text note of your intended settings alongside the code in your server docs.
  • Preset sharing is the new config sharing. Community rulesets travel as preset codes now — treat codes from strangers like any pasted config: load them in singleplayer first and review what they set.
  • Experimental first. The usual rule applies double for a config-format change: run V3.0 on a test world before moving your community save, and remember saves do not downgrade.
  • Mods and the new formats. V3.0 also renames Localization.txt to Localization.csv and overhauls XUi — expect server-side mods to need updates in the same window. Full modding notes in the release-notes breakdown.

Sources