The dev 192ecd4d integration advances the
native package, lobby handshake and panel to 0.7.1.5. Completed save and
terrain transfers release the host loop’s temporary references each pass.
The CrossOver loader-hook fix is retained; Linux already uses guarded Vulkan
dispatcher slots. All peers, including dedicated servers, must update.
The dev a459ff1c integration fixes
Linux release packaging to accept the menu’s existing Tpf2mpLastGameUiTick
export. Release remains 0.7.1.4; gameplay code is unchanged.
The dev 4487d7cd integration advances the
native package, lobby handshake and panel to 0.7.1.4. All peers must update.
The menu library now exports a monotonic gameplay-update timestamp, cleared
at the title menu. The Windows MSI warning-page fix is retained. Native Linux
uses a different terrain paging policy; no new loading-speed result is claimed.
The dev c4754f26 integration retains the Windows
installer’s folder-refusal dialog. Native Linux already prints the reason to
stderr and exits with an error; four installer regressions cover that behavior.
Release remains 0.7.1.3.
The dev 721ac61f integration moves save reading, hashing and mod
discovery to a lobby worker. Joiners wait 30 seconds for a silent host; mesh
routing still bypasses it after 12 seconds. Shared lobby; release remains 0.7.1.3.
The dev 262353d7 integration merges
housekeeping and correctness fixes for replay, vehicle/line identity, lobby transfers,
and network input handling. Native bridge epoch handling and kill-switch readers
are covered by Linux regressions; release remains 0.7.1.3.
The dev 528294b1 integration asks for a
fresh host save when a late joiner would receive one over two minutes old,
with fallback if no new save arrives. Host-loop stalls no longer count as
peer silence. Shared lobby; release remains 0.7.1.2.
The dev 304a4e28 integration adds catch-up progress
logging about every 20 seconds: remaining gap, closing rate, local and session
rates, and an ETA when the gap is closing. Shared Lua; release remains 0.7.1.2.
The dev 86f806df integration keeps
terrain streams running across later STARTs, avoiding replacement while a
joiner reads the same sidecar. Shared Linux/Windows lobby; release 0.7.1.2.
The dev effa7243 integration prevents
repeat save transfers while a joining player’s mods are packing, queued or
being delivered. The shared lobby fix applies to native Linux and Windows;
release remains 0.7.1.2.
Current release integration: 0.7.1.5, Windows dev 192ecd4d; see the
integration and validation record. All peers, including dedicated
servers, must update. Existing native Sandbox town-tool capture, minimap and
cargo-filter limitations remain. Upstream performance measurements were not
repeated locally; matching release numbers do not establish gameplay parity.
Completed TCP transfers no longer stay in lobby memory through listener
registrations; active transfers retain their handlers until they finish.
Catching-up peers retain recently heard leader clocks when stamping commands
and defer spare-line requests until catch-up completes.
Dedicated servers pause while players join an otherwise empty server, and cap
the voted speed at 1x while someone joins existing players. A joiner stops
holding the session after about 20 minutes without a change in joining count.
Below 1x, command delay follows session speed with a ramp margin; recovery
from a slow session rises in steps, and excess delay falls faster.
Native terrain sidecars are on by default from dev 71549cff in 0.7.1.2;
terrain_sidecar=0 disables them. Live ownership and load-completion checks
remain outstanding; material-index acceleration remains unported. Enabling
sidecars does not establish new native performance results.
Website: silver2127.github.io/tpf2-multiplayer · Download the launcher (Windows) · Linux · Privacy policy
Join The Discord: https://discord.gg/7VhmtUstqQ ·
Multiplayer for Transport Fever 2 (Steam, Windows, build 35924). Several players build in one world at the same time: the roads, track, stations, depots, vehicles and lines one player makes appear for everyone, applied at the same moment of the simulation on every machine. Play one shared company together, or separate companies with their own money on the same map.
It is unofficial, reverse-engineered without the engine's source, and experimental. Sessions of up to four players have been run, on one PC and between PCs on different networks. Read docs/KNOWN_ISSUES.md before relying on it.
This branch also contains a native Linux build-35924 port, with a native dedicated server. Its
current integration includes Windows release 0.7 plus dev 8c3c02a5:
Linux installation ·
current integration and test evidence ·
dedicated server setup. The Windows MSI instructions below apply to the
Windows version.
- Settings must match Windows peers. Loaded-game lifetime and cross-platform validation remain outstanding; matching versions do not establish gameplay parity.
- Canonical simulation ordering is on by default (
TPF2MP_ORDER_CANON=0disables it); see the devad3d66e4integration. - Native terrain compression is on by default, and bridge lobby identity is fixed; the release
version remains 0.7 (dev
0a35d0a8). - The native terrain pager has recency, automatic memory headroom and fault-rate logging;
loaded-big-map performance validation remains outstanding
(dev
ea35eb8a). - The Windows autosave-sidecar fix is retained
(dev
60d237c5); native terrain sidecars are available experimentally in dev2b4fd093, then enabled by default in dev71549cff. Live lifetime validation remains outstanding.
The game has no network code, so this adds lockstep multiplayer from outside. A forwarding alut.dll
loads a few DLLs into the game at start-up: one captures each command a player issues and cancels it
before it applies, one carries commands between the game and a separate lobby process, and one draws the
Multiplayer panel on the title menu. A Lua game-script mod stamps every command with a future simulation
step, sends it to everyone, and replays it through the game's scripting API on every machine at that step,
including the player's own. Everyone starts from the same save, so the worlds stay identical; a detector
compares them continuously. The lobby handles NAT traversal, encryption and sending the save.
docs/ARCHITECTURE.md has the details.
Download the launcher from the latest release:
TpF2Multiplayer-Launcher-Windows-Setup.exe or, on Linux and Steam Deck,
TpF2Multiplayer-Launcher-Linux.AppImage. Run it and press Update & play.
It installs the mod, keeps it up to date and starts the game. Everyone in a session needs the same version.
The launcher downloads the install files from tpf2-multiplayer-packages
(the release with the same tag); to install by hand, take TpF2Multiplayer.msi from there, close the game and
run it. For versions using the two-launcher layout, the Latest page v<version> carries the two launchers;
the mod repository also carries install files on <version> (without v). Launchers up to 1.2.0
must be updated before installing these versions.
The installer finds the game folder through Steam, keeps the game's alut.dll as alut_real.dll and puts
the proxy in its place, adds the DLLs, the lobby (the netpunch\ folder) and the Transport Fever 2 Multiplayer mod, and
switches the game to the Windows Segment Heap, which makes very large maps load far faster. Runtime files go
to %LOCALAPPDATA%\tpf2mp\data\. It installs alongside
TpF2 Big Maps in either order. Details:
installer/README.md.
Linux and Steam Deck (the Windows game under Proton), by hand: download install_proton.sh from the packages release and run
sh install_proton.sh (no Python needed; install_proton.py is the Python equivalent); it installs the same files into the Proton game. Details, including the lobby
repair Wine needs: docs/proton/INSTALL.md. The native Linux game has its own
build on the linux-native branch.
To uninstall, use Apps → TpF2 Multiplayer → Uninstall, or run the MSI again and choose Remove; the
game's own alut.dll is put back. Steam's "Verify integrity of game files" also restores it, which removes the
Multiplayer entry until you run the MSI's Repair.
Every release is built by GitHub Actions from the tagged source
(.github/workflows/build-msi.yml); SHA256SUMS.txt in the matching packages release (also on the mod repository's <version> update-files release) lists the
files it produced. The lobby is a Python program frozen with PyInstaller, and unsigned software of that kind is
sometimes flagged by antivirus heuristics. The checksums and the build log are how to check that what you downloaded
is what the source builds.
- Title menu → Multiplayer → HOST GAME. The code is copied to your clipboard: send it to your friends, or tick PUBLIC to list the game. A password locks the code.
- Friends open Multiplayer, paste the code and press JOIN GAME, or click your game in PUBLIC GAMES.
- Press START GAME. Your newest save is sent to everyone; when it is ready, everyone opens LOAD GAME and picks mp_shared.
The host needs UDP port 29471 reachable from the internet (the lobby tries UPnP). If that is not possible, use a the dedicated server in the PUBLIC GAMES list, where nobody needs an open port. New games have the multiplayer mod enabled automatically; for an existing save, enable it once in the save's Mods panel. The full guide, including the in-game window, companies and troubleshooting, is docs/PLAYING.md.
Nothing leaves your PC except the session itself. Your player name, chat, game commands, network address and the
host's save go to the other players in the session, directly or through the dedicated server. The project's server
provides the public games list, which lists your game only while PUBLIC is ticked, and carries a joining
player's encrypted address note to the host so the two can connect. There is no telemetry, no usage statistics and
no automatic bug or crash reporting: the in-game updater, the session count and the desync-report upload of earlier
versions were removed in 0.6.1.11. When something goes wrong, the logs stay in %LOCALAPPDATA%\tpf2mp\logs and you
send them yourself if you report a bug. The full text is the
privacy policy.
| document | covers |
|---|---|
| docs/PLAYING.md | hosting, joining, relays, the in-game window, speed, companies, troubleshooting |
| docs/HOSTING_A_SERVER.md | running a dedicated server: on a Windows PC, or on a Linux server or VPS |
| docs/ARCHITECTURE.md | the components, a command's path, time and pacing, sessions, files |
| docs/REPLICATION.md | what replicates and how, per action, and how divergence is detected |
| docs/NETWORKING.md | lobby protocol, join codes, save transfer, dedicated relay, master server |
| docs/SECURITY.md | the threat model: what is protected and what is not |
| docs/CONFIGURATION.md | every setting |
| docs/DEVELOPMENT.md | building, deploying, the multi-instance rig, logs, tests, releases |
| docs/KNOWN_ISSUES.md | open bugs, replication gaps, plans that were not built |
| docs/TESTING.md | the manual test plan: what to check before pushing, and before a release |
| docs/re/ | the engine reference for build 35924 that the hooks rest on |
| installer/README.md | the MSI: what it changes, upgrades, building it |
| docs/proton/INSTALL.md | Linux and Steam Deck: installing into the Windows game under Proton |
| netpunch/README.md | the lobby's source |
| path | contents |
|---|---|
native/ |
the DLLs (build.bat <target>); src/plugin/ is the plugin host and its ABI |
native/linux/, tools/linux/ |
native Linux libraries, tests, Steam Runtime builds and .run/tarball packaging |
bigmap/ |
Big Maps, shipped in the same Windows MSI and native Linux package; Linux feature limits: port record |
mod/mp_lockstep_1/ |
the game-script mod |
netpunch/ |
the lobby (the dedicated server runs it too) and the master server (Python) |
installer/ |
the WiX package |
tools/ |
deploy, rig, soak-test and check scripts; tools/ghidra/ and tools/re/ for reverse engineering |
docs/ |
the documentation |
Issues and pull requests are welcome, especially reproductions with logs from every player (what to collect). Please keep the project's conventions (docs/DEVELOPMENT.md): destructive replication channels are validated on the rig before they merge, and a field identification counts only when a differential capture confirms it.
- Companies mode is inspired by, and reuses engine mechanisms proven in, Swiss's Multiplayer Companies
Workshop mod (item 3710243057): runtime
addPlayer,setPlayer,bookJournalEntryto a specific player,setBulldozeable. - TpF2 Big Maps grew out of this project.
- Licensed under the MIT License. Third-party material is listed in THIRD_PARTY_NOTICES.md.
Disclaimer. This project is not affiliated with or endorsed by Urban Games. It replaces a file inside your
Transport Fever 2 installation (alut.dll, kept as alut_real.dll) and patches game code in memory while the
game runs. Use it at your own risk and keep backups of your saves. Multiplayer saves are ordinary .sav files;
the mod adds its company assignment to the save's script state.
The dev a42dab6c integration
keeps hot-join save requests pending while the host world loads, then
takes the save when the game UI is ready. Version remains 0.7.
The dev 7cacbaaf integration
removes full mapping-table scans from family guards on Linux 6.11+ and retains
a faster snapshot fallback for older kernels. Version remains 0.7.
The dev 2c05099a integration adds the remaining supplied
Windows RNG seed/distribution/engine compatibility modules, enabled by default.
TPF2MP_SIM_SEED=0 and TPF2MP_ENGINE_PARITY=0 disable them for diagnosis.
Static ELF checks and 65 native tests pass; the lab launch was blocked before
the game started, so cross-platform gameplay validation remains outstanding.
The dev 582a380 integration makes native dedicated
restarts prefer a newer autosave of the hosted mp_shared world over the
configured save. Version remains 0.7.
The dev e63ceefc integration retains
upstream's dedicated-server performance report; runtime code is unchanged.
The dev cf5f8a0e integration makes load-time company
switches wait for entity queries to answer and reuses live saved player entities.
Version remains 0.7; loaded-world validation is still outstanding.
The dev b4b629a2 integration prevents
per-frame script state sync from rewinding the town-growth clock. Shared Lua
and native tests pass; live growth validation remains outstanding. Version remains 0.7.
The dev 522a303b integration reports the slowest hash's
lane breakdown and the cost of post-hash broadcast, drift and comparison work.
Shared Lua regression tests pass; no live performance measurement is claimed.
Version remains 0.7.
The dev bd69b864 integration adds native UCRT math parity, octree depth 12/13,
target-record indexing and the 0.7.0.2 TCP/resync UI. Placement-distance and
attempt-budget parity remain unported; the lab launch was blocked before game startup.
The dev aaae03f8 integration retains
the Windows GOG octree fallback and batch deployment fixes. Native Steam
depths 11/12/13 keep their existing verified patches and ceiling checks.
The dev 7469fce7 integration incorporates
Big Maps Windows GOG documentation; native runtime behavior is unchanged.
The dev 63a3b8df integration records
upstream depth-13 gameplay and native dedicated multiplayer results. Native
defaults and placement limits remain unchanged; no local live run was repeated.
The dev 4616c16a integration adds
upstream's Big Maps performance catalog with native feature/default scope.
Runtime behavior is unchanged; the listed gains are upstream measurements.
The dev c9ac009d integration retains
the standalone Big Maps sync and unified Windows MSI documentation while
preserving native Linux guidance. Runtime behavior is unchanged.
The dev 0610033 integration fixes native
family ordering to recognize all 28 node lists and adds the opt-in town trace.
Static and fixture checks pass; live validation was blocked at lab startup.
The dev e43d01dd integration carries
upstream's per-tick EDEMO node index and the stop-replay registration that stops
a catch-up scan re-shipping replayed signals and stops. Both are shared Lua; the
native Linux slice already emits the EDEMO and STOPX/STOPXDEL records they rely
on, so no native change was needed. No local live run was possible.
The dev d8a3ce57 integration is
upstream's release 0.7.0.3 and carries no code. It stamps the native release
0.7.0.3 (installer/VERSION, which tools/linux/build_release.sh reads for the
.run installer, and the shared LOBBY_VERSION handshake), advances the Lua
verifier and the release provenance line to this target, and stages the two
missing integration records. Each Linux claim the notes make -- all 28 sorted
node lists, the extra RNG sites, Windows float math, TPF2MP_TOWN_TRACE=1,
octree depths 12/13, terrain compression on by default -- was rechecked against
the unmodified game ELF and passes. No local live run was possible.
The dev 122a0ce9 integration adds the native resync
view’s in-game x. Closing a running resync hides its view while recovery
continues; Manage Lobby reopens it. Errors and unanswered Ready requests
bring it back automatically. Saving/loading suppresses the x.
The dev 45183ac6 integration adds
native OPEN LOGS version/ELF identities, state/config snapshots and masked
lobby streams, and retains five archives per kind. Version remains 0.7.0.3.
The dev 96795a8b integration expands the native public
browser to eight games per page and up to 32 games, and completes archive
runtime/boot metadata and standalone collector credential masking.
The dev 01044521 integration expands the native public
browser to twelve games per page and up to 48 games, and removes the legacy
panel renderer. Closing a running resync leaves the game visible.
The release 0.7.0.4 integration advances the native package and shared lobby handshake to 0.7.0.4. All peers, including dedicated servers, must update. This release stamps the previously integrated hot-join, menu and log fixes; existing native feature and live-validation limits remain.
The dev c74a7b4e integration fixes
TCP save routing after joining through the master's UDP relay: the joiner tries
the host's advertised addresses, or continues on UDP when none are available.
The shared lobby implements this on Linux and Windows; version remains 0.7.0.4.
The dev f6e47ef9 integration adds
the master's TCP pipe fallback for slow save/mod transfers, shared by Linux
and Windows. Native shutdown cleanup is preserved; version remains 0.7.0.4.
The release 0.7.0.5 integration advances the native package and shared lobby handshake to 0.7.0.5, stamping the previously integrated relay address fix and TCP pipe fallback. All peers, including dedicated servers, must update. Existing native feature and live-validation limits remain unchanged.
The dev ba1fa26e integration refuses
native hosting and joining unless tpf2_bridge_mp.so is loaded. The menu
shows an amber explanation and directs players to the loader log.
The dev 4e1e486c integration moves install
assets to the packages repository while the mod release carries the launchers.
Native builds now emit the publisher's -native assets and checksums; see
manual native installation. Version remains 0.7.0.5.
The dev e12ed657 integration adds
separate launcher-v<version> releases without moving the Latest mod release.
The shared publisher supports Linux AppImages; native version remains 0.7.0.5.
The dev 2f65bae3 integration adds compressed terrain edits
with checksum validation to native capture and replay. Every peer needs this
build; the unchanged 0.7.0.5 version handshake does not detect older terrain
readers. Uncompressed version-1 edits remain readable.
The dev 616191b1 integration makes native OPEN LOGS
include the newest startup archive’s game log and crash_* files as
previous_run_*, so a restart does not hide the crashed run’s dumps.
Copies remain subject to the archive budget. Version remains 0.7.0.5.
The dev 363c38cc integration retains the Windows
terrain-sidecar concurrent-release fix. Native sidecar capture/serving remains
unported; native pager and alignment batching behavior is unchanged.
The dev 8978635d integration keeps
launchers on the Latest <version> page and install files on v<version>
and the packages repository. Native release version remains 0.7.0.5.
The dev e2957841 integration adds
page v<version> to migrate an already published release to this layout,
including 0.7.0.5, while preserving its install-file assets.
The dev 9abb2af1 integration adds
annotated launcher-page tags and explicit --replace-page, and removes an
earlier migration note when recreating a page. Native version remains 0.7.0.5.
The dev 8e0a0c00 integration supersedes
those earlier release layouts: launchers now stay on v<version> (Latest),
with update files on <version> and the packages repository's v<version>.
Launcher-only releases no longer recreate a mod release. Version remains 0.7.0.5.
The dev ceee11b1 integration wraps
native lobby chat to its measured width and retains the newest messages that
fit. Shared in-game chat now wraps at 52 bytes. Offline rendering tests pass;
the lab launch was blocked before game startup.
The dev 0047c19f integration adds shared
cargo-filter replay records. Native filter capture remains unported:
Linux line edits can still lose filters. The lab could not start for the
required property/ABI probe; this integration is partial.
The dev 06188ea5 integration keeps
command stamps ahead of the fastest peer while a joiner catches up, with a
600-unit sanity cutoff. Shared Lua tests cover the change; no live multiplayer
result is claimed. Version remains 0.7.0.5.
The dev f9d34252 integration retains Windows’
corrected packed cargo-flag reader and tests shared numeric flag transport.
Native Linux cargo capture remains unported: static layout evidence was
rechecked, but the lab failed before startup. Linux line edits can still
lose stop filters. Version remains 0.7.0.5.
The dev bef70213 integration makes native OPEN LOGS
include the newest startup archive’s mod *.log files as previous_run_*,
so the crashed run’s host, terrain and bridge diagnostics accompany its dumps.
Version remains 0.7.0.5.
The dev ad36a976 integration replaces Lua cargo-filter
setters with a native replay request. The Windows writer is retained; the
Linux writer remains unported after static RE and a lab startup failure.
Native cargo capture and replay can still lose stop filters. This supersedes
the earlier 4ccdde5d mock-based replay claim. Version remains 0.7.0.5.
The release 0.7.0.6 integration advances the native package and shared lobby handshake to 0.7.0.6. All peers, including dedicated servers, must update. This commit only stamps earlier changes: native cargo filter capture/replay and terrain-sidecar capture/serving remain unported. The upstream cargo-filter and repeated-load validation does not establish native Linux support; existing gameplay-validation limits still apply.
The dev 4617fb6f integration advances
native Linux to 0.7.0.7 / FPT6, retains commands owed to quiet members,
adds adaptive retransmission and pacing fixes, and displays the version in
the native panel. All peers must update. Direct installers now accompany
the launchers on the version page. Existing native feature limits remain.
The dev 6584fd03 integration moves
Fantasia terrain-buffer reuse into the native Big Maps plugin, enabled by
generator_memory=1. No additional mod is needed. Offline checks cover all
three climates; native rendered output and peak memory remain unmeasured.
Version remains 0.7.0.7.
The dev 46ca48ef integration adds
Fantasia generator size/layer/buffer diagnostics and optimizer refusal reasons
to both native Linux and Windows. Version remains 0.7.0.7.
The dev 15ba4df5 integration fixes
Fantasia buffer reuse to measure generator dimensions in heightmap samples.
128 x 128 tiles remain unchanged; larger sample areas use the optimizer.
Native build and symbolic pipeline tests pass; live memory savings remain
unmeasured. Version remains 0.7.0.7.
The dev 5d73f324 integration adds
Fantasia generator memory budgeting on native Linux, allowing extra buffers
for parallelism. Release remains 0.7.0.7; native generation timing and peak
memory validation remain outstanding.
The dev cc0981bb integration adds the dedicated-server
archive and hosting guide, spreads shared construction checks across updates,
and ports the resync hold fix to Linux: no ten-second deadline, game-local
SDL gesture diagnostics, and focus-loss cleanup. Version remains 0.7.0.7.
Offline regression tests cover these changes; no new live gameplay result is claimed.
The dev 3cc80874 integration records upstream merging
the completed Linux ports through cc0981bb back into Windows history. Its
source tree is identical to the previous Linux integration; runtime behavior
and version 0.7.0.7 are unchanged. Lua now matches upstream without exceptions.
The dev d9196011 integration preserves
the release tag when publishing and checks the returned tag afterward, failing
loudly on a mismatch. This shared tooling change leaves native runtime behavior
and version 0.7.0.7 unchanged. Publication checks are tested offline.
The dev 24b8f636 integration guards shared Fences compatibility
loading so a missing or failing module disables multiplayer without aborting
game loading. Offline Lua and native tests pass; no live gameplay result is
claimed. Version remains 0.7.0.7.
The dev ea15a156 integration batches native guarded page
reads and avoids scanning whole-world vectors for a single road edge. Name
slot pairs are copied in one guarded read. Version remains 0.7.0.7; local
validation uses memory fixtures and ELF checks, with no in-game timing claim.
The dev 491716c3 integration retains
upstream's dedicated-server measurements for the road-entry guarded-read fix.
Runtime behavior and version 0.7.0.7 are unchanged; no local performance
measurement is claimed.
The dev 84058da7 integration adds native
dedicated descriptor recycling and corrects its verified Vulkan dispatcher
search boundary. Live activation remains unverified because lab startup failed.
The dev 52a1630a integration validates
native dedicated descriptor recycling's reset slot at dispatcher +0xb28 and
names failed lookups while retaining the Linux byte guard. Lab startup was
blocked before game execution; runtime activation remains unvalidated.
The dev 4d03caf7 integration retains
upstream's Sandbox tools and TownInfo research. This documentation-only change
adds no town replication; its Windows measurements do not establish native or
cross-platform town-creation determinism. Version remains 0.7.0.7.
The dev 02edb897 integration retains
upstream's dedicated descriptor-recycler measurements. Runtime behavior and
version 0.7.0.7 are unchanged; no local performance measurement is claimed.
The dev f0212c87 integration adds the
shared multiplayer toolbar, pipe-idle and leader-loss fixes, and imports native
road-read batching, threaded save compression, terrain page initialization and
Steam poll throttling. Native town-tool capture and minimap extensions remain
unported after static RE and blocked lab startup. Release remains 0.7.0.7.
The dev ac3b4be3 integration records
upstream merging the completed Linux ports through 412aeb8e back into Windows
history. Its source tree matches the preceding Linux integration; runtime
behavior and release 0.7.1.1 are unchanged.
The dev bde31323 integration brings the
company registry rewrite, rebuilt COMPANIES tab and native free-color tints.
Release remains 0.7.1.1. Native and shared regression tests pass; the lab launch
was blocked before game startup, so live gameplay validation remains outstanding.
The dev 0871bfa6 integration retains Windows' complete-sidecar
alignment bypass. Native Linux sidecar serving and this bypass remain unported;
Linux continues its existing alignment path. Static publication metadata was
verified, but the lab failed before startup, preventing live lifetime proof.
The dev c8dd5157 integration adds Linux offline coverage for
threaded terrain-sidecar encoding and POSIX file handling. Native game-side
capture/serving remains unported; terrain_sidecar_threads has no native
runtime effect. No native save-time improvement is claimed.
The dev fdfb79e8 integration retains
Windows range tracking for multiple terrain versions. Native sidecar serving
and alignment bypass remain unported after fresh static analysis and a lab
startup failure; native alignment behavior is unchanged.
The dev 5b817efb integration keeps a terrain sidecar
while another served terrain version awaits its pass. Each version skips only
once; a pass that runs releases the file. Native sidecars remain experimental
and default off. Live validation was blocked before game startup.
The dev 9602a389 integration adds
experimental native terrain streaming during joiner loads and guarded save
terrain selection. Sidecars remain disabled by default pending live lifetime
and ownership validation; the lab launch failed before game startup.
The dev 40e12f76 integration
adds terrain_sidecar_read_local=0 for stream-only testing when both peers can
see the host's save folder. The default is 1; native sidecars remain experimental
and require terrain_sidecar=1. With local reads and terrain_stream both off,
the normal terrain computation runs. This switch does not disable sidecar writes.
The dev b6d73041 integration retains Windows’
4 GiB maximum automatic free-commit threshold and commit_tight_mb override.
Native terrain paging continues to use MemAvailable; this Windows setting
has no native effect. Release remains 0.7.1.1.
The dev 5fd49a24 integration gives
native terrain-sidecar lookups a cursor per thread, reset for each load and
grid. Sidecars remain experimental and default off; no live speedup is claimed.
The dev 26564158 integration searches
outward from each native terrain-sidecar worker's last hit and reports probes
per lookup at load completion. Sidecars remain experimental and default off;
fixture probe counts do not establish a live load-time improvement.
The dev 7e3d3bfa integration retains the Windows material-index
optimization and DLL-map profiler support. Native material-index acceleration
remains unported: the Linux selection loop is inlined, and the lab failed
before startup, preventing buffer-lifetime proof. Release remains 0.7.1.1.
The dev 8066c58f integration retains the default-off Windows
material-index measurement probe. Native material_index_probe remains
unported after static investigation and a lab startup failure; Linux produces
no material_probe.txt. Windows measurements do not establish native tile
hashes or compression sizes. Release remains 0.7.1.1.
The dev 65302e5d integration
adds native parallel sidecar decoding at the alignment pass and retains the
file for both terrain versions. Sidecars remain experimental and off by default;
fixture tests pass, but the lab could not start for live validation.
The dev a2e47f2c integration
retains Windows profiler follow mode and ETW stack/wait readers as developer
tools. Native runtime behavior and release 0.7.1.1 are unchanged.
The dev 7bace802 integration retains Windows load-speed
findings, including the rejected material-index chunk-size experiment. These
are upstream measurements; native runtime behavior and release 0.7.1.1 are unchanged.
The dev 0eb9eea2 integration lowers Windows’ automatic
free-commit threshold to 2..3 GiB (unknown RAM: 3 GiB). Native terrain paging
retains its existing MemAvailable policy; commit_tight_mb has no native
effect. Release remains 0.7.1.1.
The dev a896a1cb integration fixes the native plugin host’s
rejection of 5–13-byte hooks, including the terrain sidecar’s 13-byte AddTile
hook. Release remains 0.7.1.2; local lab startup was blocked before the game ran.