Architecture du moteur Nexus

Comment Nexus fonctionne

Complexité plate

L'approche classique des jeux repose sur des systèmes rigides : chaque mécanique est du code à part, chaque lien entre mécaniques est encore du code en plus. Même les bacs à sable restent un assemblage de systèmes séparés. La diversité augmente, mais l'architecture ne change pas - et la complexité du développement croît avec elle.

Nexus fonctionne autrement. Les éléments de base du jeu sont des atomes à partir desquels tout le reste se construit. Ajouter de nouvelles mécaniques n'augmente pas la complexité architecturale.

Des millions d'éléments, mais l'architecture n'en devient pas plus complexe. Le système passe à l'échelle - vers des mécaniques, des règles et des mondes de n'importe quelle complexité.

Réseau sémantique

Nexus stocke les données sous forme de triplets (faits) - des affirmations simples au format "sujet → prédicat → objet". Un même format décrit à la fois les faits sur le monde et les règles des mécaniques :

  • Pomme → est → comestible (fait sur le monde)
  • Cerf → est → herbivore (fait sur le monde)
  • Coup → inflige des dégâts → 6 (règle de mécanique)
  • Poison → ignore l'armure → oui (modification de règle)
  • Herbe → pousse → lorsque l'humidité dépasse un certain seuil (fait sur le monde)
  • Syndicat → contrôle → quartier de la ville (fait sur le monde)

Données et règles sont écrites dans le même format, dans le même graphe. Les triplets décrivent tout : objets, propriétés, états, relations, actions, technologies, magie. C'est la différence fondamentale avec les approches classiques, où données et logique vivent séparément.

Le monde repose sur une grande quantité de faits : animaux, technologies, objets, bâtiments, événements historiques - des principes généraux aux détails spécifiques.

Interpréteur

L'interpréteur traite les triplets et déduit les conséquences des faits :

  • Pomme → est → fruit
  • Humain → peut manger → fruits
  • Déduction : l'humain peut manger des pommes

La déduction se construit par mise en correspondance des faits. Les chaînes peuvent être longues. Voici un exemple plus élaboré :

  • Gobelin → est → créature
  • Créature → possède → santé
  • Déduction : le gobelin a de la santé
  • Coup → inflige → dégâts
  • Dégâts → réduisent → santé
  • Déduction : un coup peut blesser un gobelin

On ajoute un poison avec un prédicat de dégâts - il fonctionne automatiquement contre tout ce qui a de la santé.

L'interpréteur travaille avec des requêtes formalisées, pas avec du langage naturel.

Graphe de connaissances

Les objets et propriétés du monde doivent être décrits de façon flexible, sans code en dur.

À la base, les entités : personnages, objets, animaux, organisations, navires, plantes. À chaque entité sont rattachés des faits via des prédicats.

Chaque prédicat exprime un lien ou une propriété :

  • "Est" (classification : gobelin → créature)
  • "Possède" (possession : la créature a de la santé)
  • "Dégâts" (impact : le coup inflige 6)
  • "Coût" (dépense : le coup coûte 3 mana)
  • "Absorption" (défense : le bouclier bloque 5)
  • "Relation" (lien : le gobelin déteste les humains)

Le coup a un prédicat Dégâts = 6. Le bouclier a un prédicat Absorption = 5. Le moteur en déduit : 6 - 5 = 1 passe en santé. Une seule mécanique pour toute source de dégâts et toute protection - épée, poison, feu, sort.

Les propriétés forment un réseau où chaque maillon est un fait. Les règles et interactions vivent comme des données et ne sont pas gravées dans le code.

Pour la performance, le système utilise la mise en cache, les index et un niveau de détail adaptatif (LOD).

Les règles comme patterns

Les données et la logique ne font pas encore un jeu. Pour le gameplay, il faut une couche de règles. En développement classique, les règles sont du code : chaque mécanique est écrite par un programmeur. Dans Nexus, les règles sont décrites avec les mêmes triplets que les données.

À la base, des patterns universels communs à tous les genres. Impact : l'épée inflige des dégâts à la santé, la rouille à la solidité, l'inflation au pouvoir d'achat. Dépense : le coup coûte du mana, la construction du bois, le voyage du carburant. Absorption : le bouclier bloque les dégâts, le contre-argument neutralise l'accusation, l'assurance couvre la perte.

Le designer décrit ce qui se passe, pas comment. "Le coup inflige 6 de dégâts" - un seul triplet. Le moteur détermine de lui-même : les dégâts passent par l'absorption, le reste va dans la santé. La formule n'est pas écrite pour chaque action - elle découle du pattern.

Les patterns se combinent librement. Un jeu de cartes utilise impact et absorption. Une stratégie utilise dépense et accumulation. Un RPG combine tout à la fois.

Un nouveau jeu, ce sont de nouvelles entités et de nouvelles combinaisons de patterns.

Agents

Une entité peut être définie comme un agent - avec son propre état et ses règles de comportement. C'est une propriété optionnelle. L'ennemi dans un jeu de cartes choisit lui-même son action. Les barbares dans une stratégie attaquent quand les conditions le permettent. Le marchand dans un RPG se déplace entre les villes. Un agent :

  • Perçoit le monde dans les limites de ses connaissances
  • Évalue les actions disponibles
  • Prend des décisions en s'appuyant sur ses objectifs et les règles du monde

L'agent est décrit avec les mêmes triplets que tout le reste. Le forgeron sait forger (fait), il faut du minerai (fait), le minerai est dans la mine (fait). À partir de ces faits, l'interpréteur déduit l'action : aller à la mine, extraire le minerai. La mine est inondée - le forgeron ne peut pas extraire le minerai - il cherche un marchand - il achète. Le comportement a émergé d'une chaîne de faits.

Échelle sans perte de logique

En simulation profonde, le monde peut contenir un nombre énorme de processus : de la migration animale à la croissance des villes en passant par la dynamique des systèmes stellaires. Tout recalculer est impossible et inutile - le joueur perçoit toujours le monde de manière subjective et limitée.

Le monde est organisé comme une carte d'hexagones. Chaque hex stocke les propriétés de son échelle : au niveau planétaire - climat et ressources, au niveau régional - villes et routes. Un clic sur un hex révèle le niveau suivant - à l'intérieur, une nouvelle carte avec des propriétés plus détaillées. L'algorithme est le même à tous les niveaux - du système stellaire au bâtiment individuel.

Temps et espace

Pour les longues périodes, le système peut utiliser des modèles statistiques au lieu d'un calcul pas à pas. On peut se déplacer dans le temps sans simuler chaque instant. Par exemple, en mille ans, une forêt peut pousser ou disparaître, une rivière changer de lit, un village grandir ou être abandonné. Les tendances et les liens sont préservés.

La mise à l'échelle de l'espace détermine le niveau des entités et des processus. À grande échelle - climat, migrations, politique. À l'échelle locale - entités individuelles et leurs propriétés. La logique causale est la même à tous les niveaux.

Les abstractions accueillent un monde de n'importe quelle échelle : village, planète, galaxie. Les détails apparaissent quand ils deviennent significatifs. Le reste est décrit de façon simplifiée, mais en conservant les liens.

Le joueur peut explorer la structure du monde en profondeur, en étudiant les entités et en naviguant par leurs propriétés - comme dans un système de référence.

Matérialisation du monde

Le monde se construit au fur et à mesure de l'exploration. Tant que le joueur n'a pas visité un lieu, celui-ci existe sous forme de données et de règles. Les objets apparaissent au moment de l'interaction, pas avant.

Hors du champ d'observation, les événements sont déterminés par la probabilité, pas par une simulation complète. Le monde paraît cohérent, bien que les détails soient générés à la demande.

Après une interaction avec un lieu, son état est sauvegardé et n'est plus recalculé.

Sur de longues périodes, les tendances statistiques prennent le relais. Mille ans après le début, le système décide par probabilité : quelles espèces survivront, comment le climat évoluera, où des colonies apparaîtront.

Jeu en réseau

Le jeu en réseau fonctionne sur le même principe. Le serveur stocke les données, les règles et ce que les joueurs ont déjà découvert.

Si plusieurs joueurs sont dans la même zone, le serveur rassemble l'état partagé et le synchronise entre eux.

En dehors de la zone de jeu, le monde reste potentiel - des règles et des tendances, sans détails.

L'architecture réseau de base fonctionne déjà : chaque joueur reçoit une session isolée, à laquelle d'autres peuvent se joindre par un code. Les actions sont synchronisées en temps réel.

L'architecture comme langage

Données, règles, interface et comportement des agents - un seul format. Les entités ne se connaissent pas entre elles ; les liens émergent automatiquement via les prédicats communs.

Comment ça marche concrètement ? La forêt est une entité avec des faits : contient du bois, sert d'abri, est combustible. La hache a le prédicat Coupe. La Coupe agit sur le bois. Le feu agit sur le combustible. La sécheresse augmente la combustibilité. Chaque fait tient en une ligne. La forêt ne connaît pas les haches, la hache ne connaît pas la forêt. Le lien émerge automatiquement via les prédicats communs. On ajoute un découpeur laser avec le prédicat Coupe - il fonctionne contre la forêt. On ajoute un bombardement planétaire avec le prédicat Feu - la forêt brûle.

Si une situation de jeu peut être décrite par des mots, elle fonctionne dans Nexus.