NodeWorld

Ton premier script FL#

Depuis SDK 0.2.1

Il te faut le SDK dans un projet de monde (le SDK NodeWorld) et une scène avec son objet NW World (mondes). Rien d'autre : le SDK apporte fluxc, le compilateur FL#, et le lance avec le runtime .NET fourni avec l'éditeur Unity.

Créer le dossier des scripts

  1. Dans la fenêtre Project (la fenêtre de Unity qui liste les fichiers du projet), fais un clic droit sur le dossier de ton monde, puis Create, NodeWorld, FL# Scripts Folder.
  2. Un dossier Flux apparaît, avec une définition d'assembly qui porte le nom du dossier où tu as cliqué : dans Assets/Taverne, c'est Taverne.Flux.asmdef. Unity ne touche pas aux scripts de ce dossier : c'est fluxc qui les compile, avec l'API FL#.

Écrire le script

Dans le dossier Flux, crée un fichier Porte.cs avec ton éditeur de code (écrire du FL# dans ton IDE) :

csharp
using NodeWorld.Flux;

namespace Taverne
{
    /// <summary>Une porte qui s'ouvre quand un joueur l'utilise, pour tout le monde dans la salle.</summary>
    public class Porte : FluxScript
    {
        public float angleOuvert = 90f;   // réglé depuis la scène
        private bool _ouverte;

        protected override void Start() => Interaction.SetInteractable(gameObject, true);

        protected override void OnInteract() => SendNetworkEvent(NetworkEventTarget.All, "Basculer");

        protected override void OnNetworkEvent(string name, NetReader arguments, int senderId)
        {
            if (name != "Basculer") return;
            _ouverte = !_ouverte;
            transform.localRotation = Quaternion.Euler(0f, _ouverte ? angleOuvert : 0f, 0f);
        }
    }
}

OnInteract tourne sur l'appareil du joueur qui utilise la porte ; SendNetworkEvent avec NetworkEventTarget.All lance OnNetworkEvent sur l'appareil de chaque joueur : la porte tourne pour tout le monde.

La mettre dans le monde

  1. Sélectionne la NW World Config du monde et glisse Porte.cs dans sa liste Flux Sharp Sources.
  2. Sélectionne la porte dans la scène : Add Component, NodeWorld, FL# Script.
  3. Clique sur Read the scripts : le SDK compile une fois les scripts du monde et liste leurs classes. Choisis Taverne.Porte dans Script.
  4. Donne à la porte un Network Id (un nom au choix, unique dans le monde) : les événements réseau et les objets synchronisés en ont besoin. Ses champs s'affichent dessous : règle angleOuvert si 90 ne te va pas.

L'essayer

Passe en Play mode : le SDK compile les scripts du monde pour ton ordinateur et les fait tourner comme le jeu. Vise la porte et utilise-la.

Une erreur dans un script arrête la compilation avec le message de fluxc dans la Console : le fichier, la ligne et la colonne, et l'erreur C#, par exemple Porte.cs(18,27): error CS1002: ; expected. Ton éditeur de code souligne les mêmes erreurs pendant que tu tapes.

Le publier

Ouvre NodeWorld, World Publisher et clique sur Build World (publier un monde) : le World Publisher compile les scripts en un module natif par plateforme et les range dans le dossier du monde. Aucun compilateur ni chemin à régler.