Files
DorkNet/DorkNet.Server/Protos/dorknet_room_data.proto
T
Alexa 02f7bc386d feat: Enhance UgcPurchasablesController to handle bulk requests with object arrays
- Updated Bulk method to parse incoming JSON object arrays for UGC item IDs.
- Introduced ReadBulkIdsAsync to handle both object arrays and flat GUID lists.
- Added synthetic placeholder responses for missing UGC items to prevent client errors.

feat: Implement MatchmakeRoom and MatchmakeSubRoom endpoints in GoToController

- Added MatchmakeRoom and MatchmakeSubRoom methods to facilitate joining public and sub-rooms by numeric ID.
- Enhanced ApplySubRoomMutation to ensure proper state transitions for sub-rooms.
- Improved logging for matchmaking actions.

fix: Refactor PlayerSettingsController to handle database save exceptions

- Introduced SaveSettingsChangesAsync to manage DbUpdateException for busy SQLite scenarios.
- Updated methods to call SaveSettingsChangesAsync instead of direct SaveChangesAsync.

chore: Update URL coverage documentation for new matchmaking endpoints

- Documented new MatchmakeRoom and MatchmakeSubRoom endpoints in url-coverage.md.

chore: Add default room data file for room loading

- Included default_room.room to serve as a fallback for missing room data.

fix: Improve SQLite concurrency handling in DatabaseBootstrap

- Configured SQLite to use WAL mode and set a busy timeout for better concurrency.

chore: Create SqliteErrors utility for handling SQLite exceptions

- Added SqliteErrors class to encapsulate logic for detecting busy SQLite exceptions.

refactor: Update RoomDataBlobService to serve default room data

- Modified GetDefaultBlob to load and serve a default room blob with proper role data.
2026-06-23 20:54:29 +03:00

101 lines
3.4 KiB
Protocol Buffer

syntax = "proto3";
// Trimmed subset of Rec Room's persistence schema. Only the messages and
// fields we actually populate when handing the client a "default-but-with-
// permissions" room blob. Wire-compatible with the full schema in
// RR_ProtobufDefinitions.zip because proto3 ignores unknown fields and
// uses defaults for missing ones — so the client deserializes the bytes we
// emit into its richer types just fine.
//
// Field numbers MUST match the upstream schema exactly; deviating breaks
// the wire format.
package rec_room;
option csharp_namespace = "RecRoom.Protobuf";
// ── Overridable wrappers (rec_room/persistence/overridable_field_data.proto)
message OverridableIntData {
bool overrides = 1;
int32 inner_value = 2;
}
message OverridableBoolData {
bool overrides = 1;
bool inner_value = 2;
}
message OverridableStringData {
bool overrides = 1;
string inner_value = 2;
}
message OverridableListStringData {
bool overrides = 1;
repeated string inner_value = 2;
}
// ── Per-role permission grants (rec_room/player_roles/player_room_role_data.proto)
//
// Field numbers verified against the 2023 WriteTo disassembly in
// C:\tmp\recroom-2023-03-21-isil\IsilDump\RecRoom.Protobuf.Runtime.
message PlayerRoomRoleData {
reserved 15;
int32 DEPRECATED_role_id = 1;
int32 DEPRECATED_role_rank = 2;
bool DEPRECATED_is_role_active = 3;
bool DEPRECATED_is_ag_role = 4;
string role_name = 5;
OverridableStringData name = 6;
OverridableBoolData can_assign_roles = 7;
OverridableIntData vote_kick_permission = 8;
OverridableBoolData can_invite = 9;
OverridableBoolData DEPRECATED_can_edit_circuits = 10;
OverridableBoolData can_start_games = 11;
OverridableBoolData can_talk = 12;
OverridableBoolData can_print_photos = 13;
OverridableBoolData can_edit_room_roles = 14;
OverridableBoolData can_self_revive = 16;
OverridableBoolData can_end_games_early = 17;
bool is_modified_by_player = 18;
OverridableListStringData auto_assigned_game_roles = 19;
int32 role_version = 20;
OverridableBoolData can_change_game_mode = 21;
OverridableBoolData can_use_maker_pen = 22;
OverridableBoolData can_use_delete_all_button = 23;
OverridableBoolData can_save_inventions = 24;
OverridableBoolData disable_mic_auto_mute = 25;
OverridableBoolData can_use_share_cam = 26;
string role_guid = 27;
OverridableBoolData unknown_permission_20 = 28;
OverridableBoolData unknown_permission_21 = 29;
OverridableBoolData unknown_permission_22 = 30;
OverridableBoolData unknown_permission_23 = 31;
}
// ── Role collection (rec_room/player_roles/room_role_collection_data.proto)
message RoomRoleCollectionData {
repeated PlayerRoomRoleData room_roles = 1;
int32 rec_net_migration_version = 2;
}
// ── PersistedRoomData top-level (rec_room/persistence/persisted_room_data.proto)
//
// The full schema has many more fields — we only set the fields the
// December 2020 client needs for an editable minimal blob. Its
// RoomPersistenceManager checks field 1 against a minimum editable
// persistence version of 20, so generated blobs must carry a current
// version or room editors see the native "save data is out-of-date" prompt.
message PersistedRoomData {
int32 DEPRECATED_version = 1;
// field 2 (persistence_views) — repeated, default empty list.
// fields 3..22 — left at defaults.
RoomRoleCollectionData room_role_data = 23;
// field 24+ — left at defaults.
}