Engine

Le moteur de jeu : graphe de scène, composants, scripts, physique, pipeline PBR, éditeurs de monde, et compilations natives bureau et mobile.

En un mot#

Un moteur de jeu complet dans le navigateur : construisez une scène, donnez-lui un comportement, lancez-la, et exportez-la vers le web ou vers un binaire natif ordinateur et mobile.

C'est de loin le plus grand atelier d'aukimi. Cette page le cartographie comme le fait l'interface, par le tiroir où vit chaque panneau, plutôt qu'en listant les fonctions par ordre alphabétique.

L'agencement#

Engine, avec le graphe de scène, la vue 3D, l'inspecteur et la console

Barre de menusFile · Edit · View · Windows · Run · Plugins
Barre d'outilsnom du projet, annuler/rétablir, le sélecteur de mode de vue (3D · 2.5D · 2D · TXT), le sélecteur de scène, les quatre boutons de panneaux, FX Master, HUD, la résolution, le transport (lecture, pause, arrêt) et Build
Gaucheune colonne d'icônes, graphe de scène, liste, audio, console, et le panneau qu'elle ouvre
Centrela vue 3D, avec sa barre de gizmos (translation, rotation, échelle, monde/local, grille, aimantation, cadrage) et un sélecteur de qualité
Droitel'inspecteur de l'entité sélectionnée
BasConsole et Profiler, côte à côte
Barre d'étatmode, dimension de la vue, nombre d'entités, état de la grille

Les quatre boutons de panneaux#

La barre d'outils de l'Engine : nom de scène, annulation, le sélecteur de mode, les quatre boutons de panneaux et le transport

Ils ne se comportent pas tous pareil, et la différence mérite d'être connue avant de chercher quelque chose :

BoutonComportement
Systemsouvre un tiroir
Toolsouvre le même tiroir, Systems et Tools se ferment mutuellement
Assetsbascule un dock persistant
Scriptsouvre une modale

Systems et Tools partagent une seule place, exprès ; ils sont posés côte à côte pour que cela se voie.

Systems#

Les sous-systèmes du moteur: ce qu'une scène a, plutôt que ce avec quoi on fabrique.

GroupePanneaux
Pluginsle navigateur de greffons
RenderingRendering · Rendering Pipeline · Look Presets · Shader Lab · Render Style · Shadows · Mesh LOD · Post Process Volumes
GameplayMultiplayer room · Physics · AI & Navigation · Gameplay Zones
WorldScene Graph · Level Streaming · Baking · Light Probes · Decals

Le rendu#

L'interrupteur FX Master de la barre d'outils allume et éteint toute la chaîne de post-traitement d'un clic: le moyen le plus rapide de voir ce qu'elle coûte. Individuellement : bloom, profondeur de champ, SSR, SSAO, GTAO, SSGI, anticrénelage temporel, FXAA, flou de mouvement, brouillard volumétrique, ombres de contact, étalonnage, grain, aberration chromatique, vignettage et tonemapping, plus la géométrie façon Nanite et l'occlusion Hi-Z.

Les Look Presets sont des configurations entières de ce qui précède. Render Style change de registre, stylisé plutôt que photographique. Shader Lab est là où vous écrivez les vôtres. Mesh LOD et Post Process Volumes sont les deux qui se rentabilisent sur une grande scène : un niveau de détail par maillage, et un post-traitement qui ne s'applique qu'à l'intérieur d'un volume.

Le moteur de rendu est Babylon.js. Il démarre en WebGL et bascule de lui-même en WebGPU quand le navigateur en dispose, en retombant tout seul si cela échoue.

Les systèmes de jeu#

Physics couvre à la fois le solveur 3D (Havok) et le 2D. AI & Navigation est le navmesh et les agents dessus. Gameplay Zones sont des volumes déclencheurs avec un comportement attaché. Multiplayer room relie la scène à un serveur Colyseus (voir plus bas)

Les systèmes de monde#

Level Streaming charge et décharge des portions de niveau selon les déplacements du joueur. Baking précalcule l'éclairage ; Light Probes capturent la lumière indirecte et les réflexions en des points de l'espace. Decals projettent du détail sur les surfaces sans ajouter de géométrie.

Tools#

Ce avec quoi on fabrique.

GroupePanneaux
EditorsScripts · Blueprint Editor · UI Editor · Tilemap
WorldSky Studio · Terrain · Water · Tree Generator · Plant Generator · Rock Generator · Kitbash
GameplayInventory · Data tables · Dialogue Trees
AnimationTimeline · Cinematic Sequencer · Camera Tools
AudioAudio Manager
DebugProfiler

Les générateurs de monde#

Terrain, eau, ciel et quatre générateurs de contenu, arbres, plantes, rochers et pièces de kitbash. Ils ont leur propre chapitre plus bas.

L'écriture du jeu#

Inventory, Data tables (Tools → Data) et Dialogue Trees sont les trois éditeurs qui permettent à un jeu d'avoir du contenu sans que ce contenu vive dans le code, en détail plus bas.

L'animation#

Timeline pour l'animation d'entité, Cinematic Sequencer pour les plans, et Camera Tools pour le cadrage. Voir Animation et caméra.

Les éditeurs de monde#

Sept panneaux sous Tools → World. C'est la façon rapide de remplir une scène, et la raison pour laquelle un niveau n'a pas à commencer par une séance de modélisation.

Terrain#

Une scène peut contenir plusieurs terrains ; chacun est une ligne de la liste Terrains et se crée à l'une de trois résolutions, 128² (rapide), 256² (équilibré) ou 512² (détaillé).

Le panneau a dix modes, et ils ont un point commun : le masque peint dans Masques restreint chacun d'eux.

ModeCe qu'il fait
Sculpterdix-sept brosses sur le champ de hauteur
Peindrejusqu'à huit couches de texture, sur deux splatmaps
Générerbruit, texturage automatique et import d'élévations réelles
Croquisdessiner crêtes et vallées, synthétiser un terrain qui y répond
Masquesrestreindre tous les autres modes à une partie de la surface
Eauniveau de la mer, et le choix entre eau de terrain et océan FFT
Cheminsune route de Bézier cuite dans le sol
Végétationdispersion à la brosse ou par règles
SDFun terrain lancé de rayons, rendu plutôt que maillé
Biomessol, plantes, arbres et rochers en une seule passe

Sculpter. Élever 1, Abaisser 2, Lisser 3, Aplatir 4, Pincer 5, Gonfler 6, Bruit 7, Accentuer 8, Tampon 9, Terrasse 0, Éroder E, Remplir F, Cloner C (Alt-clic pose la source), Flou B, Rampe R, plus les deux outils d'eau, Rivière trace un cours, Lac remplit à un point.

La brosse elle-même a une dynamique : courbe de pression, souris paresseuse, atténuation, symétrie, motif, et une variation aléatoire sur la taille comme sur la force. Tampon porte six formes, cratère, pic, plateau, vallée fluviale, dôme, colline bruitée. L'érosion existe sous deux formes : la brosse E est locale, tandis qu'Ajustements simule l'érosion hydraulique, thermique et éolienne sur tout le terrain.

Peindre. Huit couches, parce que deux splatmaps RGBA portent quatre canaux chacune. La bibliothèque de matériaux est rangée par catégorie, herbe, terre, forêt, roches, routes et surfaces, falaises, sable, neige, volcanique, zones humides, fantastique, et les vôtres, et chaque couche porte son échelle UV, son déplacement, une carte de détail et un relief de surface (force du bump, profondeur de parallaxe). Casser le pavage de texture (Cell Bombing) est le réglage qui empêche une texture de sol répétée de se lire comme une grille.

Générer construit à partir du bruit, puis Générer les textures attribue les matériaux par altitude et par pente, avec une variation d'ombre nord/sud et des rivages de sable ou de galets là où il y a de l'eau. Monde réel importe des tuiles d'élévation publiques NASA/USGS : choisissez un point de repère ou tapez des coordonnées, réglez le zoom, et le panneau annonce la plage d'altitude rapportée.

Croquis est l'autre porte d'entrée. Tracez des crêtes et des vallées sur une carte 2D, choisissez jusqu'à trois paysages sources réels, et le terrain est synthétisé pour répondre au croquis, au besoin fondu dans l'existant, texturé et érodé dans la même passe.

Masques : peints à la brosse, puis édités en bloc, effacer, inverser, flouter, dilater, contracter. Les masques intelligents en dérivent un du terrain lui-même : par hauteur, par pente, par couche ou par cavité.

Chemins. Cliquez pour poser des points de contrôle et une courbe lisse les traverse ; tirez les points ambre pour les déplacer, les poignées cyan pour courber. Cuire le chemin aplatit le sol dessous, peint la texture et lève les talus.

Végétation a deux moitiés. La brosse pose et retire les instances à la main ; les règles de dispersion les posent par condition, poids des couches, graine, échelle mini/maxi, et la bande de hauteur et de pente que chaque ressource accepte. Herbes et fleurs s'effacent au-delà d'une distance d'affichage réglable, et Exporter vers la scène transforme les instances en objets de scène.

Biomes est la version en un clic de tout ce qui précède : choisissez un biome, cochez les catégories voulues (sol, arbres, plantes et herbe, fleurs, algues près de l'eau, rochers), réglez une densité, et Appliquer le biome peint le sol et disperse le reste, en annonçant combien d'instances de chaque il a posées. La variété d'âge des arbres mélange les jeunes pousses aux anciens plutôt que de tamponner le même arbre partout, et le ground blend (RVT) fond la base de chaque rocher dans la couleur du terrain sous lui.

SDF est un autre moteur de rendu, pas un autre outil : le terrain est lancé de rayons depuis un champ de distance, forme par octaves, lacunarité et persistance, texturage herbe/roche/neige avec une ligne de neige et un seuil de pente, et ses propres ombres douces, occlusion ambiante et brouillard.

Les grands terrains ont un système de LOD avec jupes de géométrie (ce qui ferme les trous entre niveaux), transitions douces, élimination hors champ et un calque de statistiques. Les cartes de hauteur s'importent et s'exportent en PNG 16 bits, PNG 8 bits ou RAW 16 bits ; les splatmaps en un PNG RGBA ou un fichier par couche ; et le terrain entier, ou seulement ses réglages, en préréglage.

Sky Studio#

L'atmosphère. Quatre types de ciel, uni, dégradé, HDRI, et une atmosphère physique avec diffusion de Rayleigh et de Mie, absorption de Mie, ozone, albédo du sol, turbidité, rayon de la planète et épaisseur de l'atmosphère.

Tout dépend de l'heure du jour, qui peut tourner toute seule : le soleil par élévation, azimut et intensité, avec sa propre intensité d'ombre ; la lune par phase ; les étoiles avec leur scintillement ; et une aurore. Les nuages volumétriques ont épaisseur, érosion, échelle de bruit et distorsion en boucle, et reçoivent la lumière par absorption, diffusion, ambiante et un terme powder ; les cirrus et la ceinture de Vénus sont à part. La perspective aérienne est la brume qui s'épaissit avec la distance et fond la géométrie lointaine dans l'horizon, c'est le réglage qui fait qu'un paysage se lit comme grand.

Dix préréglages pour partir : plein jour, aube, coucher, crépuscule, nuit, ciel couvert, orage, désert, arctique et espace.

L'eau#

Deux onglets : Océan (FFT) pour la haute mer, Rivages et lacs pour le reste.

⚠️ L'eau se crée dans l'éditeur de terrain : les outils Rivière et Lac, ou Afficher l'eau, et se règle ici. Ouvrir ce panneau sur une scène sans eau donne des réglages sans rien à quoi les appliquer.

L'eau de rivage porte couleur, opacité, force et vitesse des vagues, hachure, largeur d'écume et Fresnel, avec réflexions en espace écran et flou de réfraction. En dessous, le shader WGSL lui-même : deux échelles de normales avec leurs directions et vitesses de défilement, seuil et douceur de l'écume, force de réfraction et indice de réfraction, et la lumière dans l'eau, absorption, turbidité, diffusion et translucidité.

Le générateur d'arbres#

Deux modes, Arbre et Tronc. Un arbre est feuillu ou persistant, a un âge de la jeune pousse à l'ancien, et peut être vivant, mort, chandelle ou tronc couché. Tout part d'une graine, donc Graine aléatoire est la façon la plus rapide d'obtenir un autre arbre du même caractère.

La forme se règle par niveau de branches : enfants, longueur, rayon, conicité, noueux, torsion, sections, segments, angle et hauteur de départ, plus la variation naturelle, le phototropisme et le gravitropisme : les deux qui font pencher un arbre vers la lumière et ployer sous son propre poids, et une force globale avec sa propre intensité. La base a son évasement de racines (lobes et hauteur) et son contrefort.

Les feuilles sont des billboards, simples ou doubles faces, avec nombre, taille, angle, variance, agglomération, enroulement, retombée, lustre et normales arrondies. L'écorce vient en six styles, crevassée, tremble, pin, bouleau, lisse, palmier, avec relief, mousse, base humide, blanchiment au soleil, occlusion ambiante de la canopée et virage d'automne. Quatre saisons changent tout l'ensemble d'un coup.

Forêt en disperse beaucoup d'un coup : nombre, rayon d'étalement, variance d'échelle, et un mélange d'âges (unique, naturel, jeune, vieux, régulier). Ajouter la progression d'âge pose les cinq stades de vie en ligne, ce qui est la façon la plus rapide de les juger côte à côte. Un arbre part en entité de scène ou en GLB, et n'importe quel réglage se garde en préréglage.

Le générateur de plantes#

Cinq types, fleur, touffe, herbacée, fougère, herbe, partageant une tige (nombre, hauteur, épaisseur, courbure, couleur) et des feuilles (nombre, taille, largeur, angle). Les fougères ajoutent paires de folioles, balayage et arc de la fronde ; l'herbe ajoute nombre de brins et arc.

Une fleur est optionnelle sur chacun : pétales, rangs de pétales, longueur, largeur, enroulement, pointe, floraison, taille du cœur, et trois couleurs pétale, pointe et cœur, avec translucidité et rugosité pour la façon dont la lumière traverse la feuille. Ajoutez-en une à la scène, dispersez-en beaucoup, ou exportez en GLB.

Le générateur de rochers#

Trois types, rocher, pierre, falaise, en trois styles : réaliste, toon, ou low poly avec contour.

La forme est du bruit sur une sphère : échelle, force, octaves, persistance, distorsion et une option crêtée, plus les strates avec leur fréquence et les coupes à facettes avec profondeur et netteté pour la pierre anguleuse. Rayon, détail, aplatissement, variance de forme et fond plat décident de la silhouette, et quatre préréglages d'érosion, frais, patiné, naturel, érodé, déplacent tout cela d'un coup.

La surface a variation de couleur, veines minérales, lichen et mousse, une texture de détail avec sa répétition et sa force, un mélange triplanaire et un relief en parallaxe. Elle utilise par défaut un matériau Stone fourni ; envoyez un matériau depuis Matter vers l'Engine pour le remplacer.

Kitbash, la même bibliothèque que Sculpt#

Kitbash est partagé avec Sculpt : ce panneau et l'Edit Forge de Sculpt lisent une seule bibliothèque. Une pièce construite là-bas se pose ici, et une pièce peinte ici peut y être renvoyée.

Ce que la scène stocke, c'est la pièce et ses dimensions, pas ses sommets et c'est pourquoi un bâtiment kitbashé ne coûte presque rien dans le fichier et peut être mis à jour plus tard depuis sa source.

Armez une pièce depuis le catalogue et chaque clic gauche en pose une. Trois modes d'accrochage décident où elle atterrit : sur le terrain (les pièces suivent la hauteur du sol dessous), sur l'eau (le plan de construction se place au niveau de l'eau), et accrochage aux sockets : visez un point de connexion sur une pièce posée et la nouvelle se tourne pour le rejoindre. Une chaîne pousse par son extrémité libre, les sockets occupés sortent des candidats, et chaque clic est son propre pas d'annulation. Ctrl/Cmd reste réservé à la sélection et Alt à la rotation. Les collections gardent leur source et leur version, donc une instance peut être mise à jour quand l'original change.

Les autres éditeurs#

Les éditeurs de monde remplissent une scène ; ceux-ci lui donnent une interface, une carte, ses tables de contenu et les instruments pour vérifier ce qu'elle coûte.

L'éditeur de HUD#

Tools → Editors → UI. Six onglets, Templates, Elements, Layers, Preview, Style et Script : au-dessus d'un aperçu qui bascule entre trois tailles d'écran : bureau 960×540, tablette 768×432, mobile 375×667.

Les éléments viennent en trois groupes (Affichage, Données, Saisie) et s'imbriquent : panel et flex contiennent des enfants, donc l'onglet Layers est un vrai arbre et non une liste plate. L'historique fait cinquante pas.

⚠️ L'onglet Style est comme du CSS, et la nuance compte. Le HUD est dessiné sur le canevas par la GUI de Babylon, et le vrai CSS ne l'atteint pas. Les règles écrites ici sont converties en propriétés de la GUI ; les sélecteurs sont #nom pour un élément, .type pour une famille (.text, .panel) et * pour tout.

L'onglet Script est l'autre façon d'en construire un : l'API ui.* createText, createPanel, createProgress, createButton, avec deux façons de l'exécuter. Build Layout l'exécute à la conception et laisse de vrais éléments à ajuster à la main ; Run Live l'exécute dans le jeu.

Deux liens vers l'extérieur : les visuels du HUD s'ouvrent dans Inkwell ou Vectra et sont rattachés plutôt que copiés, et un document Vectra peut être importé en éléments de HUD. La minimap est un élément à part, avec sa portée, sa grille et ses marqueurs pour le joueur, les ennemis, les alliés, les objets et les objectifs.

L'éditeur de tilemap#

Onze outils, brosse, gomme, remplissage, rectangle, sélection, pipette, tampon, autotile, décor, zone et chemin, sur quatre projections de carte : orthogonale, isométrique, isométrique décalée et hexagonale.

L'autotile est livré avec quatre gabarits, et le nombre dans chaque nom est le nombre de tuiles attendu : Blob 47 (coins et bords complets), Wang 16 (par les bords), Simple 4 (NSEO) et RPG Maker A2 (48 tuiles, compatible avec les cartes faites là-bas).

Deux couches se posent au-dessus des tuiles. Les zones peignent du sens de jeu, constructible, eau, forêt, route, ferme, résidentiel, commercial, bloqué et les décors posent des objets par catégorie : arbres, rochers, bâtiments, végétation, eau, chemins. Les cartes vivent dans la base du navigateur, donc une carte non enregistrée survit à un rechargement.

Inventaire, tables de données et dialogues#

Les trois éditeurs qui permettent à un jeu d'avoir du contenu sans que ce contenu vive dans le code.

L'inventaire édite un catalogue et l'applique à la scène. Un objet porte des actions, et une action est un déclencheur : use, equip, unequip, plus l'un de huit types : message, soin, dégâts, don, retrait, événement, notification, scène. Le panneau lui-même a trois dispositions (grille, liste, compacte), trois préréglages d'apparence (graphite, midnight, warm), et quatre emplacements visuels, fond, case, équipement, infobulle, qui s'ouvrent dans un autre module pour être redessinés proprement.

Les tables de données sont typées : une colonne est text, number, bool ou ref. Le CSV entre et ressort. Chaque édition passe par des fonctions pures, et c'est ce qui garde la table écrite par l'export identique à celle que lit la compilation.

Les arbres de dialogue sont des nœuds avec un locuteur et une réplique. Un nœud continue vers un seul next, ou se ramifie en choix, chacun avec son texte et sa destination, la bascule de branchement est la seule décision de structure de l'éditeur.

Animation et caméra#

Le Cinematic Sequencer construit des séquences avec une durée et une boucle, une piste par entité, et des clés capturées à la tête de lecture, Add Key prend la valeur courante de l'entité au lieu de vous la faire saisir. L'éditeur de courbes en dessous montre le temps contre la progression, avec des poignées rondes pour l'interpolation : la pente, c'est la vitesse. Les plans ont leur propre durée, et un cadrage Cinemascope (1,422:1) est disponible.

Camera Tools couvre le champ de vision, la position, la cible, le mode et la vitesse, plus des signets pour les points de vue sur lesquels on revient, et les couches de caméra.

L'audio#

L'Audio Manager tient les événements audio, les pistes et un mélangeur avec ses canaux et ses catégories. Les effets par source sont un passe-bas, un passe-haut et un départ de réverbération ; un mode aléatoire choisit entre plusieurs clips pour qu'un son répété cesse de s'entendre comme une boucle. Le scrubbing joue le son pendant qu'on tire la tête de lecture.

Le profileur#

Une décomposition de l'image, pas un compteur : rendu de la caméra, évaluation des maillages, particules, sprites et compilation des shaders, chacun marqué réel ou estimé, pour qu'un chiffre issu d'une mesure ne soit jamais pris pour un chiffre issu d'un modèle. À côté, les compteurs : maillages et maillages actifs, lumières, caméras, corps physiques.

L'enregistrement est explicite, et il se termine sur une liste de problèmes plutôt que sur un graphe à interpréter : FPS bas, trop d'appels de dessin, trop de triangles, trop de mémoire, mesurés contre la fréquence cible que vous fixez.

Construire une scène#

Les entités#

La vue de l'Engine, avec le gizmo sur l'entité sélectionnée

Une scène neuve arrive avec une caméra principale, une lumière directionnelle, un skybox et un plan de sol.

Le graphe de scène, avec les quatre entités d'une scène neuve

Ce qu'on peut ajouter : Empty, Cube, Sphere, Cylinder, Plane, Light, Camera, Script, Mesh, plus deux familles qui arrivent déjà câblées :

  • Personnages: troisième personne, première personne (FPS), vue de dessus, plateforme, basique.
  • Objets: Pickup (soin) et Hazard (dégâts).

Le graphe de scène cherche, filtre par type, ajoute, duplique ou supprime ; les entités s'imbriquent, et le reparentage se fait au glisser. Le placement dispose d'aimantation et d'une brosse d'éparpillement pour peupler un sol rapidement.

L'inspecteur#

Transformation (position, rotation, échelle), un interrupteur Enabled, et les composants de l'entité: ajoutés, réglés et retirés ici, avec Add Script en bas. Sélectionnez plusieurs entités et l'inspecteur passe en édition groupée : un changement de champ atterrit sur toutes.

La console#

Pas seulement un journal. Elle filtre par niveau (tout, logs, info, avertissement, erreur), relie un message à l'entité qui l'a produit, et porte une invite d'expression : tapez une expression, Entrée l'exécute sur la scène vivante, les flèches parcourent l'historique.

Donner un comportement#

Trois voies, qui coexistent.

Les scripts#

Du JavaScript avec des points d'entrée de cycle de vie, et sa propre référence :

function start() {}                     // une fois, au démarrage de l'entité
function update(dt) {}                  // à chaque image
function fixedUpdate(dt) {}             // pas de temps fixe, pour la physique
function onCollisionEnter(other) {}     // première image de contact
function onCollisionStay(other) {}      // à chaque image de contact
function onCollisionExit(other) {}      // le contact vient de cesser
function onTriggerEnter(other) {}       // entrée dans un volume déclencheur
function onTriggerExit(other) {}
function onMessage(msg, data, senderId) {}   // messages entre entités
function onAnimationEvent(name, data) {}
function onDestroy() {}

Collisions et déclencheurs se produisent en 2D comme en 3D, et chaque côté reçoit sa propre normale de contact : other.contact.normal pointe de l'autre entité vers celle-ci. C'est ce qui permet à un script de distinguer « j'ai atterri dessus » de « c'est tombé sur moi »: un saut écrasant de jeu de plateforme lit other.contact.normal.y > 0.5.

L'éditeur de script#

F2, ou Add Script sur une entité. Un éditeur Monaco à onglets, plusieurs scripts ouverts en même temps, chacun conservé dans la base du navigateur plutôt que dans le fichier de projet, si bien qu'un tampon non enregistré survit à un rechargement.

Cinq dialectes, un seul programme. Le sélecteur de langage propose JavaScript, BASIC, Python, C# et Rust. Ce qu'il fait n'est pas ce qu'il en a l'air : le JavaScript fait foi, et les quatre autres sont des vues transpilées depuis le JS conservé. Passer de Python à Rust ne traduit pas le Python, l'éditeur revient au JS dont ce Python a été engendré et traduit celui-là. C'est la traduction en plusieurs sauts qui corrompt un programme, et l'éditeur refuse de la faire.

Treize modèles en cinq catégories, chacun étiqueté par difficulté :

CatégorieModèles
Basicsscript vide avec les fonctions de cycle de vie
Movementrotation automatique · WASD · déplacement 3D par axes · saut physique avec détection du sol · caméra à la troisième personne
Gameplayzone de déclenchement · barre de vie avec dégâts et soins · générateur d'objets minuté
AIpatrouille avec alerte de proximité du joueur
Advancedcinématique asynchrone façon Verse · concurrence structurée · test de toute la surface d'API

Les préréglages de contrôleur de personnage et les accessoires de démarrage (ramassable, danger) apparaissent dans la même liste, ce qui est la façon pratique de poser un contrôleur qui marche sur un personnage importé.

Exécuter et déboguer. F5 lance, F9 pose un point d'arrêt. Le débogueur s'arrête à une ligne, avance d'une seule image, et rapporte les valeurs vivantes par des expressions surveillées. Script Lab exécute un programme sans aucune entité attachée, un brouillon pour l'API plutôt qu'un composant sur un objet.

À côté du code : une référence d'API, la liste des symboles du fichier ouvert, et une bibliothèque d'extraits avec favoris et récents. Ctrl+S enregistre, Ctrl+F cherche, Ctrl+H remplace, et l'éditeur est livré avec huit thèmes.

Blueprints et comportements#

Un graphe visuel, une bibliothèque de comportements tout faits, et une machine à états posée par-dessus la pile de comportements.

Le graphe porte 267 nœuds en vingt-deux groupes, Math, Scene, Entity, Animation, Flow Control, String, Events, Physics, UI, Array, Vector, Transform, Debug, Input, Utility, Game, Boolean, Camera, Tween, Variables, Audio, et les familles 2D et 3D. Trois propriétés les séparent, et ce sont elles qui font le graphe : 17 nœuds d'événement démarrent l'exécution, 117 nœuds purs calculent une valeur sans effet de bord ni broche d'exécution, et 9 nœuds latents se terminent plus tard, ce sont eux qui rendent un délai ou un tween exprimables sans écrire sa propre machine à états.

Quatre outils : sélection V, main H, commentaire C, redirection R, sur un canevas qui zoome de 0,1× à 3× avec une minicarte. Les variables ont six types : booléen, entier, flottant, chaîne, vecteur3 et objet. La description de chaque nœud est dans son infobulle, seul endroit où une bibliothèque de cette taille peut s'expliquer.

La machine à états#

Son propre panneau, et délibérément pas celui de l'Animator : les conditions de l'Animator sont un enum plat dont chaque cas a son interface écrite à la main, tandis que celles-ci sont structurées et parlent du monde.

Sept conditions, chacune une question posée à la scène : voit (une cible taguée à portée, au besoin dans un angle et à vue), perdu (plus de cible depuis N secondes), distance contre un seuil, vie, message reçu, minuterie (le temps passé dans l'état courant), et drapeau (une valeur du tableau noir partagé). Deux combinateurs, et et ou, sont tous deux listés bien que le ou existât déjà implicitement, deux transitions vers le même état sont un ou, mais « il me voit ET j'ai encore de la vie » n'avait aucune forme.

⚠️ La vie se compare en fraction du maximum, jamais en absolu. Un seuil « en dessous de 30 PV » ne survit pas à une passe d'équilibrage ; « en dessous de 0,3 » y survit.

À l'entrée ou à la sortie d'un état, quatre effets : envoyer un message, poser une clé du tableau noir, animer un clip, ou déclencher un effet nommé. Aucun ne déplace quoi que ce soit, le mouvement reste aux comportements, et la machine décide quel comportement est actif.

Une transition peut partir de *, c'est-à-dire de n'importe quel état. Le validateur rend la liste des problèmes au lieu de lever à la première erreur, si bien qu'une machine à moitié écrite s'affiche quand même et qu'on voit tout ce qui cloche d'un coup. Les positions des nœuds font partie des données : un graphe dont la mise en page vit hors de la scène revient réorganisé au hasard chez la personne suivante.

BASIC#

Le mode de vue TXT est un environnement BASIC classique, avec des programmes de démonstration fournis, et le langage a sa propre référence. C'est un vrai langage ici, pas un jouet : modules multi-fichiers (#INCLUDE), types numériques (entiers signés et non signés 8/16/32/64 bits, float32 et float64), enregistrements imbriqués, méthodes d'objet avec SELF, références (REF/BYREF), TRY/CATCH/FINALLY structurés, compilation conditionnelle, coroutines, poignées typées, et calcul WebGPU avec tampons de stockage et WGSL brut.

OPTION EXPLICIT est optionnel ; les variables implicites classiques restent le défaut pour que les programmes importés tournent encore.

Jouer et livrer#

Jouer#

Lecture, Pause, Arrêt. À l'arrêt, un bandeau annonce ce que la session a changé : une modification faite en cours de partie n'est jamais gardée ni perdue en silence. Les sessions peuvent être enregistrées et rejouées dans un rapport de bug, et les signets de scénario permettent de commencer un test au milieu d'un niveau.

Compiler#

Build prend un type de jeu (détecté depuis la scène, ou fixé à la main : plateforme/défilement, vue première ou troisième personne, jeu textuel) et une cible.

  • Web: WebGPU avec repli WebGL, WebXR en option (VR/AR), minification, un compteur d'images par seconde, et une option ressources embarquées qui produit un fichier unique.
  • Ordinateur et mobile: des compilations natives. La scène est exportée en données (scene.glb + scene.json) et compilée via un projet Bevy (Rust) généré ; les scripts y tournent inchangés sur un moteur QuickJS embarqué.

La compression se règle axe par axe, algorithme, textures, maillages, avec un préréglage de qualité qui les relie. Les compilations sont conservées dans un historique avec leurs tailles (avant et après compression) et se retéléchargent plus tard.

Une compilation native ne contient que ce que l'exportateur sait exporter. Le glTF ne capture ni les shaders personnalisés, ni les instances fines, ni le ciel procédural, ni le post-traitement : un système de runtime non porté côté Bevy manquera dans une compilation ordinateur ou mobile alors qu'il est parfait sur le web. Vérifiez une compilation native avant de compter dessus.

Le multijoueur#

Le panneau Multiplayer room relie une scène à un serveur de jeu Colyseus. Un serveur de test partagé et gratuit est disponible sans compte ni configuration ; un projet peut aussi recevoir son propre serveur. La salle est identifiée par un code de partage que vous pouvez garder pour vous ou distribuer.

Fichiers lus et écrits#

Format natif.engine
Imports.glb, .gltf, .obj, .fbx, .png, .svg, .mp4, .webm, .mov, .scene
Exportsune compilation web, une compilation native ordinateur/mobile, scene.glb + scene.json

Envoyer vers les autres ateliers#

Accepte les maillages de Sculpt, Retopo et Pigment, les scènes entières de Render, le pixel art, les animations, les jeux de matériau PBR de Matter, les squelettes 2D, les projets vidéo, les images, l'art vectoriel et les objets Vectra.

Produit des squelettes 2D.

Une maquette d'écran Vectra arrive en structure, pas en image. Elle devient une hiérarchie de HUD que l'Engine peut disposer et scripter: la différence entre un design qu'on peut brancher et une capture d'écran d'un design.

Raccourcis#

Cmd/Ctrl + K atteint les commandes propres à l'Engine depuis la palette, aux côtés des commandes globales. L'Engine a aussi son propre panneau de raccourcis clavier, cherchable, dans ses paramètres; il en a bien plus qu'il n'en tiendrait sur la page des raccourcis.

Limites et pannes courantes#

  • Une vue vide, c'est en général le navigateur, pas la scène. L'Engine exige WebGL 2 ; vérifiez que l'accélération matérielle est active.
  • Systems et Tools partagent un tiroir. Si un panneau « a disparu », il est probablement dans l'autre.
  • La console est le premier endroit où regarder, pas le dernier : elle relie les erreurs à l'entité qui les a levées.
  • Un composant ajouté en cours de partie ne survit pas forcément à l'arrêt. Lisez le bandeau qui apparaît quand vous arrêtez.
  • La physique 2D et la physique 3D n'ont pas le même solveur, même si les points d'entrée de script sont identiques. Un contact au repos en 2D est détecté avec une peau de 2 mm, parce que le solveur ramène la pénétration à exactement zéro avant la détection.