the files
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# Importing rooms
|
||||
|
||||
Drop a JSON file here and import it from the admin panel
|
||||
(`POST /admin/api/import_rooms`, form field `file` = the filename).
|
||||
|
||||
## What the file must look like
|
||||
|
||||
The same shape the room API returns — a `Results` array of full room objects, each with
|
||||
its `SubRooms`, and each subroom with its `AllSaves`:
|
||||
|
||||
```json
|
||||
{
|
||||
"Results": [
|
||||
{
|
||||
"RoomId": 12345,
|
||||
"Name": "SomeRoom",
|
||||
"CreatorAccountId": 1,
|
||||
"SubRooms": [
|
||||
{
|
||||
"SubRoomId": 1,
|
||||
"Name": "Home",
|
||||
"AllSaves": [
|
||||
{ "SubRoomDataSaveId": 1, "DataBlob": "ABC....room", "PersistenceVersion": 227 }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
`RoomId` and `SubRoomId` are reassigned on import — the server allocates its own ids, so
|
||||
they cannot collide with rooms already here. A room whose `Name` already exists is skipped.
|
||||
|
||||
## The blobs are a separate step
|
||||
|
||||
Importing brings in the room, its subrooms and each save's `DataBlob` **filename** — not the
|
||||
file. Until the matching `.room` file exists in `Data/CDN/RoomBlobs`, `FilterUnservableSaves`
|
||||
hides that save and the room loads its base Unity scene instead of the saved build. That is
|
||||
deliberate: a room that loads plain beats a room that will not load at all.
|
||||
|
||||
The import response lists every blob still missing (`blobsMissing`). Put those files in
|
||||
`Data/CDN/RoomBlobs` under exactly the filename in the save, and the room starts loading its
|
||||
build with no code change and no restart.
|
||||
|
||||
A zero-byte blob counts as missing.
|
||||
Reference in New Issue
Block a user