Publish a world
The World Publisher builds the open scene into the files a NodeWorld server gives to players, one set per platform.
Build
- Open the world's scene and save it.
- Open NodeWorld, World Publisher.
- In the Build tab, check:
- World ID: the world's ID, also the name of its folder on servers. Letters, digits,
-and_; - Display Name: the name players see;
- the output folder (by default
Builds/<World ID>in your project). It stays on your computer, in the project's user settings: the NW World Config goes into the world's files, so it holds no folder of your computer; - the platforms: Windows, Linux and Android (Meta Quest).
- World ID: the world's ID, also the name of its folder on servers. Letters, digits,
- In the Metadata tab, write the world's Description, shown to players. Check 18+ world if the world is for adults only: minors cannot join it, and adults see it only if they show 18+ content (18+ content).
- Click Build World.
The game draws with Vulkan on every platform: the World Publisher sets each platform of the project to Vulkan before building it (Project Settings, Player, Graphics APIs). A world built with Direct3D shows pink in the game.
Unity switches to each platform in turn and builds it: this takes a while and the editor does not respond until it is done. A platform that fails leaves its message in the Console and in the world-build-<platform>-diagnostics.log file of the output folder.
Before building, the window checks the textures of the scene: a texture without mipmaps and mipmap streaming must be fixed first (its import settings: Generate Mipmaps and Mip Streaming).
First, it compiles the world's FL# scripts with fluxc, which comes with the SDK: nothing to install or set (FL# scripts). A script that does not compile stops the build at once, with its error in the Console. The result is one WebAssembly module for every platform, which players' games and servers run in their FL# sandbox.
A world without scripts (Flux Sharp Sources empty in its NW World Config) is published without them: no scripts or server folder.
It also checks the world against what a world may hold: what players' games will remove (an Audio Listener, an Event System, a script of yours…) shows under Content check in the Build tab and in the Console. The world is built all the same.
What it makes
In the output folder, a folder named after the World ID:
Tavern/
manifest.json format, name, description, 18+, every file with its size and SHA-256
StandaloneWindows64/ the world for Windows
StandaloneLinux64/ the world for Linux
Android/ the world for Meta Quest
scripts/client.wasm the world's FL# scripts, for every platform
server/ the scene the server runs the world's FL# scripts onGive this whole folder to the host of the server: they copy it into their server's worlds folder (worlds on a server). Players download it from that server the first time they enter the world. Change nothing in it: the server and the players' games refuse a world whose files no longer match its manifest.json.
A world refused as too old
A world published with an SDK older than 0.3.0 (manifest format older than 4) is refused: servers do not serve it, and the loading screen tells players This world must be republished by its creator. Publish it again with the current SDK, then give the new folder to its hosts.
Every platform matters
A player can only enter a world that has the files of their platform. Publish Android too, or players on Quest cannot join. Quest has less memory and power than a PC: use the Platform Switch to lighten the Quest version. Servers need no platform of their own: every server runs the world's scripts from scripts/client.wasm.
