mirror of
https://github.com/djdevin/recflare.git
synced 2026-09-08 14:41:28 -07:00
[match] do not allow crossplay between 2023 and 2025
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
-- The client build a room instance is running, so matchmaking only ever puts players
|
||||
-- on the SAME build into one session. Two builds sharing a Photon room disagree about
|
||||
-- how the scene and its objects serialize, so a 2023 client and a 2025 one in the same
|
||||
-- instance is a broken room rather than a mixed one — and there is nothing to notice it
|
||||
-- by afterwards, since each side simply fails to see what the other spawned.
|
||||
--
|
||||
-- The value is the `rn.ver` claim of the token whose matchmake CREATED the instance
|
||||
-- (the match worker stamps it; see resolveRoomInstance), and the joinable-instance
|
||||
-- search filters on it. A room busy with players on another build therefore reads as
|
||||
-- empty and the joiner gets a fresh instance beside them.
|
||||
--
|
||||
-- Rows written before this column existed have no `$.gameVersion`, so `game_version`
|
||||
-- is NULL and they match no build at all. That is deliberate: an unknown build is not
|
||||
-- a build to place someone into, and an instance is only ever a live session — once it
|
||||
-- empties, deleteEmptyRoomInstances retires it and nothing is left carrying a NULL.
|
||||
--
|
||||
-- A virtual generated column like the rest of the table (the value lives in the `data`
|
||||
-- blob); no index — the search is already keyed on the indexed `room_id`.
|
||||
--
|
||||
-- Generated from packages/domain/src/room-instance-db.ts (ROOM_INSTANCE_SCHEMA_DDL) —
|
||||
-- keep in sync.
|
||||
|
||||
ALTER TABLE room_instance
|
||||
ADD COLUMN game_version TEXT GENERATED ALWAYS AS (json_extract(data, '$.gameVersion')) VIRTUAL;
|
||||
Reference in New Issue
Block a user