
Jak działa Nexus
Płaska złożoność
Klasyczne podejście do gier opiera się na sztywnych systemach: każda mechanika to osobny kod, każde powiązanie między mechanikami to kolejny kod. Nawet sandboxy pozostają zestawem osobnych systemów. Różnorodność rośnie, ale architektura się nie zmienia - i złożoność produkcji rośnie razem z nią.
Nexus działa inaczej. Podstawowe elementy gry to atomy, z których buduje się wszystko. Dodawanie nowych mechanik nie zwiększa architekturalnej złożoności.
Miliony elementów, ale architektura się od tego nie komplikuje. System skaluje się - do mechanik, reguł i światów o dowolnej złożoności.
Sieć semantyczna
Nexus przechowuje dane jako trójki (fakty) - proste stwierdzenia w formacie "podmiot → predykat → obiekt". W jednym formacie opisywane są zarówno fakty o świecie, jak i reguły mechanik:
- Jabłko → jest → jadalne (fakt o świecie)
- Jeleń → jest → roślinożercą (fakt o świecie)
- Cios → zadaje obrażenia → 6 (reguła mechaniki)
- Trucizna → ignoruje pancerz → tak (modyfikacja reguły)
- Trawa → rośnie → przy wilgotności powyżej określonego poziomu (fakt o świecie)
- Syndykat → kontroluje → dzielnicę miasta (fakt o świecie)
Dane i reguły zapisywane są w jednym formacie, w jednym grafie. Przez trójki opisuje się wszystko: obiekty, właściwości, stany, relacje, działania, technologie, magię. To główna różnica w stosunku do klasycznych podejść, gdzie dane i logika żyją oddzielnie.
Świat opiera się na dużej liczbie faktów: zwierzęta, technologie, przedmioty, budynki, wydarzenia historyczne - od ogólnych zasad po konkretne detale.
Interpreter
Interpreter przetwarza trójki i wyprowadza wnioski z faktów:
- Jabłko → jest → owocem
- Człowiek → może jeść → owoce
- Wniosek: człowiek może jeść jabłka
Wnioskowanie opiera się na zestawianiu faktów. Łańcuchy mogą być długie. Oto trochę bardziej złożony przykład:
- Goblin → jest → istotą
- Istota → posiada → zdrowie
- Wniosek: goblin posiada zdrowie
- Cios → zadaje → obrażenia
- Obrażenia → obniżają → zdrowie
- Wniosek: cios może zranić goblina
Dodaliśmy truciznę z predykatem obrażeń - automatycznie działa na wszystko, co ma zdrowie.
Interpreter pracuje z formalnymi zapytaniami, nie z językiem naturalnym.
Graf wiedzy
Obiekty i właściwości świata trzeba opisywać elastycznie, bez hardkodu.
U podstaw leżą byty: postacie, przedmioty, zwierzęta, organizacje, statki, rośliny. Do każdego bytu przypisywane są fakty przez predykaty.
Każdy predykat wyraża jedno powiązanie lub jedną właściwość:
- "Jest" (klasyfikacja: goblin → istota)
- "Posiada" (posiadanie: istota ma zdrowie)
- "Obrażenia" (oddziaływanie: cios zadaje 6)
- "Koszt" (wydatek: cios kosztuje 3 many)
- "Pochłanianie" (obrona: tarcza blokuje 5)
- "Relacja" (powiązanie: goblin nienawidzi ludzi)
Cios ma predykat Obrażenia = 6. Tarcza ma predykat Pochłanianie = 5. Silnik wnioskuje: 6 - 5 = 1 trafia w zdrowie. Jedna mechanika dla dowolnego źródła obrażeń i dowolnej obrony - miecz, trucizna, ogień, zaklęcie.
Właściwości tworzą sieć, w której każde ogniwo to jeden fakt. Reguły i interakcje żyją jako dane, a nie są wbudowane w kod.
Dla wydajności stosowane są cache, indeksy i adaptacyjna szczegółowość (LOD).
Reguły jako wzorce
Dane i logika to jeszcze nie gra. Do rozgrywki potrzebna jest warstwa reguł. W klasycznej produkcji reguły to kod: każda mechanika napisana przez programistę. W Nexus reguły opisywane są tymi samymi trójkami co dane.
U podstaw leżą uniwersalne wzorce, wspólne dla wszystkich gatunków. Oddziaływanie: miecz zadaje obrażenia zdrowiu, rdza - wytrzymałości, inflacja - sile nabywczej. Wydatek: cios kosztuje manę, budowa - drewno, podróż - paliwo. Pochłanianie: tarcza blokuje obrażenia, kontrargument - oskarżenie, ubezpieczenie - stratę.
Projektant opisuje co się dzieje, a nie jak. "Cios zadaje 6 obrażeń" - jedna trójka. Silnik sam ustala: obrażenia przechodzą przez pochłanianie, reszta trafia w zdrowie. Formuła nie jest pisana dla każdego działania - wynika ze wzorca.
Wzorce swobodnie się łączą. Gra karciana używa oddziaływania i pochłaniania. Strategia - wydatku i gromadzenia. RPG - łączy wszystko razem.
Nowa gra to nowe byty i nowe kombinacje wzorców.
Agenci
Byt może być opisany jako agent - z własnym stanem i regułami zachowania. To opcjonalna właściwość. Wróg w grze karcianej sam wybiera działanie. Dzicy w strategii atakują, gdy warunki na to pozwalają. Kupiec w RPG przemieszcza się między miastami. Agent:
- Postrzega świat w granicach swojej wiedzy
- Ocenia dostępne działania
- Podejmuje decyzje, opierając się na celach i regułach świata
Agent opisywany jest tymi samymi trójkami co wszystko inne. Kowal umie kuć (fakt), potrzebna ruda (fakt), ruda jest w kopalni (fakt). Z tych faktów interpreter wyprowadza działanie: iść do kopalni, wydobyć rudę. Kopalnię zalało - kowal nie może wydobyć rudy - szuka kupca - kupuje. Zachowanie powstało z łańcucha faktów.
Skala bez utraty logiki
W głębokiej symulacji świat może zawierać ogromną liczbę procesów: od migracji zwierząt i rozwoju miast po dynamikę układów gwiezdnych. Przeliczanie wszystkiego jest niemożliwe i niepotrzebne - gracz zawsze postrzega świat subiektywnie i w ograniczonym zakresie.
Świat zorganizowany jest jako mapa z heksów. Każdy heks przechowuje właściwości swojej skali: na poziomie planetarnym - klimat i zasoby, na regionalnym - miasta i drogi. Kliknięcie w heks odsłania następny poziom - wewnątrz niego nowa mapa z bardziej szczegółowymi właściwościami. Algorytm jest ten sam na wszystkich poziomach - od układu gwiezdnego po pojedynczy budynek.
Czas i przestrzeń
Dla długich okresów system może stosować modele statystyczne zamiast obliczeń krokowych. Można przemieszczać się w czasie bez symulowania każdego momentu. Na przykład w ciągu tysiąca lat las może wyrosnąć lub zniknąć, rzeka - zmienić koryto, osada - rozrosnąć się lub zostać porzucona. Tendencje i powiązania zostają zachowane.
Skalowanie przestrzeni określa poziom bytów i procesów. Przy dużej skali - klimat, migracje, polityka. Przy lokalnej - poszczególne byty i ich właściwości. Logika przyczynowo-skutkowa jest jednolita na wszystkich poziomach.
Abstrakcje pomieszczą świat dowolnej skali: wioskę, planetę, galaktykę. Szczegóły pojawiają się, gdy stają się istotne. Reszta opisywana jest w uproszczonej formie, ale z zachowaniem powiązań.
Gracz może zagłębiać się w budowę świata, badając byty i przechodząc po ich właściwościach - podobnie jak nawigacja w systemie encyklopedycznym.
Materializacja świata
Świat budowany jest w miarę eksploracji. Dopóki gracz nie odwiedził lokacji, istnieje ona jako dane i reguły. Obiekty pojawiają się w momencie interakcji, a nie są przechowywane z góry.
Poza zasięgiem obserwacji wydarzenia określa prawdopodobieństwo, a nie pełna symulacja. Świat wygląda na spójny, choć szczegóły tworzone są na żądanie.
Po interakcji z lokacją jej stan jest zapisywany i nie jest już przeliczany.
Na długich odcinkach czasu działają tendencje statystyczne. Po tysiącu lat od początku system rozstrzyga na podstawie prawdopodobieństwa: jakie gatunki przetrwają, jak zmieni się klimat, gdzie powstaną osady.
Gra sieciowa
Gra sieciowa działa na tej samej zasadzie. Serwer przechowuje dane, reguły i to, co gracze już odkryli.
Jeśli kilku graczy znajduje się w tym samym obszarze - serwer buduje wspólny stan i synchronizuje go między nimi.
Poza obszarem gry świat pozostaje potencjalny - reguły i tendencje, bez detali.
Podstawowa architektura sieciowa już działa: każdy gracz otrzymuje izolowaną sesję, do której inni mogą dołączyć za pomocą kodu. Działania synchronizowane są w czasie rzeczywistym.
Architektura jako język
Dane, reguły, interfejs i zachowanie agentów - jeden format. Byty nie wiedzą o sobie nawzajem, powiązania powstają automatycznie przez wspólne predykaty.
Jak to działa w praktyce? Las to byt z faktami: ma drewno, jest schronieniem, jest palny. Topór ma predykat Rąbanie. Rąbanie działa na drewno. Ogień działa na palne. Susza zwiększa palność. Każdy fakt to jeden wiersz. Las nie wie o toporach, topór nie wie o lesie. Powiązanie powstaje automatycznie przez wspólne predykaty. Dodaliśmy laserowy palnik z predykatem Rąbanie - działa na las. Dodaliśmy bombardowanie orbitalne z predykatem Ogień - las płonie.
Jeśli sytuację w grze można opisać słowami - działa ona w Nexus.
