skate3recomp-multiplayer/src
MiTHRAL 7a48eb9f35 ghost multiplayer: beta hardening - version handshake, crash-proofing, logging, persistence
Production-readiness pass toward 1.0:

- Protocol handshake: JOIN carries kGhostVersion; a mismatched client is
  REFUSED by the relay (HELLO session 0) and its poses are never forwarded,
  so two builds can never silently corrupt each other's pose stream. The
  client surfaces the refusal in the menu and skips refused LAN hosts during
  discovery.
- Crash-proofing: every received payload is bounds-checked against its
  packet size before parsing (HELLO / PoseChunk / JOIN); both the client
  network thread and the relay thread are exception-guarded (a throw logs
  and keeps the loop alive instead of hitting std::terminate). The relay no
  longer creates client records for unknown-address POSE/LEAVE floods and
  enforces a hard client cap (--max-clients, default 64).
- Logging: rate-limited error logging throughout (send failures, resolve
  failures, refusals, thread exceptions, client-cap drops). The relay core
  uses a build-flag shim (REXLOG in-game, a tiny {} formatter in the
  dependency-free standalone), with --verbose join/leave lines for the
  server. Game crashes themselves are already handled by the SDK's crash
  handlers + file logs; this layer now avoids triggering them and explains
  itself when it can't connect.
- Settings persistence: server/room/name/port/rate save into the app's cvar
  config on change, so a player's multiplayer setup survives a restart.
- Menu: status now shows protocol refusals and the last error.

Tests updated for the handshake (version-refusal case added); all suites
pass.
2026-08-26 22:07:09 -04:00
..
native ghost multiplayer: beta hardening - version handshake, crash-proofing, logging, persistence 2026-08-26 22:07:09 -04:00
exception_compat.cpp add Skate 3 Title Update 3 support 2026-06-10 05:56:35 +01:00
main.cpp macos: name the app bundle and window title skate3recomp 2026-07-24 13:38:01 +01:00
skate3.rc.in build: embed version resources in the windows binaries (SDK bump) 2026-07-24 19:40:48 +01:00
skate3_app.manifest create Skate 3 recompilation project 2026-05-18 23:03:10 +01:00
skate3_app_common.cpp ghost multiplayer: beta hardening - version handshake, crash-proofing, logging, persistence 2026-08-26 22:07:09 -04:00
skate3_app_common.h ghost multiplayer: cloth on ghosts + player nameplates 2026-08-26 21:17:43 -04:00
skate3_demo_path.cpp render: true ultrawide through the native renderer 2026-07-20 00:36:16 +01:00
skate3_demo_path.h render: extended draw distance and world streaming pre-load 2026-07-19 18:24:12 +01:00
skate3_draw_distance.cpp app: unload stream-probe cells before map transitions tear them down 2026-07-24 13:38:01 +01:00
skate3_fov.cpp add ultrawide and live FOV support 2026-06-10 05:56:34 +01:00
skate3_fov.h add ultrawide and live FOV support 2026-06-10 05:56:34 +01:00
skate3_iso_installer.cpp installer: read the ISO install directory before the wizard moves the paths (SDK bump) 2026-07-24 20:47:39 +01:00
skate3_iso_installer.h add macOS build and launch support 2026-06-06 15:15:18 +01:00
skate3_iso_installer_macos.mm add Skate 3 Title Update 3 support 2026-06-10 05:56:35 +01:00
skate3_native_debug_dialog.cpp render: surface the sticky-failure fallback (EMULATED readout, F5 retry, forced-failure debug hook) 2026-07-21 03:31:11 +01:00
skate3_native_debug_dialog.h render: showcase decals/dyn layers, blackout bookends, and hot-rebuild fixes 2026-07-21 02:40:19 +01:00
skate3_native_ghost_dialog.cpp ghost multiplayer: beta hardening - version handshake, crash-proofing, logging, persistence 2026-08-26 22:07:09 -04:00
skate3_native_ghost_dialog.h ghost multiplayer: cloth on ghosts + player nameplates 2026-08-26 21:17:43 -04:00
skate3_native_render.cpp Add ghost multiplayer: UDP relay + pose broadcasting + placeholder cubes 2026-08-26 20:12:45 -04:00
skate3_native_render.h debug: frame snapshot harness and offline guest data-model reconstruction 2026-07-02 01:03:49 +01:00
skate3_native_scene.cpp ghost multiplayer: cloth on ghosts + player nameplates 2026-08-26 21:17:43 -04:00
skate3_native_scene.h ghost multiplayer: cloth on ghosts + player nameplates 2026-08-26 21:17:43 -04:00
skate3_native_scene_gpu.cpp ghost multiplayer: cloth on ghosts + player nameplates 2026-08-26 21:17:43 -04:00
skate3_native_scene_gpu_internal.h render: occlusion-cull statics hidden behind rendered geometry 2026-07-24 13:38:01 +01:00
skate3_native_scene_post.cpp render: declare copy-source usage on the readback source textures 2026-07-24 21:49:05 +01:00
skate3_native_scene_state.h capture: place sort-list batched piece clones with their instance matrix 2026-07-24 13:38:02 +01:00
skate3_screenshot.cpp shading parity program: shader source mirror, A/B capture, offline ucode emulation 2026-07-06 23:23:13 +01:00
skate3_screenshot.h shading parity program: shader source mirror, A/B capture, offline ucode emulation 2026-07-06 23:23:13 +01:00
skate3_shader_disasm.cpp in-world neon spline waypoints, F5 live renderer toggle, F6 screenshots, compass icon fixes 2026-07-05 01:38:10 +01:00
skate3_shader_disasm.h in-world neon spline waypoints, F5 live renderer toggle, F6 screenshots, compass icon fixes 2026-07-05 01:38:10 +01:00
skate3_title_update_installer.cpp installer: adopt the restyled setup wizards 2026-07-19 13:35:54 +01:00
skate3_title_update_installer.h add Skate 3 Title Update 3 support 2026-06-10 05:56:35 +01:00
skate3_ultrawide_guest.h src: include cstddef in headers that use size_t 2026-07-24 13:38:01 +01:00
skate3_user_settings.cpp add user profiles and in-game settings 2026-06-04 15:47:46 +01:00
skate3_user_settings.h add user profiles and in-game settings 2026-06-04 15:47:46 +01:00
skate3_version.h.in add packaging presets and runtime staging 2026-06-04 18:56:43 +01:00
skate3_win_icon.cpp win-icon: no more visible pre-icon duplicate next to the exe 2026-07-17 04:26:56 +01:00
skate3_win_icon.h exe icon from the player's own game files at runtime; close-clone prop jitter fix 2026-07-11 09:29:02 +01:00