17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-03 00:26:22 +01:00

multiplayer: the session imposes the settings that decide the physics

server_hello.config had been a TODO carrying a zero, and every peer ran with
whatever its own eu07.ini happened to say - including a vehicle physics thread
count, which makes the order vehicles are stepped in depend on how threads get
scheduled.

- the handshake now carries a bitfield of the settings that change how the
  physics comes out (full physics, realistic control) and a joining peer takes
  them on, saying in the log what changed
- a multiplayer session runs the vehicle physics on one thread on every peer,
  host included

Settings that only affect what a player sees or how comfortable the controls
feel stay with the player; only what alters the outcome belongs in here.
This commit is contained in:
2026-09-06 19:58:28 +00:00
parent 30fa68cfd8
commit 65159b9546
5 changed files with 58 additions and 2 deletions

View File

@@ -102,6 +102,21 @@ extern crew_registry Crews;
// how long a disconnected peer keeps its place in the crew
constexpr double RECONNECT_GRACE_SECONDS = 60.0;
// settings the server imposes on everybody, carried in the handshake. only things that
// change how the physics comes out belong here - looks and comfort stay with the player
enum session_config_flags : int64_t
{
CONFIG_FULLPHYSICS = 1 << 0,
CONFIG_REALISTICCONTROL = 1 << 1
};
// packs the settings this machine is running, for the server to hand out
int64_t pack_session_config();
// takes on the settings the server handed us
void apply_session_config(int64_t Config);
// settings a session needs regardless of who set what, applied on every peer
void enforce_session_settings();
// resolves the identity of a connecting peer. an unknown or empty token means somebody
// new and gets a fresh peer id together with a token of their own; a token this server
// handed out before brings back the peer id that went with it, and with it the seat in