Architektura enginu Nexus

Jak Nexus funguje

Plochá složitost

Klasický přístup ke hrám staví na pevných systémech: každá mechanika je samostatný kód, každá vazba mezi mechanikami - další kód. I sandboxy zůstávají souborem oddělených systémů. Rozmanitost roste, ale architektura se nemění - a složitost vývoje roste s ní.

Nexus funguje jinak. Základní prvky hry jsou atomy, ze kterých se staví vše ostatní. Přidávání nových mechanik nezvyšuje architekturální složitost.

Miliony prvků, ale architektura se tím nekomplikuje. Systém se škáluje - k mechanikám, pravidlům a světům jakékoliv složitosti.

Sémantická síť

Nexus ukládá data jako triplety (fakta) - jednoduchá tvrzení ve formátu "subjekt → predikát → objekt". V jednom formátu se popisují jak fakta o světě, tak pravidla mechanik:

  • Jablko → je → jedlé (fakt o světě)
  • Jelen → je → býložravec (fakt o světě)
  • Úder → způsobuje poškození → 6 (pravidlo mechaniky)
  • Jed → ignoruje brnění → ano (modifikace pravidla)
  • Tráva → roste → při vlhkosti nad určitou úrovní (fakt o světě)
  • Syndikát → ovládá → čtvrť města (fakt o světě)

Data a pravidla se zapisují v jednom formátu, v jednom grafu. Přes triplety se popisuje vše: objekty, vlastnosti, stavy, vztahy, akce, technologie, magie. To je hlavní rozdíl od klasických přístupů, kde data a logika žijí odděleně.

Svět stojí na velkém množství faktů: zvířata, technologie, předměty, stavby, historické události - od obecných principů po konkrétní detaily.

Interpret

Interpret zpracovává triplety a vyvozuje důsledky z faktů:

  • Jablko → je → ovoce
  • Člověk → může jíst → ovoce
  • Závěr: člověk může jíst jablka

Závěr se vytváří porovnáváním faktů. Řetězce mohou být dlouhé. Složitější příklad:

  • Goblin → je → bytost
  • Bytost → má → zdraví
  • Závěr: goblin má zdraví
  • Úder → způsobuje → poškození
  • Poškození → snižuje → zdraví
  • Závěr: úder může ublížit goblinovi

Přidáme jed s predikátem poškození - automaticky funguje proti všem, kdo mají zdraví.

Interpret pracuje s formalizovanými dotazy, ne s přirozeným jazykem.

Graf znalostí

Objekty a vlastnosti světa je potřeba popisovat flexibilně, bez hardcodu.

V základu jsou entity: postavy, předměty, zvířata, organizace, lodě, rostliny. Ke každé entitě se připojují fakta prostřednictvím predikátů.

Každý predikát vyjadřuje jednu vazbu nebo jednu vlastnost:

  • "Je" (klasifikace: goblin → bytost)
  • "Má" (vlastnictví: bytost má zdraví)
  • "Poškození" (působení: úder způsobuje 6)
  • "Cena" (náklady: úder stojí 3 many)
  • "Absorpce" (obrana: štít blokuje 5)
  • "Vztah" (vazba: goblin nenávidí lidi)

Úder má predikát Poškození = 6. Štít má predikát Absorpce = 5. Engine vyvodí: 6 - 5 = 1 projde do zdraví. Jedna mechanika pro jakýkoliv zdroj poškození a jakoukoliv obranu - meč, jed, oheň, kouzlo.

Vlastnosti tvoří síť, kde každý článek je jeden fakt. Pravidla a interakce žijí jako data, nejsou zadrátované v kódu.

Pro výkon se používají cachování, indexy a adaptivní detailnost (LOD).

Pravidla jako vzory

Data a logika - to ještě není hra. Pro hratelnost je potřeba vrstva pravidel. V klasickém vývoji jsou pravidla kód: každou mechaniku napsal programátor. V Nexus se pravidla popisují stejnými triplety jako data.

V základu jsou univerzální vzory, společné pro všechny žánry. Působení: meč způsobuje poškození zdraví, rez - odolnosti, inflace - kupní síle. Náklady: úder stojí manu, stavba - dřevo, cesta - palivo. Absorpce: štít blokuje poškození, protiargument - obvinění, pojistka - ztrátu.

Designer popisuje co se děje, ne jak. "Úder způsobuje 6 poškození" - jeden triplet. Engine sám určí: poškození prochází přes absorpci, zbytek jde do zdraví. Vzorec se nepíše pro každou akci - vyplývá ze vzoru.

Vzory se volně kombinují. Karetní hra využívá působení a absorpci. Strategie - náklady a akumulaci. RPG - kombinuje vše dohromady.

Nová hra - to jsou nové entity a nové kombinace vzorů.

Agenti

Entita může být popsána jako agent - s vlastním stavem a pravidly chování. Je to volitelná vlastnost. Nepřítel v karetní hře sám volí akci. Barbaři ve strategii útočí, když to podmínky dovolí. Obchodník v RPG cestuje mezi městy. Agent:

  • Vnímá svět v mezích svých znalostí
  • Vyhodnocuje dostupné akce
  • Rozhoduje se na základě cílů a pravidel světa

Agent se popisuje stejnými triplety jako vše ostatní. Kovář umí kovat (fakt), potřebuje rudu (fakt), ruda je v dole (fakt). Z těchto faktů interpret vyvodí akci: jít do dolu, vytěžit rudu. Důl je zatopený - kovář nemůže vytěžit rudu - hledá obchodníka - kupuje. Chování vzniklo z řetězce faktů.

Škálování bez ztráty logiky

V hluboké simulaci může svět obsahovat obrovské množství procesů: od migrace zvířat a růstu měst po dynamiku hvězdných soustav. Přepočítávat vše je nemožné a zbytečné - hráč vždy vnímá svět subjektivně a v omezeném rozsahu.

Svět je organizován jako mapa z hexů. Každý hex uchovává vlastnosti svého měřítka: na planetární úrovni - klima a zdroje, na regionální - města a cesty. Klik na hex odhalí další úroveň - uvnitř je nová mapa s detailnějšími vlastnostmi. Algoritmus je jednotný na všech úrovních - od hvězdné soustavy po jednotlivou budovu.

Čas a prostor

Pro dlouhá období může systém místo krokového výpočtu použít statistické modely. Dá se cestovat v čase bez simulace každého okamžiku. Například za tisíc let může les vyrůst nebo zmizet, řeka změnit koryto, osada se rozrůst nebo být opuštěna. Tendence a vazby se zachovávají.

Škálování prostoru určuje úroveň entit a procesů. Při velkém měřítku - klima, migrace, politika. Na lokální úrovni - jednotlivé entity a jejich vlastnosti. Logika příčinných vazeb je jednotná na všech úrovních.

Abstrakce pojmou svět jakéhokoliv měřítka: vesnici, planetu, galaxii. Detaily se objevují, když se stanou důležitými. Zbytek se popisuje ve zjednodušené podobě, ale se zachováním vazeb.

Hráč se může zanořovat do uspořádání světa, zkoumat entity a přecházet po jejich vlastnostech - podobně jako navigace v referenčním systému.

Materializace světa

Svět se staví průběžně, jak ho hráč prozkoumává. Dokud hráč lokaci nenavštíví, existuje jako data a pravidla. Objekty se objevují v okamžiku interakce, nejsou uloženy předem.

Mimo oblast pozorování události určuje pravděpodobnost, ne plná simulace. Svět vypadá celistvě, přestože detaily se vytvářejí na vyžádání.

Po interakci s lokací se její stav uloží a dále se nepřepočítává.

Na dlouhých časových úsecích pracují statistické tendence. Tisíc let po začátku systém rozhodne podle pravděpodobnosti: které druhy přežijí, jak se změní klima, kde vzniknou osady.

Hra po síti

Síťová hra funguje na stejném principu. Server uchovává data, pravidla a to, co hráči už objevili.

Pokud je víc hráčů ve stejné oblasti - server sestaví společný stav a synchronizuje ho mezi nimi.

Mimo oblast hry svět zůstává potenciální - pravidla a tendence, bez detailů.

Základní síťová architektura už funguje: každý hráč dostane izolovanou relaci, ke které se ostatní mohou připojit přes kód. Akce se synchronizují v reálném čase.

Architektura jako jazyk

Data, pravidla, rozhraní a chování agentů - jeden formát. Entity o sobě navzájem nevědí, vazby vznikají automaticky přes společné predikáty.

Jak to funguje v praxi? Les je entita s fakty: má dřevo, je úkrytem, je hořlavý. Sekera má predikát Kácení. Kácení působí na dřevo. Oheň působí na hořlavé. Sucho zvyšuje hořlavost. Každý fakt je jeden řádek. Les neví o sekerách, sekera neví o lese. Vazba vzniká automaticky přes společné predikáty. Přidali jsme laserový řezač s predikátem Kácení - funguje proti lesu. Přidali jsme planetární bombardování s predikátem Oheň - les hoří.

Pokud se herní situace dá popsat slovy - funguje v Nexus.