
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.
