5 mars 2026 · Mikhaïl Vassiliev

Devlog Nexus : le prototype du moteur

Watch on YouTube

Il y a un mois et demi, j'ai publié sur le site les plans du studio - à propos du moteur Nexus : ce que c'est et quels projets nous allons construire dessus, jusqu'aux stratégies et aux suites de notre série égyptienne. Il y avait aussi une feuille de route. Le moteur est complexe, et pour réduire les risques je voulais l'assembler petit à petit. Mais des joueurs l'ont dit sans détour dans les commentaires : assembler une chose pareille, c'est impossible. Du coup, j'ai décidé de commencer par un prototype - pour montrer qu'un tel moteur peut malgré tout se construire. C'est lui que je vais montrer.

Le menu du prototype : le moteur propose de choisir l'une des quatre simulations - Stone Age, Slay the Spire, le générateur de systèmes stellaires et Oregon Trail

Voici à quoi ressemble le moteur aujourd'hui. En apparence, c'est une application console assez rudimentaire. Mais elle montre bien l'essentiel - que des mécaniques différentes tournent sur un seul moteur universel.

Pour l'instant, quatre simulations tournent dessus. La première, c'est Stone Age, le tout premier jeu du studio, de 2013. Les trois autres sont basées sur des projets d'autres gens. Je ne compte ni les copier ni les publier, elles sont là uniquement pour montrer que des mécaniques de jeu complètement différentes peuvent tourner sur un seul moteur.

Stone Age

Stone Age est reproduit intégralement sur le moteur. Les mêmes caractéristiques, les années et les tours, la population, les terres. On envoie les ouvriers dans la forêt, ils récoltent de la nourriture, la population grandit, des technologies apparaissent - on les recherche, on débloque des bâtiments et l'arbre de l'évolution, de l'australopithèque à l'Homo habilis et au-delà. Les événements, la fin - tout est là, repris de l'original.

La console du prototype : Stone Age - les caractéristiques de la tribu, les terres, le menu des technologies et de l'évolution

Slay the Spire

Ensuite, Slay the Spire, un excellent roguelike de cartes, certains y ont sûrement joué. Sur le moteur, il n'y a que le combat : le joueur a des cartes, de l'énergie et de la santé, l'ennemi a son intention. Strike (Frapper) attaque, Defend (Défendre) pose un blocage. On dépense de l'énergie, on finit son tour, et ainsi de suite chacun son tour, jusqu'à ce que l'un des deux gagne.

La même console avec Slay the Spire - santé, énergie, l'intention de l'ennemi et les cartes en main

GURPS

La troisième simulation, c'est GURPS, un système de jeu de rôle sur table, plutôt complexe. Je n'en ai pris qu'un seul module, le générateur de systèmes stellaires. Ce qui est curieux, c'est que ce module-là n'est pas du tout un jeu, mais un générateur sophistiqué. Il a assemblé un système avec une étoile et tout un tas de propriétés : dix orbites, et sur elles des mondes différents. Le premier, petit et rocheux, ressemble à Mercure - avec sa propre masse, sa pression atmosphérique et le reste. En tout, cette simulation compte plus de six mille faits. C'est un bon test de charge : on voit quelle quantité de données le moteur encaisse.

Un système stellaire généré dans le module GURPS - l'étoile, ses orbites et les propriétés du premier monde

Oregon Trail

La quatrième, c'est Oregon Trail, un classique de 1971 et l'un des tout premiers jeux vidéo. C'est le voyage de colons à travers l'Amérique en chariot : avant de partir, on achète des provisions - des bœufs, de la nourriture, des munitions, des vêtements - et ensuite on chasse, on répartit les rations et on gère les événements. Là, on vient de se faire attaquer. Et ainsi de suite jusqu'au bout de la route.

Oregon Trail dans la même console : les provisions - nourriture, munitions, vêtements, argent - et le choix des actions face à des cavaliers

Les quatre jeux tournent sur un seul moteur, et pour aucun d'eux il n'a fallu écrire de code.

La modification à la volée

Mais le moteur ne fait pas que lancer ces jeux - on peut les modifier en pleine partie, sans toucher au code. Prenons Slay the Spire.

Le tour d'ouverture de Slay the Spire sur le moteur : santé, énergie, l'ennemi et cinq cartes en main - les dégâts de Strike (Frapper) sont encore à 6

Je vais changer les dégâts de la carte Strike (Frapper), les mettre à 100 :

/set Strike.CalcDamage Value 100

La propriété a changé d'un coup sur les deux cartes de ce type, parce qu'elles partagent la même classe.

Deux cartes Strike (Frapper) en main, toutes les deux à 100 de dégâts maintenant - la propriété a changé d'un coup sur toutes les cartes de cette classe

Et on peut aussi ajouter une carte toute nouvelle, Fireball (Boule de feu) :

/add Fireball Is DirectDamage
/set Fireball.CostEnergy Value 2
/add Fireball Has CalcDamage
/set Fireball.CalcDamage Value 20
/add Fireball Has ApplyDamage
/add Fireball.ExecutionEffects Has CostEnergy
/add Fireball.ExecutionEffects Has CalcDamage
/add Fireball.ExecutionEffects Has ApplyDamage

Elle n'existait pas, et maintenant elle est dans le jeu - elle se trouve en main, se joue, inflige 20 de dégâts et part à la défausse, comme n'importe quelle autre :

Après les modifications : les deux cartes Strike (Frapper) sont à 100 de dégâts, et une nouvelle carte Fireball (Boule de feu) à 20 est apparue en main

On peut aussi changer les règles elles-mêmes, d'une seule commande. Je vais retirer la règle selon laquelle les cartes jouées partent à la défausse.

/remove PlayCard Has MovePlayedCard

Maintenant elles restent en main. J'ai joué Defend (Défendre) : le blocage s'est ajouté, l'énergie a été dépensée, mais la carte est restée.

Après le changement de règle : Defend (Défendre) est joué - énergie 0/3, blocage 5 - mais toutes les cartes jouées restent en main, marquées [X]

Dans un jeu ordinaire, écrit dans un langage de programmation, il faudrait pour cela plonger dans le code et recompiler le projet. Ici, ce n'est pas nécessaire.

De la même façon, on ajoute aussi au jeu ce qui n'y était pas du tout auparavant. Par exemple, l'or - je vais le créer et décrire comment il se dépense :

/set Player.Gold Value 100
/add CostGold Output Owner.Gold
/add CostGold Math.Subtract.Apply true

Une caractéristique apparaît, qui n'existait pas il y a un instant - l'or, et tout de suite une centaine.

De l'or est apparu dans la ligne d'état - cent d'un coup - une caractéristique que le jeu n'avait pas il y a un instant

Avec cet or, on peut aussi créer une nouvelle action - Bribe (Pot-de-vin). Elle ne dépense pas de l'énergie, mais de l'or :

/add Bribe Is DirectDamage
/set Bribe.CostEnergy Value 0
/set Bribe.CostGold Value 30
/add Bribe Has CalcDamage
/set Bribe.CalcDamage Value 15
/add Bribe Has ApplyDamage
/add Bribe Has CostGold
/add Bribe.ExecutionEffects Has CostGold
/add Bribe.ExecutionEffects Has CalcDamage
/add Bribe.ExecutionEffects Has ApplyDamage
/create Bribe Player.Hand

Bribe (Pot-de-vin) coûte trente d'or et inflige quinze de dégâts - et ça fonctionne tout de suite.

Une nouvelle action est apparue en main, Bribe (Pot-de-vin) : zéro énergie, trente d'or et quinze de dégâts

On pourrait croire que ce sont des triches et que ce genre de commandes est pénible à taper. Mais ce ne sont pas des triches. C'est la modification des faits logiques et des données sur lesquels repose tout le jeu - ses objets, ses propriétés et ses mécaniques. Au fond, c'est le langage dans lequel le jeu est écrit.

Apprendre ce langage n'est pas obligatoire. On peut demander à l'IA de traduire une phrase ordinaire en commandes que Nexus comprend. Par exemple :

give 999 gold

En clair, cela veut simplement dire « Ajoute 999 d'or ».

Une demande à l'IA en mots ordinaires - « give 999 gold ». Le moteur trouvera lui-même la bonne commande et l'exécutera

L'IA réfléchit, trouve la bonne commande et l'exécute, et nous voilà avec 999 d'or.

On peut le dire autrement, « or 100 » - ça marche aussi. « Fais de moi un dieu » - l'IA accorde l'invulnérabilité. Finir son tour, frapper, se soigner - tout cela peut se faire avec des mots, le moteur comprend. Et rien de tout cela n'est scripté, tout fonctionne pour de vrai.

Plans

Je veux simplifier les commandes. Pour l'instant, créer ce même Fireball (Boule de feu) demande environ huit commandes, et je pense les ramener à trois ou quatre. Et dans la prochaine vidéo, je tâcherai de montrer quelque chose de plus parlant - un rendu 2D.

Plus de détails sur le moteur et les plans dans la section Nexus.

Avertissement : Stone Age est un jeu du studio. Slay the Spire, GURPS et Oregon Trail appartiennent à leurs ayants droit respectifs et ne sont montrés qu'à titre de démonstration du moteur - ces versions ne sont distribuées nulle part.