NodeWorld

Changements du SDK

0.3.5 (2026-10-30)

  • Le World Publisher construit les fichiers Android sans ombres : le jeu n'en dessine pas sur Quest.

0.3.4 (2026-10-29)

  • Le World Publisher et l'Avatar Publisher gardent les variantes de shaders avec lesquelles le jeu éclaire, quels que soient les réglages URP du projet : avec d'autres réglages que ceux du jeu, les lumières temps réel d'un monde n'éclairaient rien dans le jeu.

0.3.3 (2026-10-29)

  • Le World Publisher et l'Avatar Publisher gardent les variantes de shaders du GPU Resident Drawer, avec lequel le jeu dessine les objets fixes : sans elles, le décor d'un monde restait invisible dans le jeu.
  • La télé du monde d'exemple ne fait plus revenir la vidéo en arrière plusieurs fois de suite : la vidéo du joueur qui l'a lancée donne l'heure, et les autres s'y recalent au plus toutes les 8 secondes.

0.3.2 (2026-10-29)

  • Le Play mode marche dans un projet neuf : le SDK apporte l'avatar par défaut et les bulles d'aide des manettes, et importe dans le projet les exemples XR et les ressources de TextMesh Pro dont le joueur a besoin.
  • En Play mode, comme dans le jeu, les caméras et les EventSystems de ta scène sont éteints : tu vois par les yeux du joueur, et les curseurs des panneaux se glissent.
  • Le joueur du Play mode n'a plus de script manquant.
  • En Play mode, Maj+R te fait réapparaître, comme dans le jeu.
  • Le World Publisher et l'Avatar Publisher construisent pour Vulkan, l'API graphique du jeu, quels que soient les réglages du projet : un monde construit avec Direct3D s'affichait en rose.

0.3.1 (2026-10-28)

  • Pulse analyse la musique sur la carte graphique, comme AudioLink, et non plus dans son script.
  • Pulse : la place de la tablette est partagée avec l'instance.
  • À chaque image, un script n'est appelé que pour les fonctions que sa classe a, comme dans Udon. Republie ton monde avec ce SDK pour en profiter.
  • Le journal du jeu dit ce que coûtent tes scripts tant qu'ils prennent 4 ms par image ou plus, par classe de script et par fonction.

0.3.0 (2026-10-28)

  • Le World Publisher compile les scripts d'un monde une seule fois, en premier, en un module WebAssembly (scripts/client.wasm) pour toutes les plateformes, que le jeu des joueurs et les serveurs font tourner dans leur interpréteur. wamrc, fluxverify et la plateforme Linux ARM64 disparaissent, et le SDK est bien plus léger.
  • Plus de clé de créateur : les mondes ne sont plus signés, il n'y a plus de clé à exporter ni à garder, ni de manifest.sig. manifest.json (format 4) liste toujours chaque fichier avec sa taille et son SHA-256.
  • Les mondes publiés avec un ancien SDK doivent être republiés avec celui-ci.
  • Deux threads des scripts d'un monde qui atteignent une classe en même temps ne voient plus ses champs statiques vides : le second attend que le premier les ait préparés.
  • En mode Play, comme dans le jeu, le chien de garde ne compte que le code de tes scripts : le travail de l'éditeur pendant un appel ne les arrête plus, et un appel d'un script au jeu qui prend une seconde ou plus est nommé dans la Console.

0.2.1 (2026-10-28)

  • Le SDK tient maintenant en trois paquets installés depuis le registre NodeWorld dans le Package Manager de Unity, et mis à jour depuis là : NodeWorld SDK Worlds pour faire un monde, NodeWorld SDK Avatars pour faire un avatar, tous deux avec NodeWorld SDK Base.
  • NodeWorld SDK Worlds vient avec un monde d'exemple à importer, avec un portail, un miroir, des objets que tout le monde attrape, une télé et d'autres, et NodeWorld SDK Avatars avec l'avatar par défaut du jeu, prêt à publier, et la préparation d'un avatar étape par étape.
  • Les scripts n'atteignent plus que les objets de leur monde : les avatars, les portails, les appareils photo et les voix que NodeWorld pose dans la scène du monde pendant qu'il tourne ne sont plus trouvés, modifiés ni touchés par un raycast.
  • Les scripts ne lisent plus les touches et le bouton du menu (Échap, Tab, P, Maj+R, Y sur la manette gauche), n'utilisent plus la couche 31, ne dessinent plus une caméra sur l'écran du joueur et ne mettent plus un canvas d'écran au-dessus de ceux du client : le joueur peut toujours ouvrir le menu, réapparaître et partir.
  • Les scripts FL# se compilent sans rien installer : le compilateur et ses outils viennent avec le SDK et tournent sur le runtime .NET de l'éditeur Unity, sous Windows et Linux, et la config du monde ne demande plus leurs chemins.
  • Create, NodeWorld, FL# Scripts Folder dans la fenêtre Project crée le dossier des scripts d'un monde, et Visual Studio et Rider y connaissent l'API FL# : saisie semi-automatique, documentation de l'API et erreurs du compilateur.
  • Le World Publisher compile aussi les scripts du monde pour les serveurs Linux ARM64, contrôle le code machine des quatre plateformes qu'il construit — Windows, Linux, Linux ARM64 et Quest — juste après la compilation, et garde le dossier de sortie sur ton ordinateur au lieu de le mettre dans les fichiers du monde.
  • Un monde sans scripts FL# peut se publier : laisse vides les Flux Sharp Sources de sa NW World Config.
  • Le SDK, l'API FL# et sa bibliothèque sont sous licence MIT, et le SDK liste les logiciels d'autres auteurs qu'il embarque avec leurs licences.
  • Les scripts FL# atteignent Internet avec HttpClient et ClientWebSocket de .NET, et chargent des images avec Texture.LoadFromUrl et ImageConversion.LoadImage ; sur l'appareil des joueurs, chaque site passe par le choix du joueur ; Web.LoadString n'existe plus.
  • Les scripts FL# font tourner un gros travail sur plusieurs threads avec les vrais System.Threading et System.Threading.Tasks (Thread, le pool de threads, Task.Run, Parallel, lock, les collections concurrentes) ; l'API du monde reste sur le thread principal, et MainThread.Post / await MainThread.Yield() y ramènent le travail.
  • Nouveau paquet Pulse : les mondes peuvent faire réagir leurs lumières et leurs matériaux à leur musique, avec une tablette que les joueurs prennent en main pour la régler.
  • Chaque type et chaque membre public du SDK a sa description, affichée par ton éditeur de code et dans la référence du SDK sur docs.nodeworldvr.com.
  • Pendant qu'un joueur écrit dans un champ de texte, du menu ou d'un monde, les scripts FL# ne reçoivent aucune touche, et le clavier VR écrit dans les champs uGUI comme dans les champs TextMeshPro.
  • En Play mode au clavier et à la souris, un clic qui commence sur un canvas d'écran de ton monde (Screen Space Overlay) ne clique plus et ne prend plus aussi ce qui est derrière.
  • Tes mondes sont signés avec ta propre clé de créateur, créée à ta première publication hors de tes projets : le World Publisher affiche son empreinte, l'exporte et l'importe, et a une case Monde 18+ ; les chemins du signataire et de la clé de la config du monde ont disparu, et les mondes publiés avec un SDK plus ancien sont à republier.
  • Les scripts FL# fabriquent et modifient des meshes pendant le jeu, les donnent aux mesh filters et aux mesh colliders et relisent leurs données, sans copier leurs tableaux.
  • Networking.Instantiate fait apparaître pour tous les joueurs de la salle des copies d'un objet marqué du nouveau composant Network Template, avec leurs scripts, leur état synchronisé et leur propriétaire, et Networking.Destroy les retire.
  • Les lots d'objets déplacent, tournent, mettent à l'échelle, montrent ou cachent et colorent des milliers d'objets d'un coup, et les meshes par instances dessinent des milliers de copies d'un mesh sans GameObject.
  • Le script d'un joueur peut envoyer un événement réseau au même script sur le serveur, par exemple pour demander un portail aux scripts serveur du monde.
  • Après chaque construction, le World Publisher te dit quels composants, appels d’événements et événements d’animation de ton monde ne sont pas autorisés : le jeu des joueurs charge le monde sans eux.
  • Pulse : les commandes de la tablette ne gardent plus d'appels vers l'ancien système (ses scripts FL# les font marcher) ; construire un monde qui la pose n'affiche plus rien sous Contrôle du contenu.