Variables & types
Le réflexe n°1 à corriger si tu viens de C++, C# ou Blueprint : en Verse, une variable est immuable par défaut. Une fois qu'elle a une valeur, cette valeur ne change plus — jamais — sauf si tu as explicitement demandé le contraire. C'est l'inverse de la plupart des langages, où tout est modifiable sauf mention contraire (const, final, readonly...). Ce choix n'est pas arbitraire : du code qui ne peut pas changer une valeur dans ton dos est plus facile à raisonner, en particulier dans un jeu où plusieurs bouts de logique peuvent tourner en même temps.
Piège
Si tu viens de C++, C# ou Blueprint, ton réflexe naturel sera de supposer que tout est modifiable sauf mention contraire. En Verse, c'est l'inverse : une variable est immuable par défaut, et le reste, jamais.
Déclarer une variable immuable
StartHealth : int = 100
Bonus : int = 10
Chaque ligne suit la même forme : Nom : Type = Valeur. Une fois StartHealth déclarée, aucune ligne suivante ne peut lui donner une autre valeur — le moteur refuse.
Note pour ce parcours : le vrai Verse (UEFN) permet aussi d'écrire StartHealth := 100 en laissant le langage déduire le type tout seul. Le moteur simplifié de VerseTrainer (verse-lite) ne supporte pas encore ce raccourci pour une variable simple : il faut toujours écrire le type explicitement avec : Type = Valeur. Retiens la version longue pour tous les exercices de ce parcours ; tu retrouveras le raccourci := en explorant un vrai projet UEFN.
Piège
Nom := Valeur (sans le type) fonctionne dans un vrai projet UEFN mais pas ici pour une variable simple — le moteur de VerseTrainer ne le supporte pas encore. Écris toujours Nom : Type = Valeur dans les exercices de ce parcours.
Déclarer une variable modifiable
Pour qu'une variable puisse changer, il faut le dire explicitement avec var à la déclaration, puis utiliser set à chaque modification :
var Health : int = 100
set Health -= 25
Health
set accepte aussi les raccourcis +=, -=, *=, /=, qui font l'opération et réaffectent en une seule ligne — set Health -= 25 revient à dire « retire 25 à Health et stocke le résultat dans Health ». Une variable déclarée sans var ne peut jamais apparaître après un set.
Les types de base
Ce parcours utilise quatre types simples :
int: un nombre entier (100,-3,0)float: un nombre à virgule (3.14,0.5)string: une chaîne de caractères ("Sword")logic: une valeurtrueoufalse
Le moteur n'exige rien de plus complexe pour l'instant : les tableaux, les maps et le type option ont chacun leur propre module plus loin dans le parcours.
Ce que tu vas pratiquer
Les exercices qui suivent te font manipuler ces deux formes (immuable et var/set) sur des scénarios de jeu simples : calculer une vie de départ, appliquer des dégâts, cumuler du butin. Retiens le réflexe : si une valeur ne doit jamais changer une fois posée, pas de var. Si elle doit évoluer au fil de l'exécution (une vie qui baisse, un score qui grimpe), var à la déclaration et set à chaque changement.
À retenir
Pas de var = valeur figée pour toujours. var à la déclaration + set à chaque changement = valeur qui peut évoluer. Le choix par défaut, en cas de doute, reste l'immuable.
Contenu à valider manuellement dans un vrai environnement UEFN avant publication définitive (voir SPEC.md §7 — fidélité sémantique).