
Nexus 的運作原理
扁平複雜度
傳統的遊戲開發方式圍繞硬性系統:每個機制是一段獨立程式碼,機制之間的每個關聯又是另一段程式碼。即使是沙盒遊戲也只是獨立系統的集合。多樣性增加了,但架構沒變 - 開發複雜度也隨之增長。
Nexus 的設計截然不同。遊戲的基本元素是原子,一切由此構建。新增機制不會增加架構複雜度。
數百萬個元素,但架構不會因此變複雜。系統可擴展 - 適用於任何複雜度的機制、規則和世界。
語義網路
Nexus 將資料儲存為三元組(事實) - 格式為「主詞 → 謂詞 → 受詞」的簡單陳述。世界事實和機制規則都用同一格式描述:
- 蘋果 → 是 → 可食用的(世界事實)
- 鹿 → 是 → 草食動物(世界事實)
- 攻擊 → 造成傷害 → 6(機制規則)
- 毒素 → 無視護甲 → 是(規則修改)
- 草 → 生長 → 在濕度超過一定水準時(世界事實)
- 犯罪集團 → 控制 → 城市街區(世界事實)
資料和規則以相同格式記錄在同一個圖譜中。透過三元組描述一切:物件、屬性、狀態、關係、行動、科技、魔法。這是與傳統方式最根本的差異,後者將資料和邏輯分開處理。
世界建立在大量事實之上:動物、科技、物品、建築、歷史事件 - 從通用原理到具體細節。
解釋器
解釋器處理三元組並從事實中推導結論:
- 蘋果 → 是 → 水果
- 人類 → 可以吃 → 水果
- 推論:人類可以吃蘋果
推論透過事實比對來建構。鏈條可以很長。以下是一個更複雜的範例:
- 哥布林 → 是 → 生物
- 生物 → 擁有 → 生命值
- 推論:哥布林擁有生命值
- 攻擊 → 造成 → 傷害
- 傷害 → 降低 → 生命值
- 推論:攻擊可以傷害哥布林
新增一個帶有傷害謂詞的毒素 - 它自動對所有擁有生命值的實體生效。
解釋器處理的是形式化查詢,而非自然語言。
知識圖譜
世界的物件和屬性需要以靈活的方式描述,而非寫死在程式碼中。
基礎是實體:角色、物品、動物、組織、船艦、植物。每個實體透過謂詞附帶事實。
每個謂詞表達一個關聯或一個屬性:
- 「是」(分類:哥布林 → 生物)
- 「擁有」(持有:生物擁有生命值)
- 「傷害」(影響:攻擊造成 6 點)
- 「消耗」(花費:攻擊消耗 3 點法力)
- 「吸收」(防禦:盾牌抵擋 5 點)
- 「關係」(連結:哥布林仇恨人類)
攻擊的傷害謂詞 = 6。盾牌的吸收謂詞 = 5。引擎推導:6 - 5 = 1 點穿透到生命值。同一套機制適用於所有傷害來源和所有防禦 - 劍、毒、火、法術。
屬性構成一張網路,每個節點都是一個事實。規則和互動作為資料存在,而非寫死在程式碼裡。
為了效能,系統使用快取、索引和自適應細節層次(LOD)。
規則即模式
有了資料和邏輯還不是遊戲。遊戲玩法需要規則層。在傳統開發中,規則是程式碼:每個機制由程式設計師撰寫。在 Nexus 中,規則用與資料相同的三元組來描述。
基礎是通用模式,適用於所有類型。影響:劍對生命值造成傷害,鏽蝕對耐久度造成傷害,通膨對購買力造成傷害。消耗:攻擊消耗法力,建造消耗木材,旅行消耗燃料。吸收:盾牌抵擋傷害,反駁抵擋指控,保險抵擋損失。
設計師描述「發生什麼」,而非「如何發生」。「攻擊造成 6 點傷害」- 一個三元組。引擎自行判定:傷害經過吸收,餘量作用於生命值。不需要為每個動作單獨編寫公式 - 公式來自模式。
模式可以自由組合。卡牌遊戲使用影響和吸收。策略遊戲使用消耗和累積。RPG 將所有模式結合在一起。
新遊戲就是新實體和新的模式組合。
代理者
實體可以被定義為代理者 - 擁有自身狀態和行為規則。這是可選屬性。卡牌遊戲中的敵人自行選擇行動。策略遊戲中的野蠻人在條件許可時發動攻擊。RPG 中的商人在城市之間移動。代理者:
- 在自身知識範圍內感知世界
- 評估可用行動
- 根據目標和世界規則做出決策
代理者用與其他一切相同的三元組來描述。鐵匠會打鐵(事實),需要礦石(事實),礦石在礦坑(事實)。解釋器從這些事實推導出行動:前往礦坑,開採礦石。礦坑被淹 - 鐵匠無法開採 - 尋找商人 - 購買。行為從事實鏈中自然浮現。
不失邏輯的縮放
在深度模擬中,世界可能包含大量過程:從動物遷徙和城市成長到恆星系統的動態變化。全部重新計算既不可能也沒必要 - 玩家對世界的感知始終是主觀且有限的。
世界組織為六角格地圖。每個六角格儲存其對應比例尺的屬性:在行星級別是氣候和資源,在區域級別是城市和道路。點擊六角格會展開下一層 - 內部是一張新地圖,包含更詳細的屬性。演算法在所有層級上統一 - 從恆星系統到單棟建築。
時間與空間
對於漫長時期,系統可以使用統計模型而非逐步計算。可以在時間中跳轉,不必模擬每個瞬間。例如,一千年間森林可能生長或消失,河流改道,聚落擴張或被廢棄。趨勢和關聯得以保留。
空間縮放決定了實體和過程的層級。在大比例尺下是氣候、遷徙、政治。在局部範圍是個別實體及其屬性。因果關聯的邏輯在所有層級上統一。
抽象層容納任何規模的世界:村莊、星球、星系。細節在變得重要時出現。其餘以簡化形式描述,但保留關聯。
玩家可以深入世界結構,研究實體並瀏覽其屬性 - 類似在參考系統中導航。
世界的實體化
世界隨探索而建構。玩家尚未造訪的地點,只以資料和規則的形式存在。物件在互動的瞬間出現,而非預先儲存。
在觀察範圍之外,事件由機率決定,而非完整模擬。世界看起來完整,儘管細節是按需生成的。
與某地互動之後,其狀態會被保存,不再重新計算。
在漫長時間跨度上,統計趨勢發揮作用。起始後一千年,系統依機率決定:哪些物種存活、氣候如何變化、哪裡出現聚落。
網路遊戲
網路遊戲基於相同原理運作。伺服器儲存資料、規則以及玩家已發現的內容。
如果多位玩家在同一區域 - 伺服器整合共同狀態並在他們之間同步。
遊戲區域之外,世界保持潛在狀態 - 只有規則和趨勢,沒有細節。
基礎網路架構已在運作:每位玩家獲得獨立的遊戲階段,其他人可以透過代碼加入。行動即時同步。
架構即語言
資料、規則、介面和代理者行為 - 統一格式。實體互不知曉,關聯透過共同謂詞自動產生。
實際上如何運作?森林是一個帶有事實的實體:有木材、是掩體、可燃。斧頭有砍伐謂詞。砍伐作用於木材。火作用於可燃物。乾旱提高可燃性。每個事實一行。森林不知道斧頭的存在,斧頭不知道森林的存在。關聯透過共同謂詞自動產生。加入一把帶有砍伐謂詞的雷射切割器 - 它對森林有效。加入一次帶有火焰謂詞的行星轟炸 - 森林燃燒。
如果遊戲情境可以用語言描述 - 它就能在 Nexus 中運作。
