Core RPG handbook · Development build / version notes
Documentation
Configure a streamed Core RPG world
Bind matching World Forge terrain catalogs, Core gameplay placement definitions and separate streaming radii.
Goal#
Bind matching Forge terrain publications and authoritative Core gameplay placements to one streamed location.
Before you begin#
Start from a working Core session with a registered LocationDefinition and valid scene identity, a saved Forge world, matching VisualClient and HeadlessCollision publications, and the session's NetworkPrefabsList. Use the Forge copy included with Core. Review Forge publication before continuing. These are development-checkout instructions; verify the required types and menus exist in your installed release.
Set it up#
- Create Assets → Create → GreenCloakGames → Travel → Streamed World Definition. Its
visualCatalogdefaults toWorldForge/visual/catalog.jsonandcollisionCatalogtoWorldForge/collision/catalog.json. Paths are relative toAssets/StreamingAssets. Copy each complete role publication, including companion bundles, to the corresponding folder. Absolute paths and..traversal are rejected. - On this definition, configure Client visual → Load radius / Retain radius and Server collision → Load radius / Retain radius. Values are 1–4 chunks. Legacy defaults are load 1 and retain 2; a raw serialized zero inherits the legacy value rather than disabling loading. Retain must be at least load and does not prefetch.
readinessTimeoutSecondsdefaults to 60 seconds. - Assign the definition to the registered location's Optional World Forge streaming → Streamed World (
streamedWorld) field. Keep the location's effectiveWorldOffsetand CoreGridManager.gridOriginat zero, with grid tile size matching the catalog. Only one logical streamed overworld is supported; overlapping location bounds are rejected. - Select the Forge
TileTickWorldAsset, then choose Assets → Create → GreenCloakGames → Travel → World Forge Gameplay Authoring. This creates aGameplayPlacementAuthoringsidecar andGameplayDefinitionCatalog. Open Tools → Green Cloak Games → World Forge → Core RPG Gameplay Placements. - Choose Gameplay sidecar and verify its World and Catalog. Assign Session network prefabs to the list actually used by the session
NetworkManager, and Core streamed world to your definition. - Click Refresh definitions, find your NPC/world-object definition with Find definition, and select it under Core definition. Click Prepare reusable network binding. This creates/registers a compatible occurrence prefab while preserving the original definition prefab. Its root must contain the supported NPC or world-object components. Keep the same network-prefab list assigned to the session NetworkManager.
- Choose Signed floor and enable Place in Scene view • click terrain (Esc cancels). Click the intended terrain location. Inspect Authored gameplay occurrences; adjust Orientation, Scale, Footprint (tiles), Footprint origin and Occurrence signed floor. Scale does not automatically enlarge logical footprint. Click Save authoring.
- Click Validate and publish gameplay descriptors… and select the matching canonical terrain
catalog.json. The tool writes<sidecarName>Published.jsonbeside the sidecar and bindsworldId,sourceHash,gameplayManifest,gameplayDefinitionsandgameplayContentHashon the streamed-world definition. A different WorldId is rejected. Rebuild and bind descriptors after placement or binding changes; do not manually patch hashes. - Test a host and a separate client crossing chunk boundaries, changing visual distance, revisiting resources and restarting the world. Also test missing bundles and a deliberately mismatched publication in a disposable copy, and confirm the error identifies the mismatch.
What you should see#
Terrain catalogs, gameplay descriptors and registered prefab bindings refer to the same world/source revision. Server gameplay and collision remain authoritative while clients load presentation. Changing the visual radius does not change server collision demand.
If something goes wrong#
- Static Forge Objects placement creates decoration; authoritative NPCs/resources belong in the Core gameplay sidecar.
- Missing companion bundles, absolute catalog paths, wrong WorldId/SourceHash or a stale gameplay manifest prevent compatible loading.
- Preparing a binding into a different NetworkPrefabsList does not register it with the running session. Assign the same list to NetworkManager.
- Nonzero effective location/grid offsets, mismatched tile size, overlapping locations or an incorrect signed floor violate the source integration rules.
- Importing standalone Forge over the Core-bundled copy can create assembly conflicts.
Next steps#
Walk across chunk boundaries, leave and return, reconnect, and check that changes survive a normal shutdown. Review saving and loading, authority boundaries and Forge troubleshooting when diagnosing failures.
