mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-28 00:18:47 -07:00
fix(cdn): serve baked RRO rooms a loadable stub blob (version 16, save skeleton)
An enabled baked room still had no Maker Pen: the client fetched the CDN's
synthetic stub for room_{id}_dorknet_v8.dat and silently loaded the room
with no room roles. Measured against Rec Center's working room_100_v1.dat
(10,930 bytes, the same client loads it with Maker Pen), the old 1,872-byte
roles-only stub was stamped PersistedRoomVersion 19 — past the March-2023
client's ceiling of 16, which only the S3-hit path clamped — and lacked the
skeleton every real save carries (last_save_time, activity_id = the room's
LocationReplicationId, connectable graph, scene settings, object model,
room_mood_* blocks).
RoomDataBlobService.BuildRroEditableBlob now emits that skeleton per room
at version 16 (untyped fields appended on the wire; payloads are Rec
Center's defaults verbatim). CdnController resolves the RRO room for the
miss path, passes its location id, and clamps synthesised blobs the same
way it clamps S3 hits. Tests pin version 16, the activity id and
CanUseMakerPen on every role.
This commit is contained in:
@@ -152,6 +152,17 @@ baked into the paintball scene). Its rule is the Maker Pen chip
|
||||
Rec Room delivered inside the room blob. Without it there is no
|
||||
`BattleRoyaleManager` in the scene.
|
||||
|
||||
Stub shape matters. Until something is saved the CDN synthesises the blob,
|
||||
and the client fetches it through `RecNet.Rooms.GetRoomData` and rejects
|
||||
one it deems unusable — a clone surfaces that as the bare "Failed to copy
|
||||
room", a baked room as a silent load with no room roles (no Maker Pen).
|
||||
Compared against Rec Center's working `room_100_v1.dat`, the old stub was
|
||||
stamped `PersistedRoomVersion` 19 (client ceiling 16; only the S3-hit path
|
||||
clamped) and lacked the save skeleton (`last_save_time`, `activity_id` =
|
||||
LocationReplicationId, connectable graph, scene settings, object model,
|
||||
`room_mood_*`). `RoomDataBlobService.BuildRroEditableBlob` now emits that
|
||||
skeleton per room at version 16.
|
||||
|
||||
Admin switch: `POST api/admin/v1/rooms/{id}/subrooms/{sub}/blob/enable`
|
||||
stamps `RoomService.SyntheticDefaultRoomDataBlobName(id)` on the scene and
|
||||
room; `.../blob/reset` clears it. See `docs/admin.md` → "RRO room data
|
||||
|
||||
Reference in New Issue
Block a user