5 mars 2026 · Mikhaïl Vassiliev
Devlog Nexus : le prototype du moteur
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.

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.

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.

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.

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.

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.

Je vais changer les dégâts de la carte Strike (Frapper), les mettre à 100 :
/set Strike.CalcDamage Value 100La propriété a changé d'un coup sur les deux cartes de ce type, parce qu'elles partagent la même 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 ApplyDamageElle 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 :

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 MovePlayedCardMaintenant 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]](/_next/image?url=%2Fvblog1_slayrule.jpg&w=3840&q=75)
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 trueUne caractéristique apparaît, qui n'existait pas il y a un instant - l'or, et tout de suite une centaine.

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.HandBribe (Pot-de-vin) coûte trente d'or et inflige quinze de dégâts - et ça fonctionne tout de suite.

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 goldEn clair, cela veut simplement dire « Ajoute 999 d'or ».

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.
