World Forge · Development build · Availability

Documentation

Bake and publish a world

Distinguish scene baking from separate visual-client and headless-collision publications, then configure streaming distances.

On this page

Goal#

Bake a practice world into a scene or create matching runtime publications for graphical and headless consumers.

Before you begin#

Save a valid practice world first. The publication UI requires Windows 64-bit as the active target in Unity Build Profiles. Keep runtime output folders outside Assets, with a separate folder for each role.

Set it up#

  1. Save the world/chunks and open Publish. For a scene-based test, click Bake Into Current Scene and review the confirmation. This adds generated content to the current scene, marks it modified and supports Undo. Save the scene separately. It does not install an external streaming publication.
  2. For runtime content, choose VisualClient, select its output folder outside Assets, then click Publish VisualClient and confirm.
  3. Under World → Properties, enable Mesh Colliders before collision publication. Return to Publish, choose HeadlessCollision, select a different output folder and click Publish HeadlessCollision.
  4. Keep the complete publication for each role: catalog and companion bundles. Both roles must come from the same authored revision, with matching WorldId and SourceHash. Build the bundles for the actual consumer target; Windows output does not establish WebGL compatibility.
  5. Install each complete role folder at the path expected by its consumer. For Core, continue with the Core streamed-world guide, which binds matching catalogs and gameplay descriptors. Do not hand-edit identity hashes to combine different publications.
  6. Test chunk entry, release and re-entry; missing bundles; retries; world restart; and shutdown on your target. Use a small world to check these cases before publishing a larger one.

Streaming visual and collision distances#

TileTickWorldStreamer radii count chunks. A square load radius r can request (2r + 1)² chunks per requester. Retention keeps already loaded chunks while the requester moves; it does not prefetch the full retain radius. Retention must be at least the load radius. Visual and collision roles can have different demand.

Generic World Forge streamer defaults in current build
Serialized fieldDefaultMeaning
loadingRadius1 chunkNew content demand around a requester.
retentionRadius2 chunksKeeps already loaded content.
buildsPerFrame1Maximum chunk preparations started per frame.
buildBudgetMilliseconds8 msPreparation scheduling target; an indivisible step may exceed it.
unloadGraceSeconds2 secondsDelay before releasing unwanted chunks.
retryDelaySeconds / automaticRetries1 second / 2 retriesRecovery attempts after preparation fails.
surfaceCacheBudgetMiB512 MiBBudget for retained shared surface resources.
maximumResidentChunks64Maximum runtime chunks resident per streamer.
contentLoadTimeoutSeconds60 secondsTime before a content load fails.

These generic defaults are not a performance benchmark or the full Core configuration. Core exposes separate client-visual and server-collision settings on its streamed-world definition.

Native World Forge pre-publication settings showing separate VisualClient and HeadlessCollision roles; output folder has not yet been chosen.
The Publish workspace. Choose the output role and target before publishing. Select the image to enlarge it.

What you should see#

A scene bake creates scene content. Runtime publication creates complete role-specific catalogs and bundles matching one world/source revision. Graphical consumers load presentation; headless consumers use collision data without requiring water renderers or materials.

If something goes wrong#

  • Copying catalog.json alone omits companion content.
  • Disabled Mesh Colliders block collision-role publication. An output folder inside Assets, a shared output folder for both roles or an unsupported active target also blocks the UI.
  • Changing scale, terrain, water or placements makes an earlier publication stale. Rebuild matching roles and gameplay descriptors.
  • Standalone development release notes record a graphical native shutdown access violation (0xC0000005). If you encounter it, keep the native crash log and include the Unity version, graphics mode and a small reproduction in your report.

Next steps#

Integrate Core gameplay, or use publication troubleshooting. Record Unity/tool versions, role and target when reporting a failure.