
Nexus nasıl çalışır
Düz karmaşıklık
Klasik oyun yaklaşımı katı sistemler etrafında kurulur: her mekanik ayrı bir kod, mekanikler arasındaki her bağlantı ayrı bir kod daha. Sandbox oyunlar bile birbirinden bağımsız sistemlerden oluşan yapılar olmaya devam eder. Çeşitlilik artar ama mimari değişmez - ve geliştirme karmaşıklığı onunla birlikte büyür.
Nexus farklı çalışır. Oyunun temel öğeleri, her şeyin üzerine inşa edildiği atomlardır. Yeni mekanikler eklemek mimari karmaşıklığı artırmaz.
Milyonlarca öğe, ama mimari bundan karmaşıklaşmaz. Sistem ölçeklenir - herhangi bir karmaşıklıktaki mekaniklere, kurallara ve dünyalara.
Anlamsal ağ
Nexus verileri üçlüler (olgular) olarak saklar - "özne → yüklem → nesne" biçiminde basit ifadeler. Hem dünya hakkındaki olgular hem de mekanik kuralları aynı formatta tanımlanır:
- Elma → dir → yenilebilir (dünya olgusu)
- Geyik → dir → otçul (dünya olgusu)
- Vuruş → hasar verir → 6 (mekanik kuralı)
- Zehir → zırhı görmezden gelir → evet (kural değişikliği)
- Ot → büyür → nem belirli seviyenin üstündeyken (dünya olgusu)
- Sendika → kontrol eder → şehir bölgesi (dünya olgusu)
Veri ve kurallar aynı formatta, aynı grafikte yazılır. Üçlüler aracılığıyla her şey tanımlanır: nesneler, özellikler, durumlar, ilişkiler, eylemler, teknolojiler, büyü. Veri ve mantığın ayrı yaşadığı klasik yaklaşımlardan temel farkı budur.
Dünya büyük miktarda olgu üzerine kuruludur: hayvanlar, teknolojiler, eşyalar, yapılar, tarihsel olaylar - genel ilkelerden belirli ayrıntılara kadar.
Yorumlayıcı
Yorumlayıcı üçlüleri işler ve olgulardan çıkarımlar üretir:
- Elma → dir → meyve
- İnsan → yiyebilir → meyve
- Çıkarım: insan elma yiyebilir
Çıkarım olgu eşleştirmesiyle oluşur. Zincirler uzun olabilir. Biraz daha karmaşık bir örnek:
- Goblin → dir → yaratık
- Yaratık → sahiptir → can
- Çıkarım: goblinin canı var
- Vuruş → verir → hasar
- Hasar → azaltır → can
- Çıkarım: vuruş gobline zarar verebilir
Hasar yüklemi olan zehir eklendi - canı olan herkese karşı otomatik olarak çalışır.
Yorumlayıcı biçimlenmiş sorgularla çalışır, doğal dille değil.
Bilgi grafı
Dünyanın nesneleri ve özellikleri sabit kodlama olmadan esnek bir şekilde tanımlanmalıdır.
Temelde varlıklar var: karakterler, eşyalar, hayvanlar, organizasyonlar, gemiler, bitkiler. Her varlığa yüklemler aracılığıyla olgular bağlanır.
Her yüklem bir bağlantı ya da bir özellik ifade eder:
- "Dir" (sınıflandırma: goblin → yaratık)
- "Sahiptir" (mülkiyet: yaratığın canı var)
- "Hasar" (etki: vuruş 6 verir)
- "Maliyet" (harcama: vuruş 3 mana harcar)
- "Emilim" (savunma: kalkan 5 engeller)
- "İlişki" (bağ: goblin insanlardan nefret eder)
Vuruşun Hasar = 6 yüklemi vardır. Kalkanın Emilim = 5 yüklemi vardır. Motor hesaplar: 6 - 5 = 1 cana geçer. Herhangi bir hasar kaynağı ve herhangi bir savunma için tek mekanik - kılıç, zehir, ateş, büyü.
Özellikler, her halkası bir olgu olan bir ağ oluşturur. Kurallar ve etkileşimler koda gömülü değil, veri olarak yaşarlar.
Performans için önbellekleme, indeksler ve uyarlanabilir ayrıntılandırma (LOD) kullanılır.
Kalıp olarak kurallar
Veri ve mantık henüz oyun değil. Oynanış için kurallar katmanı gerekir. Klasik geliştirmede kurallar koddur: her mekanik programcı tarafından yazılır. Nexus'ta kurallar, verilerle aynı üçlülerle tanımlanır.
Temelde tüm türler için geçerli evrensel kalıplar vardır. Etki: kılıç cana hasar verir, pas dayanıklılığa, enflasyon satın alma gücüne. Harcama: vuruş mana harcar, inşaat tahta harcar, yolculuk yakıt harcar. Emilim: kalkan hasarı engeller, karşı argüman suçlamayı, sigorta kaybı.
Tasarımcı ne olduğunu tanımlar, nasıl olduğunu değil. "Vuruş 6 hasar verir" - tek üçlü. Motor kendi belirler: hasar emilimden geçer, kalan cana gider. Her eylem için formül yazılmaz - kalıptan türetilir.
Kalıplar serbestçe birleşir. Kart oyunu etki ve emilim kullanır. Strateji harcama ve birikim kullanır. RPG hepsini bir arada kullanır.
Yeni bir oyun - yeni varlıklar ve yeni kalıp kombinasyonları.
Etkenler
Bir varlık, kendi durumu ve davranış kuralları olan bir etken olarak tanımlanabilir. Bu isteğe bağlı bir özelliktir. Kart oyunundaki düşman kendi hamlesini seçer. Stratejideki barbarlar koşullar uygun olduğunda saldırır. RPG'deki tüccar şehirler arasında gidip gelir. Bir etken:
- Dünyayı kendi bilgisi çerçevesinde algılar
- Mümkün eylemleri değerlendirir
- Hedeflere ve dünya kurallarına dayanarak karar verir
Etken, her şey gibi aynı üçlülerle tanımlanır. Demirci dövmeyi bilir (olgu), cevher gerekir (olgu), cevher madende (olgu). Bu olgulardan yorumlayıcı eylemi türetir: madene git, cevher çıkar. Maden su bastı - demirci cevher çıkaramaz - tüccar arar - satın alır. Davranış olgu zincirinden ortaya çıktı.
Mantık kaybı olmadan ölçek
Derin bir simülasyonda dünya büyük miktarda süreç içerebilir: hayvan göçlerinden şehir büyümesine, yıldız sistemi dinamiklerine kadar. Her şeyi yeniden hesaplamak imkansız ve gereksizdir - oyuncu dünyayı her zaman öznel ve sınırlı bir çerçevede algılar.
Dünya hexlerden oluşan bir harita olarak organize edilir. Her hex kendi ölçeğinin özelliklerini saklar: gezegen düzeyinde iklim ve kaynaklar, bölgesel düzeyde şehirler ve yollar. Bir hexe tıklamak sonraki seviyeyi açar - içinde daha ayrıntılı özelliklere sahip yeni bir harita. Algoritma yıldız sisteminden tek bir binaya kadar tüm seviyelerde aynıdır.
Zaman ve mekan
Uzun süreler için sistem, adım adım hesaplama yerine istatistiksel modeller kullanabilir. Her anı simüle etmeden zamanda yolculuk yapılabilir. Örneğin bin yılda orman büyüyebilir ya da yok olabilir, nehir yatak değiştirebilir, yerleşim büyüyebilir ya da terk edilebilir. Eğilimler ve bağlantılar korunur.
Mekansal ölçekleme, varlıkların ve süreçlerin seviyesini belirler. Büyük ölçekte - iklim, göçler, siyaset. Yerel ölçekte - tekil varlıklar ve özellikleri. Neden-sonuç bağlantıları mantığı tüm seviyelerde aynıdır.
Soyutlamalar herhangi bir ölçekteki dünyayı barındırabilir: köy, gezegen, galaksi. Ayrıntılar anlamlı hale geldiklerinde belirir. Geri kalan sadeleştirilmiş biçimde tanımlanır ama bağlantılar korunur.
Oyuncu dünyanın yapısını derinlemesine inceleyebilir, varlıkları araştırıp özellikler üzerinden ilerleyebilir - bir başvuru sisteminde gezinmeye benzer şekilde.
Dünyanın somutlaşması
Dünya keşfedildikçe inşa edilir. Oyuncu bir konumu ziyaret edene kadar orası veri ve kurallar olarak var olur. Nesneler önceden depolanmaz, etkileşim anında ortaya çıkar.
Gözlem dışında olayları tam simülasyon değil, olasılık belirler. Ayrıntılar istek üzerine oluşturulsa da dünya bütünlüklü görünür.
Bir konumla etkileşildikten sonra durumu kaydedilir ve artık yeniden hesaplanmaz.
Uzun zaman dilimlerinde istatistiksel eğilimler çalışır. Başlangıçtan bin yıl sonra sistem olasılığa göre karar verir: hangi türler hayatta kalır, iklim nasıl değişir, nerede yerleşimler oluşur.
Ağ üzerinden oyun
Ağ üzerinden oyun aynı ilkeyle çalışır. Sunucu verileri, kuralları ve oyuncuların halihazırda keşfettiklerini saklar.
Birden fazla oyuncu aynı bölgede bulunuyorsa sunucu ortak durumu oluşturur ve aralarında senkronize eder.
Oyun alanının dışında dünya potansiyel olarak kalır - kurallar ve eğilimler, ayrıntılar olmadan.
Temel ağ mimarisi zaten çalışıyor: her oyuncu yalıtılmış bir oturum alır ve başkaları kodla katılabilir. Eylemler gerçek zamanlı senkronize edilir.
Dil olarak mimari
Veriler, kurallar, arayüz ve etken davranışı - tek format. Varlıklar birbirinden habersizdir, bağlantılar ortak yüklemler aracılığıyla otomatik oluşur.
Pratikte nasıl çalışır? Orman, olgulara sahip bir varlıktır: kerestesi var, sığınak görevi görür, yanıcı. Baltanın Kesme yüklemi var. Kesme kereste üzerinde etkilidir. Ateş yanıcı şeyler üzerinde etkilidir. Kuraklık yanıcılığı artırır. Her olgu tek satır. Orman baltaları bilmez, balta ormanı bilmez. Bağlantı ortak yüklemler aracılığıyla otomatik oluşur. Kesme yüklemiyle lazer kesici eklendi - ormana karşı çalışır. Ateş yüklemiyle gezegensel bombardıman eklendi - orman yanar.
Bir oyun durumu kelimelerle tanımlanabiliyorsa - Nexus'ta çalışır.
