⚠ AvisNote Site en cours de refonte : certaines pages évoluent encore.This site is being redesigned: some pages are still evolving.
Arcreane ARCREANE Les arcanes de la créationThe arcana of creation
PROJET — UEFN PRO BOOTCAMP 2026PROJECT — UEFN PRO BOOTCAMP 2026

The Verse Academy.The Verse Academy.

Une île Fortnite pour apprendre Verse pas à pas. C’est le projet que je présente au UEFN Pro Bootcamp 2026 d’Epic Games : si ma candidature est retenue, voici ce que je construirai entre le 30 novembre 2026 et le 4 janvier 2027.A Fortnite island to learn Verse step by step. This is the project I am submitting to Epic Games’ UEFN Pro Bootcamp 2026: if I am selected, this is what I will build between 30 November 2026 and 4 January 2027.

FormatFormat
Une île Fortnite publiée (UEFN) et un projet de départ téléchargeable pour écrire son propre code Verse.A published Fortnite island (UEFN) plus a downloadable starter project to write your own Verse code.
PublicAudience
Grands débutants en programmation, étudiants en jeu vidéo, créateurs Fortnite qui veulent passer de l’assemblage de devices à Verse.Programming beginners, game development students, Fortnite creators who want to move from wiring devices to writing Verse.
MéthodeMethod
Celle de tous mes cours : un seul jeu fil rouge, une notion par étape, chaque notion débloque une fonctionnalité visible. L’île reprend la structure de mon cours d’introduction à Python.The one I use in all my courses: a single thread game, one concept per step, each concept unlocks a visible feature. The island follows the structure of my introductory Python course.
Livré au bootcampBootcamp delivery
L’arène centrale (le jeu fil rouge) et les ailes 1 à 3 (les trois premiers chapitres), jouables et publiées. L’aile 4 si le temps le permet.The central arena (the thread game) and wings 1 to 3 (the first three chapters), playable and published. Wing 4 if time allows.
EnsuiteAfterwards
Douze ailes et un projet final, sur l’année 2027.Twelve wings and a final project, over 2027.
N° 01

Le constatThe gap

Epic prépare Unreal Engine 6 avec Verse au cœur de son modèle de programmation. Apprendre Verse aujourd’hui, c’est se préparer à cette transition. La documentation officielle et les tutoriels de la communauté sont de bonne qualité, mais ils vivent tous en dehors du jeu : on lit une page, puis on retourne dans l’éditeur.

À ma connaissance, aucune île Fortnite jouable n’est dédiée à l’apprentissage de Verse lui-même. The Verse Academy veut combler ce manque : apprendre Verse dans l’environnement où il s’exécute, en voyant immédiatement ce que chaque ligne change.

Epic is building Unreal Engine 6 with Verse at the heart of its programming model. Learning Verse today is a way to prepare for that transition. The official documentation and the community tutorials are good, but they all live outside the game: you read a page, then go back to the editor.

To my knowledge, no playable Fortnite island is dedicated to learning Verse itself. The Verse Academy aims to fill that gap: learning Verse inside the environment where it runs, and seeing straight away what each line changes.

N° 02

Une méthode déjà éprouvéeA method already in use

The Verse Academy transpose la méthode de tous mes cours : un projet fil rouge qui grandit séance après séance. Son modèle direct est Asteroid Defender, mon cours d’introduction à Python en douze séances de deux heures, pour des étudiants qui n’ont jamais programmé.The Verse Academy carries over the method behind all my courses: one thread project that grows session after session. Its direct model is Asteroid Defender, my introductory Python course in twelve two-hour sessions, for students who have never programmed.

Les étudiants ne font pas d’exercices déconnectés. Ils font vivre un seul jeu, séance après séance. Le moteur est fourni et verrouillé ; ils n’écrivent que dans leurs propres fichiers. Au premier lancement, le vaisseau est là mais ne bouge pas et ne tire pas. Chaque notion apprise débloque une fonctionnalité visible : le score, les règles, les vagues, les armes, les ennemis, les meilleurs scores. À la fin du semestre, chacun ajoute une fonctionnalité personnelle à un jeu complet.

Students do not work on disconnected exercises. They bring one single game to life, session after session. The engine is provided and locked; they only write in their own files. On first launch, the ship is there but does not move or shoot. Each concept they learn unlocks a visible feature: score, rules, waves, weapons, enemies, high scores. At the end of the term, each student adds a personal feature to a complete game.

Expliquer avant de manipulerExplain before doing

Aucune notion n’est utilisée avant d’avoir été vue, même de façon anodine. Le jeu impose l’ordre : chaque notion arrive quand il en a besoin.No concept is used before it has been taught, not even in passing. The game sets the order: each concept arrives when the game needs it.

Le jeu ne plante jamaisThe game never crashes

Ce que l’étudiant n’a pas encore écrit tourne sur une valeur par défaut. Ce défaut annonce ce qui manque ; il ne ressemble jamais à une réponse juste.Whatever the student has not written yet runs on a default value. That default says what is missing; it never looks like a correct answer.

Le jeu montre ce qu’il attendThe game shows what it expects

En pause, survoler un élément affiche le nom exact que le moteur attend. Le jeu devient la carte de ce qu’il reste à écrire.In pause mode, hovering an element shows the exact name the engine expects. The game becomes the map of what is left to write.

Reprendre la mainTaking over

À chaque chapitre, une mécanique que le moteur gérait seul passe sous le contrôle de l’étudiant. C’est le fil narratif du semestre.In each chapter, a mechanic the engine used to handle alone passes under the student’s control. It is the narrative thread of the term.

Trois niveaux par exerciceThree levels per exercise

Un socle obligatoire, un renfort sur la même notion, une mission bonus qui n’utilise que des notions déjà acquises.A required core task, a reinforcement on the same concept, and a bonus mission that only uses concepts already learned.

Un guidage qui s’effaceGuidance that fades

Le premier exemple est donné en entier ; les suivants sont décrits en mots et écrits par analogie. Lire une erreur s’apprend dès la première séance.The first example is given in full; the next ones are described in words and written by analogy. Reading an error is taught from the very first session.

N° 03

De Python à Verse : la carte de l’îleFrom Python to Verse: the island map

Au centre, une arène : Core Defender, un jeu de défense où l’on protège un cœur arcanique contre des vagues de drones. C’est le jeu fil rouge. Autour, douze ailes ; chacune correspond à un chapitre du cours Python et fait passer une mécanique de l’arène sous le contrôle de l’apprenant.In the centre, an arena: Core Defender, a defence game in which you protect an arcane core against waves of drones. It is the thread game. Around it, twelve wings; each matches a chapter of the Python course and hands one arena mechanic over to the learner.

CORE DEFENDER arène fil rougethread arena + projet final+ final project ENTRÉE · HUBENTRANCE · HUB AILEWING 01 Noms & valeursNames & values AILEWING 02 Calculs & scoreMaths & score AILEWING 03 DécisionsDecisions AILEWING 04 BouclesLoops AILEWING 05 CollectionsCollections AILEWING 06 FonctionsFunctions AILEWING 07 Portée & récursionScope & recursion AILEWING 08 Classes & devicesClasses & devices AILEWING 09 HéritageInheritance AILEWING 10 Filets de sécuritéSafety nets AILEWING 11 Temps & concurrenceTime & concurrency AILEWING 12 Mémoire & modulesMemory & modules
Livré au bootcampDelivered at the bootcamp Si le temps le permetStretch goal Feuille de route 20272027 roadmap
AileWing Chapitre Python d’origineOriginal Python chapter Ce que l’apprenant reprend en mainWhat the learner takes over
01 · Noms et valeursNames and values Ch. 1 — Variables : prise en mainCh. 1 — Variables: getting started Le réglage de départ de l’arène : titre, munitions, points de vie du cœur, nom du joueur au HUD, vitesse des drones.The arena’s starting setup: title, ammo, core health, player name on the HUD, drone speed.
02 · Calculs et scoreMaths and score Ch. 2 — Opérateurs : le score prend vieCh. 2 — Operators: the score comes alive Le calcul du score : points par drone abattu, bonus de série, multiplicateur de vague.Scoring: points per drone, streak bonus, wave multiplier.
03 · Décisions et échecDecisions and failure Ch. 3 — Conditions : le jeu décideCh. 3 — Conditions: the game decides Les règles : alerte « cœur critique », état du bouclier affiché, condition de fin de partie.The rules: “core critical” alert, shield state on the HUD, game-over condition.
04 · BouclesLoops Ch. 4 — Boucles jouées au ralentiCh. 4 — Loops in slow motion Le compte à rebours de vague et l’apparition des drones un par un.The wave countdown and spawning drones one by one.
05 · CollectionsCollections Ch. 5 — Collections : le chapitre du plurielCh. 5 — Collections: things in the plural Les armes sélectionnables, les couleurs des drones, les formations.Selectable weapons, drone colours, formations.
06 · FonctionsFunctions Ch. 6 — Fonctions : nommer un gesteCh. 6 — Functions: naming an action Les dégâts, la composition des vagues, la difficulté, le texte du HUD.Damage, wave composition, difficulty, HUD text.
07 · Portée et récursionScope and recursion Ch. 7 — Portée et récursionCh. 7 — Scope and recursion Les motifs de tir en éventail ou en spirale, construits par récursion.Fan and spiral firing patterns, built recursively.
08 · Classes et devicesClasses and devices Ch. 8 — Classes : objets, attributs, méthodesCh. 8 — Classes: objects, fields, methods Le temps de recharge des armes et les bonus, gérés jusque-là par l’île.Weapon cooldown and power-ups, so far handled by the island.
09 · Héritage et interfacesInheritance and interfaces Ch. 9 — Héritage et polymorphismeCh. 9 — Inheritance and polymorphism Le comportement des drones : kamikaze, zigzag, boss.Drone behaviour: kamikaze, zigzag, boss.
10 · Échec, transactions et débogageFailure, transactions and debugging Ch. 10 — Débogage et exceptions : le filetCh. 10 — Debugging and exceptions: the safety net Le filet lui-même : le mode dégradé qui protège l’apprenant depuis l’aile 1 devient le sujet de l’aile.The safety net itself: the fallback mode that has protected the learner since wing 1 becomes the topic.
11 · Temps et concurrenceTime and concurrency Sans équivalent Python : aile propre à VerseNo Python equivalent: a Verse-only wing Le rythme des vagues, la durée des bonus, les phases du boss contre la montre.Wave pacing, power-up duration, boss phases against the clock.
12 · Mémoire et modulesMemory and modules Ch. 11 et 12 — Fichiers, puis modulesCh. 11 and 12 — Files, then modules Les meilleurs scores, qui survivent à la fin de la session, et l’architecture du projet.Best scores that survive the end of the session, and the project’s architecture.
Final · Projet personnelFinal · Personal project Ch. 12 — Projet finalCh. 12 — Final project Une fonctionnalité de son choix, qui combine au moins trois ailes.A feature of their choice that combines at least three wings.
N° 04

Une aile, quatre sallesOne wing, four rooms

Chaque aile suit le même parcours. On le traverse en jouant, sans rien installer.Every wing follows the same path. You walk through it by playing, with nothing to install.

VoirSee

La mécanique de l’aile tourne dans l’arène, d’abord avec la valeur par défaut, puis avec une version réussie. On voit la différence avant de lire une ligne de code.The wing’s mechanic runs in the arena, first on its default value, then in a working version. You see the difference before reading a single line of code.

LireRead

Des panneaux dans le décor montrent le code Verse qui pilote ce qu’on vient de voir, et le nom exact que l’île attend. La notion est expliquée avant d’être manipulée.Panels in the level show the Verse code driving what you just saw, and the exact name the island expects. The concept is explained before it is used.

PrédirePredict

Un extrait de code au mur, trois portes. Seule la bonne réponse ouvre la suite. C’est l’exercice de déroulé de code à la main de mes cours, transformé en salle de jeu.A code snippet on the wall, three doors. Only the right answer opens the way. It is the code-tracing exercise from my courses, turned into a game room.

Reprendre la mainTake over

Une carte de mission renvoie au projet de départ : socle, renfort, mission bonus. L’apprenant écrit son code, pousse ses changements et voit l’arène lui obéir.A mission card points to the starter project: core task, reinforcement, bonus mission. The learner writes the code, pushes the changes and sees the arena follow it.

N° 05

Jouer, puis construirePlay, then build

On n’écrit pas de code depuis Fortnite. Le projet fonctionne donc sur deux niveaux, et le second prolonge le premier.Nobody writes code from inside Fortnite. The project therefore works on two levels, the second extending the first.

Niveau 1 · JouerLevel 1 · Play

L’île publiéeThe published island

Accessible à tout joueur de Fortnite. On y apprend à lire Verse : voir, lire, prédire. C’est la porte d’entrée, sans installation ni prérequis.Open to any Fortnite player. It teaches how to read Verse: see, read, predict. It is the entry point, with no setup and no prerequisites.

Niveau 2 · ConstruireLevel 2 · Build

Le projet de départThe starter project

Le projet UEFN de Core Defender, partagé publiquement. Le code de l’arène est verrouillé ; l’apprenant n’écrit que dans son propre fichier Verse, qui s’enrichit d’une section par aile. Il modifie, pousse ses changements Verse dans la session d’édition en direct, et observe.The Core Defender UEFN project, shared publicly. The arena code is locked; the learner only writes in their own Verse file, which grows by one section per wing. Edit, push the Verse changes to the live edit session, observe.

# academy_config.verse — aile 1
# Le seul fichier à modifier. Le reste de l'île est verrouillé.

# Titre affiché au-dessus de l'arène
ArenaTitle:string = "Core Defender"

# Munitions en début de partie
StartingAmmo:int = 30

# Points de vie du cœur
CoreHealth:int = 500

# Vitesse des drones (1.0 = normale)
DroneSpeed:float = 1.5
# academy_config.verse — wing 1
# The only file to edit. The rest of the island is locked.

# Title shown above the arena
ArenaTitle:string = "Core Defender"

# Ammo at the start of a game
StartingAmmo:int = 30

# Core health points
CoreHealth:int = 500

# Drone speed (1.0 = normal)
DroneSpeed:float = 1.5

La question technique à résoudre au bootcamp. En Python, mon moteur vérifie à l’exécution si une variable existe : un nom absent laisse simplement la fonctionnalité éteinte. Verse est compilé et typé statiquement : un nom absent est une erreur de compilation.

Le fichier de départ contient donc, aile par aile, des définitions déjà présentes avec des valeurs volontairement inachevées : un cœur à 1 point de vie, un HUD qui indique ce qu’il reste à écrire. Rendre cette expérience aussi fluide qu’en Python est le premier chantier technique que je veux mener pendant le bootcamp.

The technical question to solve during the bootcamp. In Python, my engine checks at runtime whether a variable exists: a missing name simply leaves the feature switched off. Verse is compiled and statically typed: a missing name is a compile error.

So the starter file holds, wing by wing, definitions that already exist with deliberately unfinished values: a core with 1 health point, a HUD that says what is left to write. Making this feel as smooth as the Python version is the first technical task I want to work on during the bootcamp.

N° 06

Les douze ailes en détailThe twelve wings in detail

Contenu de travail : il sera ajusté pendant le bootcamp. Cliquer sur une aile pour l’ouvrir.Working draft: it will be adjusted during the bootcamp. Click a wing to open it.

01 Noms et valeursNames and valuesCh. 1 — Variables : prise en mainCh. 1 — Variables: getting started BootcampBootcamp
Notion VerseVerse concept
Une définition = un nom, un type, une valeur : StartingAmmo:int = 30. Types int, float, string. Commentaires #. Lire une erreur de compilation.A definition is a name, a type and a value: StartingAmmo:int = 30. Types int, float, string. # comments. Reading a compile error.
Reprise en mainTaken over
Le réglage de départ de l’arène : titre, munitions, points de vie du cœur, nom du joueur au HUD, vitesse des drones.The arena’s starting setup: title, ammo, core health, player name on the HUD, drone speed.
À écrireTo write
ArenaTitle · StartingAmmo · CoreHealth · PlayerName · DroneSpeed
Avant d’écrireBefore writing
Le cœur démarre à 1 point de vie, l’arme est vide, le HUD affiche « PlayerName : à écrire ».The core starts with 1 health point, the weapon is empty, the HUD reads “PlayerName: to write”.
Salle « Prédire »“Predict” room
DroneSpeed:float = 2 — accepté ou refusé ? (Refusé : un float s’écrit 2.0.)DroneSpeed:float = 2 — accepted or refused? (Refused: a float is written 2.0.)
SocleCore taskDonner une valeur aux cinq définitions, pousser, observer chaque effet dans l’arène.Give the five definitions a value, push, watch each effect in the arena.
RenfortReinforcementProvoquer puis lire trois erreurs : mauvais type, guillemets oubliés, nom mal orthographié.Trigger then read three errors: wrong type, missing quotes, misspelled name.
Mission bonusBonus missionRégler l’arène pour une partie « facile » puis « difficile », sans autre notion que les valeurs.Tune the arena for an “easy” then a “hard” game, using values only.
02 Calculs et scoreMaths and scoreCh. 2 — Opérateurs : le score prend vieCh. 2 — Operators: the score comes alive BootcampBootcamp
Notion VerseVerse concept
Opérateurs arithmétiques et de comparaison. int et float ne se mélangent pas sans conversion explicite. Première variable : var Score:int = 0 et set.Arithmetic and comparison operators. int and float do not mix without an explicit conversion. First variable: var Score:int = 0 and set.
Reprise en mainTaken over
Le calcul du score : points par drone abattu, bonus de série, multiplicateur de vague.Scoring: points per drone, streak bonus, wave multiplier.
À écrireTo write
PointsPerHit · StreakBonus · WaveMultiplier · var Score
Avant d’écrireBefore writing
Chaque drone abattu rapporte 0 point ; le HUD affiche « Score : formule à écrire ».Each drone is worth 0 points; the HUD reads “Score: formula to write”.
Salle « Prédire »“Predict” room
Score:int = 0 puis set Score = Score + 10 : que dit le compilateur ? (Refus : sans var, c’est une constante.)Score:int = 0 then set Score = Score + 10: what does the compiler say? (Refused: without var it is a constant.)
SocleCore taskÉcrire la formule de score et la voir s’appliquer en jeu.Write the scoring formula and see it applied in game.
RenfortReinforcementAjouter un bonus de série et comparer deux réglages.Add a streak bonus and compare two settings.
Mission bonusBonus missionCalculer une vitesse de vague en float à partir d’entiers, conversion comprise.Compute a wave speed as a float from integers, conversion included.
03 Décisions et échecDecisions and failureCh. 3 — Conditions : le jeu décideCh. 3 — Conditions: the game decides BootcampBootcamp
Notion VerseVerse concept
logic, comparaisons, if / else. Première rencontre avec l’échec : une expression qui peut échouer, comme Drones[5], se place dans un contexte d’échec au lieu de faire planter le jeu.logic, comparisons, if / else. First contact with failure: an expression that may fail, such as Drones[5], lives in a failure context instead of crashing the game.
Reprise en mainTaken over
Les règles : alerte « cœur critique », état du bouclier affiché, condition de fin de partie.The rules: “core critical” alert, shield state on the HUD, game-over condition.
À écrireTo write
Le corps d’un bloc de règles fourni par l’île (l’écriture d’une fonction complète arrive à l’aile 6).The body of a rules block provided by the island (writing a whole function comes in wing 6).
Avant d’écrireBefore writing
Le cœur n’alerte jamais ; le HUD affiche « Règles : à écrire ».The core never warns; the HUD reads “Rules: to write”.
Salle « Prédire »“Predict” room
Trois drones en jeu, if (D := Drones[5]): — quelle branche s’exécute ? (Le else : l’accès échoue, rien ne plante.)Three drones in play, if (D := Drones[5]): — which branch runs? (The else: the access fails, nothing crashes.)
SocleCore taskÉcrire l’alerte de cœur critique et la condition de fin.Write the critical-core alert and the end condition.
RenfortReinforcementTrois états de bouclier avec if / else if / else.Three shield states with if / else if / else.
Mission bonusBonus missionSécuriser un accès à la liste des drones par un contexte d’échec.Guard an access to the drone list with a failure context.
04 BouclesLoopsCh. 4 — Boucles jouées au ralentiCh. 4 — Loops in slow motion Si le temps le permetStretch goal
Notion VerseVerse concept
for (I := 1..N) (bornes incluses), for (D : Drones), filtres dans le for, loop et break. L’île rejoue chaque tour de boucle au ralenti pour le rendre visible.for (I := 1..N) (inclusive bounds), for (D : Drones), filters inside for, loop and break. The island replays each iteration in slow motion to make it visible.
Reprise en mainTaken over
Le compte à rebours de vague et l’apparition des drones un par un.The wave countdown and spawning drones one by one.
À écrireTo write
for · loop · break
Avant d’écrireBefore writing
La vague démarre sans compte à rebours, avec un seul drone.The wave starts with no countdown and a single drone.
Salle « Prédire »“Predict” room
for (I := 1..3) : combien de drones apparaissent ? (Trois.)for (I := 1..3): how many drones spawn? (Three.)
SocleCore taskCompte à rebours de 5 à 1, puis apparition de N drones.Countdown from 5 to 1, then spawn N drones.
RenfortReinforcementNe faire apparaître que les drones d’un certain type, avec un filtre.Spawn only drones of a given type, using a filter.
Mission bonusBonus missionUne boucle loop qui s’arrête d’elle-même quand la vague est vide.A loop that stops itself once the wave is empty.
05 CollectionsCollectionsCh. 5 — Collections : le chapitre du plurielCh. 5 — Collections: things in the plural Feuille de routeRoadmap
Notion VerseVerse concept
Tableaux []int, maps [string]int, tuples, options ?int. Lire une case qui n’existe pas échoue proprement.Arrays []int, maps [string]int, tuples, options ?int. Reading a slot that does not exist fails cleanly.
Reprise en mainTaken over
Les armes sélectionnables, les couleurs des drones, les formations.Selectable weapons, drone colours, formations.
À écrireTo write
Weapons · WeaponDamage · DroneColors · StartPosition
Avant d’écrireBefore writing
Une seule arme, un seul type de drone, une seule couleur.One weapon, one drone type, one colour.
Salle « Prédire »“Predict” room
WeaponDamage["Laser"] sans clé « Laser » : que se passe-t-il ? (L’accès échoue, la branche de repli s’exécute.)WeaponDamage["Laser"] with no “Laser” key: what happens? (The access fails, the fallback branch runs.)
SocleCore taskDéclarer trois armes et leurs dégâts.Declare three weapons and their damage.
RenfortReinforcementUne formation de drones décrite par un tableau de positions.A drone formation described as an array of positions.
Mission bonusBonus missionUn bonus aléatoire tiré dans un tableau.A random power-up picked from an array.
06 FonctionsFunctionsCh. 6 — Fonctions : nommer un gesteCh. 6 — Functions: naming an action Feuille de routeRoadmap
Notion VerseVerse concept
Définition, paramètres, valeur de retour, retour multiple en tuple, arguments nommés. La signature attendue par l’île est affichée en jeu.Definition, parameters, return value, multiple returns as a tuple, named arguments. The signature the island expects is shown in game.
Reprise en mainTaken over
Les dégâts, la composition des vagues, la difficulté, le texte du HUD.Damage, wave composition, difficulty, HUD text.
À écrireTo write
Damage(Base:float, Multiplier:float):float · SpawnPattern(Wave:int):tuple(int, float) · HudText(Name:string, Score:int):string
Avant d’écrireBefore writing
Le HUD affiche « HUD : HudText() à écrire » — un défaut qui annonce le manque, jamais une fausse réussite.The HUD reads “HUD: HudText() to write” — a default that names what is missing, never a fake success.
Salle « Prédire »“Predict” room
Que renvoie SpawnPattern(3) pour le code affiché au mur ?What does SpawnPattern(3) return for the code on the wall?
SocleCore taskÉcrire les quatre fonctions attendues par l’île.Write the four functions the island expects.
RenfortReinforcementAjouter un argument nommé avec valeur par défaut.Add a named argument with a default value.
Mission bonusBonus missionRéécrire les règles de l’aile 3 sous forme de fonctions.Rewrite the rules from wing 3 as functions.
07 Portée et récursionScope and recursionCh. 7 — Portée et récursionCh. 7 — Scope and recursion Feuille de routeRoadmap
Notion VerseVerse concept
Où vit un nom, ce qu’une fonction peut modifier, une fonction qui s’appelle elle-même avec un cas de base.Where a name lives, what a function may change, a function that calls itself with a base case.
Reprise en mainTaken over
Les motifs de tir en éventail ou en spirale, construits par récursion.Fan and spiral firing patterns, built recursively.
À écrireTo write
FanPattern(N:int):[]float
Avant d’écrireBefore writing
Un tir unique, droit devant.A single straight shot.
Salle « Prédire »“Predict” room
Combien d’angles renvoie FanPattern(3) ? Dans quel ordre ?How many angles does FanPattern(3) return? In what order?
SocleCore taskMotif en éventail récursif.Recursive fan pattern.
RenfortReinforcementMême motif écrit avec une boucle : comparer les deux.The same pattern written with a loop: compare both.
Mission bonusBonus missionSpirale dont la profondeur dépend du niveau de difficulté.A spiral whose depth depends on difficulty.
08 Classes et devicesClasses and devicesCh. 8 — Classes : objets, attributs, méthodesCh. 8 — Classes: objects, fields, methods Feuille de routeRoadmap
Notion VerseVerse concept
class, champs, méthodes, instances. Le cas particulier du creative_device, de @editable et de OnBegin.class, fields, methods, instances. The special case of creative_device, @editable and OnBegin.
Reprise en mainTaken over
Le temps de recharge des armes et les bonus, gérés jusque-là par l’île.Weapon cooldown and power-ups, so far handled by the island.
À écrireTo write
weapon · power_up · CanFire() · Fire()
Avant d’écrireBefore writing
L’île applique un temps de recharge unique à toutes les armes.The island applies one cooldown to every weapon.
Salle « Prédire »“Predict” room
Deux instances de weapon, on modifie l’une : l’autre change-t-elle ?Two weapon instances, one is modified: does the other change?
SocleCore taskUne classe weapon avec son propre temps de recharge.A weapon class with its own cooldown.
RenfortReinforcementDes bonus sous forme d’objets plutôt que de maps.Power-ups as objects instead of maps.
Mission bonusBonus missionUn device maison réglable depuis l’éditeur avec @editable.A custom device tuned from the editor with @editable.
09 Héritage et interfacesInheritance and interfacesCh. 9 — Héritage et polymorphismeCh. 9 — Inheritance and polymorphism Feuille de routeRoadmap
Notion VerseVerse concept
Sous-classes, <override>, interfaces. La boucle de l’île traite tous les drones sans connaître leur type exact.Subclasses, <override>, interfaces. The island’s loop handles every drone without knowing its exact type.
Reprise en mainTaken over
Le comportement des drones : kamikaze, zigzag, boss.Drone behaviour: kamikaze, zigzag, boss.
À écrireTo write
drone · kamikaze_drone · zigzag_drone · boss_drone
Avant d’écrireBefore writing
Tous les drones avancent en ligne droite, à la même vitesse.Every drone moves straight ahead at the same speed.
Salle « Prédire »“Predict” room
Pour un zigzag_drone, quelle méthode Move() l’île appelle-t-elle ?For a zigzag_drone, which Move() does the island call?
SocleCore taskDeux types de drones dérivés.Two derived drone types.
RenfortReinforcementUn boss avec points de vie multipliés et motif propre.A boss with extra health and its own pattern.
Mission bonusBonus missionUne interface commune à tout ce qui peut être touché.A shared interface for anything that can be hit.
10 Échec, transactions et débogageFailure, transactions and debuggingCh. 10 — Débogage et exceptions : le filetCh. 10 — Debugging and exceptions: the safety net Feuille de routeRoadmap
Notion VerseVerse concept
Verse n’a pas d’exceptions : l’échec fait partie du langage. <decides>, <transacts> et l’annulation des effets quand un contexte échoue, options, journal Verse et débogage dans UEFN.Verse has no exceptions: failure is part of the language. <decides>, <transacts> and rolled-back effects when a context fails, options, the Verse log and debugging in UEFN.
Reprise en mainTaken over
Le filet lui-même : le mode dégradé qui protège l’apprenant depuis l’aile 1 devient le sujet de l’aile.The safety net itself: the fallback mode that has protected the learner since wing 1 becomes the topic.
À écrireTo write
ValidWave[Wave:int] · un achat en boutique qui ne débite qu’en cas de réussiteValidWave[Wave:int] · a shop purchase that only charges on success
Avant d’écrireBefore writing
L’île valide tout elle-même et refuse silencieusement les valeurs incohérentes.The island validates everything itself and silently rejects inconsistent values.
Salle « Prédire »“Predict” room
Un achat retire 10 points puis échoue : que vaut le score ensuite ? (Inchangé : l’effet est annulé.)A purchase removes 10 points then fails: what is the score afterwards? (Unchanged: the effect is rolled back.)
SocleCore taskÉcrire une validation de vague qui échoue sur les valeurs absurdes.Write a wave validation that fails on absurd values.
RenfortReinforcementUn achat de bonus qui ne débite que s’il réussit.A power-up purchase that only charges on success.
Mission bonusBonus missionRetrouver trois bugs posés dans l’arène à l’aide du journal.Track down three planted bugs using the log.
11 Temps et concurrenceTime and concurrencySans équivalent Python : aile propre à VerseNo Python equivalent: a Verse-only wing Feuille de routeRoadmap
Notion VerseVerse concept
<suspends>, Sleep(), spawn, race, sync, rush, attente et abonnement aux événements des devices.<suspends>, Sleep(), spawn, race, sync, rush, awaiting and subscribing to device events.
Reprise en mainTaken over
Le rythme des vagues, la durée des bonus, les phases du boss contre la montre.Wave pacing, power-up duration, boss phases against the clock.
À écrireTo write
race: · spawn{} · Sleep() · Subscribe()
Avant d’écrireBefore writing
Vagues à intervalle fixe, bonus permanents.Waves at a fixed interval, permanent power-ups.
Salle « Prédire »“Predict” room
Un race entre Sleep(3.0) et une phase de boss de 5 secondes : qui gagne, et qu’advient-il de l’autre ?A race between Sleep(3.0) and a 5-second boss phase: which wins, and what happens to the other?
SocleCore taskUn bonus qui dure 10 secondes.A power-up that lasts 10 seconds.
RenfortReinforcementUne phase de boss qui court contre un minuteur.A boss phase racing a timer.
Mission bonusBonus missionPlusieurs vagues lancées en parallèle et synchronisées.Several waves launched in parallel and synchronised.
12 Mémoire et modulesMemory and modulesCh. 11 et 12 — Fichiers, puis modulesCh. 11 and 12 — Files, then modules Feuille de routeRoadmap
Notion VerseVerse concept
Données persistantes par joueur (weak_map(player, …) et classes <persistable>), organisation du code en modules et using.Per-player persistent data (weak_map(player, …) and <persistable> classes), organising code into modules and using.
Reprise en mainTaken over
Les meilleurs scores, qui survivent à la fin de la session, et l’architecture du projet.Best scores that survive the end of the session, and the project’s architecture.
À écrireTo write
player_record · SaveBest() · LoadBest()
Avant d’écrireBefore writing
Le tableau des scores est affiché mais oublie tout à la fin de la partie.The scoreboard is shown but forgets everything when the game ends.
Salle « Prédire »“Predict” room
Quitter l’île, revenir le lendemain : que montre le tableau des scores ?Leave the island, come back the next day: what does the scoreboard show?
SocleCore taskSauvegarder et relire le meilleur score.Save and reload the best score.
RenfortReinforcementDécouper son code en deux modules.Split the code into two modules.
Mission bonusBonus missionGarder l’historique des cinq dernières parties.Keep the history of the last five games.
Projet finalFinal project

Sa propre version de Core DefenderYour own version of Core Defender

Comme à la fin de mon cours Python, chacun ajoute une fonctionnalité de son choix qui réutilise au moins trois ailes : un boss avec barre de vie (ailes 8 et 9), un tir à tête chercheuse (ailes 5 et 6), un bouclier temporaire (ailes 3 et 11), un classement persistant par saison (ailes 5 et 12).As at the end of my Python course, each learner adds a feature of their choice that reuses at least three wings: a boss with a health bar (wings 8 and 9), a homing shot (wings 5 and 6), a timed shield (wings 3 and 11), a persistent seasonal leaderboard (wings 5 and 12).

N° 07

Le bootcamp, semaine par semaineThe bootcamp, week by week

Objectif réaliste : une arène jouable et trois ailes complètes, publiées dans les délais.A realistic goal: a playable arena and three complete wings, published on time.

  • Avant le 30 nov.Before 30 Nov
    PréparationPreparation

    Rédaction complète des ailes 1 à 3 : textes des panneaux, questions des salles « Prédire », cartes de mission. Plan de l’arène sur papier.Full write-up of wings 1 to 3: panel texts, “Predict” questions, mission cards. Arena layout on paper.

  • 30 nov. – 4 déc.30 Nov – 4 Dec
    Formation et arèneTraining and arena

    Sessions du bootcamp. Maquette du hub et de l’arène, boucle de vagues de Core Defender dans le code verrouillé.Bootcamp sessions. Blockout of the hub and the arena, Core Defender’s wave loop in the locked code.

  • 7 – 11 déc.7 – 11 Dec
    Ailes 1 et 2Wings 1 and 2

    Salles Voir, Lire et Prédire ; sections 1 et 2 du fichier de l’apprenant ; valeurs par défaut qui annoncent ce qui manque.See, Read and Predict rooms; sections 1 and 2 of the learner file; defaults that say what is missing.

  • 14 – 18 déc.14 – 18 Dec
    Aile 3 et premiers testsWing 3 and first playtests

    Règles et contexte d’échec ; tests avec des joueurs qui n’ont jamais programmé ; corrections.Rules and failure context; playtests with players who have never programmed; fixes.

  • 19 déc. – 4 janv.19 Dec – 4 Jan
    Finition et publicationPolish and publishing

    Lisibilité des panneaux, performances, publication de l’île avant le 4 janvier ; mise en ligne du projet de départ et de son guide.Panel readability, performance, island published before 4 January; starter project and its guide put online.

  • 15 janv. 202715 Jan 2027
    Showcase

    Présentation de l’île et du dispositif.Presentation of the island and how it works.

N° 08

Après le bootcampAfter the bootcamp

Feuille de route 20272027 roadmap

  • Premier trimestre : ailes 4 à 6.First quarter: wings 4 to 6.
  • Deuxième trimestre : ailes 7 à 9.Second quarter: wings 7 to 9.
  • Troisième trimestre : ailes 10 à 12 et projet final.Third quarter: wings 10 to 12 and the final project.
  • Textes de l’île en anglais, puis en français.Island texts in English, then in French.
  • Utilisation prévue dans mes propres cours Unreal.Planned use in my own Unreal courses.

Ce que je mesureraiWhat I will measure

  • Statistiques du Creator Portal : parties, temps de jeu, rétention.Creator Portal analytics: plays, playtime, retention.
  • Taux de réussite au premier essai dans les salles « Prédire ».First-try success rate in the “Predict” rooms.
  • Ailes terminées par joueur, et où les joueurs s’arrêtent.Wings completed per player, and where players stop.
  • Téléchargements du projet de départ et retours des apprenants.Starter project downloads and learner feedback.
N° 09

Qui porte le projetWho is behind it

Dominique Yolin, fondateur d’Arcreane, Unreal Authorized Instructor certifié par Epic Games. J’enseigne Unreal depuis cinq ans (Blueprint et C++), ainsi que la programmation GPU (CUDA, compute shaders sous Unreal) et les langages objet, de la première à la cinquième année, dans des écoles d’ingénieurs et de jeu vidéo françaises reconnues. Mes cours sont construits autour du jeu vidéo et d’un projet fil rouge, avec un Moodle et des exercices auto-corrigés CodeRunner que j’héberge moi-même.

Côté développement : vingt ans de C++ temps réel et image, deux diplômes d’ingénieur (génie logiciel en 2002, programmation 3D temps réel en 2015), des fonctionnalités de Twinmotion sur Unreal Engine 5, des plugins Unreal, un plugin pour Nuke, et des hackathons temps réel organisés avec Light in Chaos. Je participe régulièrement à des game jams sur Unreal.

Dominique Yolin, founder of Arcreane, Unreal Authorized Instructor certified by Epic Games. I have been teaching Unreal for five years (Blueprint and C++), as well as GPU programming (CUDA, compute shaders in Unreal) and object-oriented languages, from first to fifth year, in top-ranked French engineering and game development schools. My courses are built around game development and a single thread project, with a Moodle and auto-graded CodeRunner exercises that I host myself.

On the development side: twenty years of real-time and imaging C++, two engineering degrees (software engineering in 2002, real-time 3D programming in 2015), Twinmotion features on Unreal Engine 5, Unreal plugins, a plugin for Nuke, and real-time hackathons organised with Light in Chaos. I regularly take part in Unreal game jams.

Un projet, un cours, une idée ?A project, a course, an idea?

Un développement C++ ou Unreal, une formation sur mesure, une intervention en école : parlons-en.C++ or Unreal development, tailored training, teaching in a school: let’s talk.

Prendre contact →Get in touch →