17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-10-18 17:19:18 +02:00
Commit Graph

19 Commits

Author SHA1 Message Date
54d8b112b8 multiplayer stage 7: versioned snapshots instead of replaying the session
Joining meant replaying backbuffer.bin from the very first frame of the
session, so the longer a session ran, the longer it took to get in - and the
whole history had to be kept for it.

- network/snapshot: a chunked container with a version of its own. Every
  section carries its length, so a peer built before a section existed reads
  a newer snapshot and simply walks past what it does not know. Version 1
  carries the session (tick, clock, weather, the state of the random engine),
  the vehicles (position on the track, speed, direction, controls, brake
  pressures, whether the AI is driving) and the crew roster. Switches,
  memcells, signals and the event queue are the next sections
- joining is now: handshake -> load the scenario -> CLIENT_READY -> the server
  takes a snapshot on the spot and sends it -> the peer goes live. Because the
  snapshot is taken at the moment the peer becomes active there is no backlog
  to replay at all; the frame by frame catch-up is gone
- the server refuses a peer that loaded a different scenario, with a readable
  reason instead of a silent desync
- reconnecting into a session that is already loaded asks for a fresh snapshot
  straight away rather than waiting for a loader that will not run again
- a vehicle is only put back on the rails when it really is somewhere else; the
  arithmetic that turns the recorded bogie offset back into the nose distance
  place_on_track() expects mirrors what that function itself does
- the session log is still written out - it is useful when picking a desync
  apart - but nothing depends on replaying it any more
2026-09-06 19:37:28 +00:00
copilot-swe-agent[bot]
7e49aa8740 Rewrite #includes to use explicit subdirectory paths
Co-authored-by: Hirek193 <23196899+Hirek193@users.noreply.github.com>
2026-03-14 19:16:48 +00:00
jakubg1
22c0aed82d Change asio::ip::address::from_string() to asio::ip::make_address()
The former function has been removed from Boost recently.
2025-09-09 15:51:33 +02:00
milek7
ca8145904b do not make unnecessary exports on nix platforms 2021-01-30 16:00:58 +01:00
milek7
29f8f91ad8 Merge remote-tracking branch 'tmj/master' into sim 2020-10-18 23:35:14 +02:00
milek7
936effa9db openvr WIP 2020-09-29 22:27:13 +02:00
tmj-fstate
7a0c89f508 milek7/sim branch network code import 2020-02-16 03:03:17 +01:00
milek7
5c84f8b156 remove DBG_NEW new preprocessor kludges, ensure stdafx.h is included everywhere, add debug build to Azure CI 2019-08-30 23:35:58 +02:00
milek7
4344ec192a network changes 2019-04-03 01:28:46 +02:00
milek7
75a9db413f tweak packet sizes 2019-02-06 00:16:45 +01:00
milek7
6962e25042 network improvements and fixes 2019-02-06 00:03:48 +01:00
milek7
85ad17af3c network fixes and improvements, code refactoring 2019-02-03 23:24:34 +01:00
milek7
cf6cbe9a8e work 2019-01-29 19:02:16 +01:00
milek7
672e3e022a work 2019-01-28 23:19:41 +01:00
milek7
d5760c9e9c work 2019-01-28 00:34:36 +01:00
milek7
90f18ea651 work 2019-01-27 20:38:03 +01:00
milek7
1ef74838ee work 2019-01-20 15:32:03 +01:00
milek7
1314f09c4d work 2019-01-18 00:36:41 +01:00
milek7
f63bd04bfe work 2019-01-18 00:26:48 +01:00