Publier un monde
Le World Publisher construit la scène ouverte en fichiers qu’un serveur NodeWorld donne aux joueurs, un jeu de fichiers par plateforme.
Construire
- Ouvre la scène du monde et enregistre-la.
- Ouvre NodeWorld, World Publisher.
- Dans l’onglet Build, vérifie :
- World ID : l’ID du monde, aussi le nom de son dossier sur les serveurs. Lettres, chiffres,
-et_; - Display Name : le nom que voient les joueurs ;
- le dossier de sortie (par défaut
Builds/<World ID>dans ton projet). Il reste sur ton ordinateur, dans les réglages utilisateur du projet : la NW World Config part dans les fichiers du monde, elle ne contient donc aucun dossier de ton ordinateur ; - les plateformes : Windows, Linux et Android (Meta Quest).
- World ID : l’ID du monde, aussi le nom de son dossier sur les serveurs. Lettres, chiffres,
- Dans l’onglet Metadata, écris la Description du monde, montrée aux joueurs. Coche Monde 18+ (18+ world si ton ordinateur n’est pas en français) si le monde est réservé aux adultes : les mineurs ne peuvent pas le rejoindre, et les adultes ne le voient que s’ils affichent le contenu 18+ (contenu 18+).
- Clique sur Build World.
Le jeu dessine avec Vulkan sur toutes les plateformes : le World Publisher règle chaque plateforme du projet sur Vulkan avant de la construire (Project Settings, Player, Graphics APIs). Un monde construit avec Direct3D s'affiche en rose dans le jeu.
Unity passe sur chaque plateforme à tour de rôle et la construit : cela prend du temps et l’éditeur ne répond plus jusqu’à la fin. Une plateforme qui échoue laisse son message dans la Console et dans le fichier world-build-<plateforme>-diagnostics.log du dossier de sortie.
Avant de construire, la fenêtre vérifie les textures de la scène : une texture sans mipmaps ni mipmap streaming doit d’abord être corrigée (ses réglages d’import : Generate Mipmaps et Mip Streaming).
D’abord, elle compile les scripts FL# du monde avec fluxc, livré avec le SDK : rien à installer ni à régler (scripts FL#). Un script qui ne compile pas arrête tout de suite la construction, avec son erreur dans la Console. Le résultat est un seul module WebAssembly pour toutes les plateformes, que le jeu des joueurs et les serveurs font tourner dans leur bac à sable FL#.
Un monde sans scripts (Flux Sharp Sources vide dans sa NW World Config) se publie sans eux : pas de dossier scripts ni server.
Elle compare aussi le monde à ce qu’un monde peut contenir : ce que le jeu des joueurs retirera (un Audio Listener, un Event System, un script à toi…) s’affiche sous Contrôle du contenu dans l’onglet Build et dans la Console. Le monde est construit quand même.
Ce qu’il crée
Dans le dossier de sortie, un dossier au nom du World ID :
Tavern/
manifest.json format, nom, description, 18+, chaque fichier avec sa taille et son SHA-256
StandaloneWindows64/ le monde pour Windows
StandaloneLinux64/ le monde pour Linux
Android/ le monde pour Meta Quest
scripts/client.wasm les scripts FL# du monde, pour toutes les plateformes
server/ la scène sur laquelle le serveur fait tourner les scripts FL# du mondeDonne ce dossier entier à l’hébergeur du serveur : il le copie dans le dossier des mondes de son serveur (les mondes d’un serveur). Les joueurs le téléchargent depuis ce serveur la première fois qu’ils entrent dans le monde. N’y change rien : le serveur et le jeu des joueurs refusent un monde dont les fichiers ne correspondent plus à son manifest.json.
Un monde refusé parce que trop ancien
Un monde publié avec un SDK antérieur à 0.3.0 (format de manifeste plus ancien que 4) est refusé : les serveurs ne le servent pas, et l’écran de chargement dit aux joueurs Ce monde doit être republié par son créateur. Publie-le à nouveau avec le SDK actuel, puis donne le nouveau dossier à ses hébergeurs.
Chaque plateforme compte
Un joueur ne peut entrer que dans un monde qui a les fichiers de sa plateforme. Publie aussi Android, sinon les joueurs sur Quest ne peuvent pas rejoindre. Le Quest a moins de mémoire et de puissance qu’un PC : utilise le Platform Switch pour alléger la version Quest. Les serveurs n’ont pas de plateforme à eux : chaque serveur fait tourner les scripts du monde depuis scripts/client.wasm.
