HomeGamesUpdatesPricingMethodology
Steam News24 May 20261mo ago

Shane's Trains 0.2.0 - Multiplayer (Beta) & Economic Realism

⚠️ MULTIPLAYER IS BETA - please read This release ships the first public version of multiplayer.

Full notes

Full Shane's Trains update

Read the full published notes in a cleaner layout. The original post stays linked below.

What changed

0 fixes8 additions10 changes3 removals
  • Compatibility
  • Server
  • Maps
  • Balance
  • Gameplay
  • UI and audio
changed⚠️ MULTIPLAYER IS BETA - please read
changedThis release ships the first public version of multiplayer. The simulation core (network, economy, region access fees, end-of-day rollup) has been reworked to run identically on every peer, and the major architectural questions are settled.
addedThat said: this is a brand-new system with a lot of moving parts. You should expect minor issues - UI states that don't quite refresh, edge cases in disconnect handling, occasional desync warnings, lobby-flow quirks, balance numbers that still need tuning. None of this should corrupt your saves or your single-player map edits, but the experience won't be as polished as the rest of the game yet.
changedPLEASE REPORT WHATEVER YOU HIT via the Steam Discussions board. Logs, screenshots, "I did X and Y happened instead of Z" - all useful. Feedback this round directly shapes the post-beta hardening pass.
addedNew: Multiplayer (Beta)
changedUp to 8 players competing on the same Scottish rail map, each running their own train company - separate balance, services, trains, drivers, reputation, achievements.
- Early-game multipliers softened: overnight floor0.20.35- Early-game multipliers softened: overnight floor increased, buff35, dawn0.50.735, dawn increased, buff7, winter Highlands0.60.87, winter Highlands increased, buff- Loopback test harness scales17- Loopback test harness scales increased, buff

Shane's Trains changes

changed⚠️ MULTIPLAYER IS BETA - please read
changedThis release ships the first public version of multiplayer. The simulation core (network, economy, region access fees, end-of-day rollup) has been reworked to run identically on every peer, and the major architectural questions are settled.
addedThat said: this is a brand-new system with a lot of moving parts. You should expect minor issues - UI states that don't quite refresh, edge cases in disconnect handling, occasional desync warnings, lobby-flow quirks, balance numbers that still need tuning. None of this should corrupt your saves or your single-player map edits, but the experience won't be as polished as the rest of the game yet.
changedPLEASE REPORT WHATEVER YOU HIT via the Steam Discussions board. Logs, screenshots, "I did X and Y happened instead of Z" - all useful. Feedback this round directly shapes the post-beta hardening pass.
addedNew: Multiplayer (Beta)

⚠️ MULTIPLAYER IS BETA - please read

This release ships the first public version of multiplayer. The simulation core (network, economy, region access fees, end-of-day rollup) has been reworked to run identically on every peer, and the major architectural questions are settled.

That said: this is a brand-new system with a lot of moving parts. You should expect minor issues - UI states that don't quite refresh, edge cases in disconnect handling, occasional desync warnings, lobby-flow quirks, balance numbers that still need tuning. None of this should corrupt your saves or your single-player map edits, but the experience won't be as polished as the rest of the game yet.

PLEASE REPORT WHATEVER YOU HIT via the Steam Discussions board. Logs, screenshots, "I did X and Y happened instead of Z" - all useful. Feedback this round directly shapes the post-beta hardening pass.

New: Multiplayer (Beta)

Up to 8 players competing on the same Scottish rail map, each running their own train company - separate balance, services, trains, drivers, reputation, achievements.

  • Lockstep simulationevery peer runs the sim locally over a synchronised stream of inputs. Tolerates ~200 ms latency, no dedicated servers, NAT traversal via Steam Datagram Relay. - Pick your starting region, livery colour and company name in the lobby. Drop-in friend invites via the Steam overlay. - Win-condition presets at lobby time: First to £5M, £10Mtotal profit or Last Standing. - League standings panel, popout players window, end-of-day league summary, MP-aware economy, event-log, stats modals. - All 6 regions unlocked for every player in MP - the campaign-style purchase wall stays SP-only. Operate anywhere. - Disconnect handling preserves slot indices so reconnect remains possible later; dropped peer's row greys out + shows a "(disconnected)" badge in the leaderboard. - Auto-save disabled in MP; only the host can save, and the save bundles everyone's state. - State-hash desync detection: peers exchange hashes every 100 ticks; mismatch surfaces a red banner with a Dismiss button. If you see this, please screenshot and report it - that's exactly the kind of bug I need to chase down.

New: Region access fees

Modelled on UK Network Rail variable charges.

  • Claim a region in the lobby and you become its track-access owner. First-claim wins; if two players pick the same one, the earlier slot keeps ownership. - New "Region Access" panel (opens from the leaderboard) lets owners set per-call and per-km rates on each region they own, clamped to a realistic range. - Rival services running through your region pay you per train-km and per station call. Both sides see the flow in their end-of-day summary (Access fees earned / Access fees paid). - Runner-up on a contested region still operates there freely they just don't collect.

Reworked: passenger demand & fare economics

The demand formula was treating every trip as 20 km, which made realistically-priced intercity services look 9× over market and zeroed out demand. Now scales with each service's actual route distance.

  • Real-world referencePerth → Inverness anytime single is £35.30. A service charging £5 + £0.17/km (~£35 full route) now lands at ~55% demand × ~37% acceptance ≈ ~20% throughput. Premium intercity is viable - just not packed. - Willingness-to-pay range widened from 1.2-1.9× baseline to 1.2-2.2× so real anytime singles fit comfortably. - Early-game multipliers softened: overnight floor 0.2 → 0.35, dawn 0.5 → 0.7, winter Highlands 0.6 → 0.8. Day 1 at 06:00 January is no longer a zero-passenger desert. - New real-time "Demand: ~X% - " indicator in the create-service form, colour-coded and route-distance aware. Tooltips on the fare inputs explain the trade-off between fare and ridership.

Reworked: daily cost projection

Capital purchases no longer poison the "+£X/d" rate display in the top status bar.

  • Was: hiring 6 drivers at £5k each pushed the projection to -£30k/d, even though the actual recurring driver salary is 6 × £200 = £1,200/d. - Now: capital spend (hires, repairs, track upgrades, event remediation) shows as an immediate balance drop only. Recurring costs - driver salaries, operating per-km, station/track maintenance, loan payments - still feed the rate correctly.

Quality of life

  • New "Your fleet" identity strip at the top of the left sidebar in MP - coloured livery dot + company name, so you can tell at a glance whose trains and services the panels are showing. - Day-end summary frequency setting: Every day, Weekly, Monthly, Never auto-open. Stops the end-of-day modal interrupting if you don't want it. - Map editor button stays visible in MP, disabled with a tooltip ("Map editing is disabled during multiplayer sessions") rather than vanishing. - Speed buttons disabled on MP clients now explain why on hover ("Speed is controlled by the host"). - 8-player lobby layout: peer list scales to fit all eight slots without scrolling. - Loopback test harness scales 1 → 7 clients (was 1 → 4) for local multi-player testing. - Single source of truth for the livery palette - colours now match across the leaderboard, map, end-of-day modal, players window, and lobby.

Performance

  • Triple-polled mp_get_state consolidated to a single 500 ms source of truth: 7 IPCs/s → 2 IPCs/s in steady state. - Dev diagnostics (1 Hz heartbeat watchdog, per-gesture phase IPCs from the map, DevTools state-exposure hook) all gated behind dev builds. Release builds no longer pay the per-gesture IPC cost. - Region-ownership map switched to BTreeMap for deterministic iteration under lockstep - defence-in-depth against future desync bugs.

Bug fixes

  • Host in MP showed only its starting region's stations as unlocked (others greyed). The frontend's per-player field scoping only ran for clients; host now sees the full network its backend already had. Same fix also unsticks per-player economy, trains, services updates that were going stale on the host. - All 6 regions correctly unlocked for every MP slot at game start, including peers without a LobbyInfo broadcast at the moment Start Game fires. - Track waypoints now sync from host to clients. Custom curves the host has drawn in the editor render identically on every peer; the client's own local waypoint overrides are ignored during MP to prevent re-divergence. - Passenger generation in MP iterates the union of all players' served stations + reachable destinations. Stations served by player 2 but not player 1 now spawn passengers - fixes the "rapid revenue collapse" symptom from earlier MP test sessions. - Local network edits (custom stations, tracks, waypoint overrides) are now protected during MP. All save, import IPCs return a clear error rather than overwriting your SP files when the host's authoritative state is in memory. Going back to SP after a session, your custom map is exactly as you left it. - Lockstep determinism hardening: per-player iteration ordering, deterministic input apply order within a tick, explicit sorts on cached_served_stations, cached_reachable before iteration, BTreeMap for pending inputs. Two peers now produce byte-identical state from identical inputs. - Frame counter synchronised on StartGame so a joining client's input look-ahead lands at the right wall-clock time.

Beta feedback - Steam Discussions

If something feels off, breaks, or you have an opinion on how the multiplayer flow should work, please post in the Steam Discussions board for Shane's Trains. The categories that are most useful right now:

  • Bug reports - what happened, what you expected, screenshot or short repro if you can - Balance feedback - fares, demand, access fees, win conditions - Lobby & connection issues - joining, NAT, kicks, disconnects - Desync reports - if you see the red "Connection desynced" banner, please grab a screenshot and describe what was happening just before

Thank you for testing - multiplayer is a big project for a small game and your reports genuinely move the next patch forward.

Source

Steam News / 24 May 2026

Open original post

Changelog.gg summarizes and formats this update. How we read updates.