Dark Forest 是一個基於以太坊區塊鏈的去中心化策略遊戲,玩家可以在遊戲中採集資源、建造基地、發展科技、收集武器,與其他玩家進行戰鬥並爭奪資源。
在 Dark Forest 中,每個玩家都掌握著自己的星球,並需要在星球上採集資源,建造基地和發展科技來提高自己的戰鬥能力。玩家可以使用資源生產建築、科技研究和武器製造設施,以便在戰鬥中獲得優勢。
當玩家在星際空間中飛行時,他們需要通過不斷的偵察和探索來發現其他星球和資源。當兩個玩家同時發現同一顆星球時,他們可以選擇對該星球發起進攻或者選擇逃離。在進攻時,玩家需要使用自己的武器來攻擊對方的基地,並奪取對方的資源。
Dark Forest 的特點在於遊戲完全基於區塊鏈技術,每個玩家的星球和資源都存儲在區塊鏈上,無法被篡改或者刪除。此外,Dark Forest 也是一個去中心化遊戲(DeGame),沒有中央伺服器控制遊戲進程,而是由所有玩家共同維護和決策。
Dark Forest 也是首次在全鏈去中心化遊戲中引入戰爭迷霧系統的遊戲,得到了 V 神的肯定。我們將在本文深度拆解,來探討這樣一個即時策略遊戲如何在全鏈環境中實現。@DfArchon 會不定時地舉辦 "Community Round",感興趣的同學也可以參加測試一下。
我們從遊戲類型說起,先對 MMORPG 和 MMORTS 遊戲做對比:
- MMO-RPG 遊戲:多人在線角色扮演,開放世界,遊戲有始無終,遊戲的樂趣在於身臨其境體驗故事性和元宇宙遊戲世界。比如,魔獸世界。
- MMO-RTS 遊戲:多人在線策略對抗,相對小的封閉世界,遊戲一輪有始有終,遊戲的樂趣在於在故事背景下的多人對抗,需要用到策略來獲得資源發展然後消滅敵人。典型代表,星際爭霸,魔獸爭霸,一局在 20-40 分鐘。
- DF 是 MMORTS 遊戲,因為可以同時參與的人多(可達上千人),區塊鏈 TPS 有限制,所以一輪(round)持續時間在 10 天左右,勝負以天梯得分排名為準,得分主要來自於遊戲中獲取的資源(PVE 的自由獲取和 PVP 的掠奪)。遊戲暫停期間,用戶不可與遊戲合約互動。
實盤操作#
最早只有官方舉行 Official Round 的時候,需要邀請碼(key)登錄來參與,現在有了 lobby 功能,任何人都可以創建自己的 round,所以就有了所謂的 community round(類似於社區舉辦的一場比賽)。進入主頁https://zkga.me/,點擊 "Create Lobby",會進入 Lobby 設置頁面,如下圖
Game settings:通過更改能量 / 銀幣的恢復速度以及航行速度可以修改遊戲速度。
World Size:通過修改宇宙半徑來改變地圖的大小。
Space Type & Biome: 選擇遊戲地圖。
Planets:設定行星的基礎參數。
Player spawn:生成玩家的參數設定。
Space junk:該遊戲道具的參數設定。
Capture zones:佔領區參數設定。
Artifacts:該遊戲道具的參數設定。
Admin permissions:設置是否打開白名單玩家。
Advanced Snarks:戰爭迷霧參數設定。
關於 Lobby 更多的使用技巧,請參考這篇官方的解答:
https://blog.zkga.me/introducing-dark-forest-lobbies
Dark Forest 表面上看起來很複雜,但其實它的基本遊戲規則很簡單:行星有能量值,此能量值會隨著距離的延展而衰減,行星間的跳躍就是互相攻擊,攻擊的勝負是以衰減後的能量值大小來判定。當然了,也已經有很多文章和視頻來講述如何玩遊戲,這裡不做更細緻的分享。
開發者文檔分析#
開發者文檔對遊戲的開發架構做了一些框架性的解釋,分別針對插件開發者,網頁客戶端開發者,遊戲合約開發者和 ZK 電路開發者。
Connect to the Blockchain
遊戲運行在 xDai 的 layer2 上面,也就是現在的 Gnosis Chain,因為遊戲在運行中需要和合約有大量交互,所以內置 RPC 節點。Gnosis 團隊甚至為這個遊戲開通了一個遊戲專用節點。
Plugins
黑暗森林允許玩家通過插件系統自定義默認的網頁客戶端。 插件是玩家可以編寫的代碼片段,用於生成遊戲數據的替代視圖、自動化常見的遊戲流程,甚至重新設計遊戲皮膚。 從本質上講,Dark Forest 允許玩家以他們喜歡的任何方式與網絡客戶端進行編程交互。
Mining
黑暗森林的關鍵機制是它的密碼戰爭迷霧。 當第一次加入遊戲時,您不知道其他玩家所在的位置。玩家必須計算哈希值才能發現宇宙中的興趣點,例如行星和其他玩家的位置。 這些哈希值保存在瀏覽器的本地存儲中,並被視為秘密數據。默認情況下,Dark Forest 默認 Web 客戶端使用單線程 Javascript 礦工來探索宇宙,但您可以采取多種措施來提高哈希率,比如改變挖掘按鈕旁邊的 CPU 核心。 如果您嘗試將內核數設置為大於您計算機的實際內核數,您的礦機性能將趨於平穩。
當玩家的礦工發現宇宙區域地圖時,網頁客戶端會將與這些未發現區域相關的信息保存到瀏覽器的本地存儲中。黑暗森林將數據保存到 IndexedDB。 玩家也可以通過運行一台遠程服務器來充當探索位置地圖的礦工。
Snarking
黑暗森林由 ZK-Snark 技術提供支持,ZK-Snark 技術是一種密碼技術,可用於在不洩露函數的輸入或邏輯的情況下證明函數的正確性。黑暗森林使用這種技術來驗證遊戲中的移動是否有效,而不會向在鏈上窺探的人們透露行星的位置。 這種技術(Zk-snark Proof Generation)在計算上非常昂貴! 所以該 ZK-Proof 將計算移到瀏覽器之外,需要本地運行一個 Node.JS。當然了,遊戲也允許使用一台遠程服務器來運行這個服務。
總結
作為一個有著極強創新性的全鏈遊戲,Dark Forest 的發展確顯得緩慢。一個可能的原因是,這是一個社區推動的項目,雖然可以保證去中心化,但也因此影響了開發效率。上次 official round 是在 2022 年 2 月。Webclient 更新是在 2020 年 10 月,第三方(社區)插件更新還稍微活躍一些,包括 2022 年 7 月的 nightmarket(匿名交易行星坐標),2022 年 3 月的 lobby。