Skip to content

Bigmap 0.4.0 Linux dev.3 — Terrain memory and performance

Pre-release
Pre-release

Choose a tag to compare

@silver2127 silver2127 released this 16 Sep 19:58

Native Linux build for Steam Transport Fever 2 build 35924.

New in Linux dev.3

  • Experimental lossless terrain RAM compression, using the shared Windows terrain codec and a native Linux userfaultfd backend. Opt-in: terrain_cache_compress=1, terrain_cache_hot_mb=1024 in the installed [tpf2_bigmap] config, then restart.
  • Faster saves: zstd level 1 and a 64 KiB stream buffer. Enabled by default (save_fast=1); files may be larger, with the same save format.
  • Exact SSE2 terrain min/max scan, enabled by default (terrain_minmax_fast=1). Terrain resolution and samples are unchanged.

One 128x128-tile test save settled at 4.98 GiB RSS versus 7.78 GiB in dev.2. Loading peaks remained about 9.8 GiB. This single-run comparison is not a frame-rate benchmark or a guarantee for other worlds.

Install / upgrade

Extract the tarball and run bash install.sh without sudo. Keep existing multiplayer launch options if multiplayer is installed; otherwise use the launch line printed by the installer. Existing configs are preserved, and new defaults are written to .cfg.example. Memory compression is off by default, including upgrades. See the bundled INSTALL.md for configuration and requirements.

Validation and scope

All four automated test suites and the installer/upgrade/uninstall checks pass. All twenty native patch sites match the supported ELF. Live checks covered loading, rendering, simulation, joined-track construction, saving and reloading with compression enabled. A fresh process also reloaded that save with all three new optimizations disabled.

Compression needs user-mode userfaultfd with missing-page/write-protection support. If unavailable, it logs that fact and leaves compression off. This backend does not support kernel-origin faults to evicted terrain pages; other drivers/mods and long sessions need further testing. No kernel settings are changed. Multiplayer synchronization was not tested for these additions.

Material compression, terrain copy sharing, generation-buffer reuse, the remaining Windows renderer optimizations and depth 12/13 are still unported. Large-map and sparse-density features from Linux dev.2 are retained. See PORT.md for implementation evidence and measurement limits.