原作者:Scott Sunarto (@smsunarto)
翻譯潤色:Justin(@hicaptainz)
Scott 在上週參加 Modular Summit 了,以下內容是 Argus 目前的最新進展報告。我覺得好玩的地方是:World Engine 居然可以和 MUD 搭配使用的
大家好,感謝你們參加今天的峰會。我在這裡要討論一個項目,這個項目佔據了我們過去一年的大部分時間。然而,你們很快就會發現,這個故事的時間線遠遠超過這個時間框架。
在聯合創辦 Argus 之前,我是 Dark Forest 的創造者之一,這是以太坊上的第一個完全鏈上遊戲,使用了 ZK snarks。Dark Forest 的誕生是由一個簡單的問題驅動的:我們能否創建一個每個動作都是鏈上交易的遊戲?在 2020 年,這是一個激進的主張。許多人質疑一個完全鏈上遊戲的可行性,因為區塊鏈技術的速度慢。儘管有這種懷疑,我們的好奇心驅使我們開發了 Dark Forest。
Dark Forest 是一個太空探索遊戲,有數千名玩家在鏈上戰鬥,擴大他們的帝國。在發布的第一週,我們有超過 10,000 名玩家,並在以太坊測試網上花費了數萬億的 gas。這種高水平的活動最終迫使我們從測試網轉移到側鏈。然而,即使是側鏈,因其可擴展性而受到讚譽,也證明是不夠的。我們很快就填滿了整個區塊空間,推高了 gas 成本,使側鏈實際上無法使用。
儘管有這些限制,對全鏈遊戲的熱情仍然很高。在 Dark Forest 之後,我們看到投資者、創始人、建設者和黑客的激增,他們在 Dark Forest 的遺產上建設。像 Lattice 和 Primordium 這樣的公司開發了更容易的全鏈遊戲開發框架和全鏈遊戲。我們也看到了在 EVM 之外的其他生態系統中的發展,比如 Starknet 上的 Dojo。
現有區塊鏈技術的限制源於我們與其他人共享鏈的事實。如果像 Dark Forest 這樣的另一個遊戲存在於同一鏈上,那麼這條鏈就無法有效地運行。這讓我們開始質疑是否應該放棄全鏈遊戲的概念。然而,我們決定探索如何構建更好的全鏈遊戲。
我們開始了一段旅程,從一個關鍵的認識開始:我們把區塊鏈架構視為理所當然。儘管有各種各樣的 L1 和 L2,但它們都看起來很相似。他們都聲稱有更好的共識機制,更快的 VM,更好的欺詐證明者,和更快的 ZK 證明者。然而,這些聲明往往缺乏支持的基準。所有這些努力都是為了創建另一個 DEX 或鑄造另一個 NFT,這些都可以在任何其他鏈上部署。
我們決定從一個不同的角度來看待區塊鏈架構。我們質疑了經典的區塊鏈架構,它似乎在模仿比特幣或以太坊。我們意識到,其他的區塊鏈,無論是 L1 還是 L2,都在試圖為每個人建立一個區塊鏈,而沒有考慮特定的用例或用戶角色。
我們選擇了一條不同的道路。我們決定為特定的用戶群體構建最好的區塊鏈:遊戲開發者和玩家。我們明白,遊戲與典型的應用有著巨大的不同。例如,像 Twitter 這樣的社交媒體平台在一個事件驅動的運行時操作(event-driven runtime),類似於區塊鏈。用戶觸發一個事件,比如發布一條推文,這會導致狀態轉換。
另一方面,遊戲在一個循環驅動的運行時操作(loop-driven runtime)。即使沒有用戶輸入,狀態轉換也會繼續發生。火繼續燃燒,水繼續流動,作物繼續生長,日夜的循環繼續。這個基本的區別讓我們重新思考如何為遊戲構建一個更好的區塊鏈。
這裡需要理解的關鍵點是,網絡應用中的狀態轉換,如智能合約,並不需要用戶輸入。例如,在 Uniswap 中,如果用戶想要交易 Token A 和 Token B,他們提交一個交易,然後交易就被執行。這個過程是事件驅動的。
然而,我們很快就意識到,傳統區塊鏈的事件驅動性質與運行遊戲狀態機並不兼容。因此,我們探索了遊戲使用的循環驅動運行時。遊戲引擎就是專門為支持這種循環驅動運行時而構建的。
在循環驅動的運行時中,遊戲進程被稱為 "ticks",它們是時間的原子單位。每個遊戲循環在一個 tick 中執行。tick rate 越高,遊戲感覺越流暢。例如,現代遊戲如 Counter-Strike 或 Valorant 有高 tick rate,使得它們感覺更加流暢。相比之下,舊的遊戲由於 tick rate 較低,通常感覺比較遲鈍。
在區塊鏈的背景下,這些 ticks 可以與區塊進行比較,區塊是狀態轉換發生的單一時間單位。如果一個 tick 或區塊感覺慢,它可能會對遊戲體驗產生負面影響。
我們認為,遊戲本質上是循環驅動的,因為許多遊戲狀態轉換並不是由外部輸入觸發的。例如,遊戲中的重力並不依賴用戶按下一個按鈕;它無論用戶輸入如何都會存在。
確定性的交易排序也是至關重要的。例如,如果你想對一個用戶造成傷害,遊戲應該先對用戶進行健康恢復還是先造成傷害?使用傳統的排序,你無法預測或控制哪些狀態轉換先被應用,這會導致遊戲循環中的問題。
通過循環驅動的區塊鏈,我們保持了可組合性,這就是我們為什麼想要使用區塊鏈作為遊戲運行時的原因。這種方法允許實時遊戲玩,模糊了區塊鏈和傳統遊戲伺服器之間的界限。它還使得開發比以前更複雜的遊戲成為可能。
然而,要構建一個可擴展的遊戲伺服器區塊鏈,我們需要水平可擴展性。遊戲並不是在一台伺服器上玩的;它們分布在許多伺服器上。一個 roll-up 在一台計算機上運行,並受到物理計算限制。因此,我們需要一種新的策略來控制交易。
傳統的遊戲伺服器,特別是那些性能密集型的大型多人在線遊戲 (MMOs),使用分片的概念。分片是一種工具,不是如何構建你的遊戲的處方書。例如,在基於位置的分片中,一個笛卡爾坐標可以被劃分為四個圖表。當玩家從一個分片移動到另一個分片時,會向另一個分片發送一條消息,然後玩家被傳送到那裡。
第二種方法涉及到使用一個被稱為多重分片的概念,這對於玩過 MMO 遊戲的人來說是一個熟悉的概念。在這樣的遊戲中,當玩家登錄時,他們會被提供多個伺服器供他們選擇。這是一個類似的構造,存在著不同的狀態或遊戲世界,玩家可以選擇加入哪一個。
通過循環驅動的運行時和水平可擴展性,我們也希望實現優秀的可組合性。然而,在 roll-up 中實現這一點可能看起來超出了現實。這就是為什麼我們創建了 World Engine。我們意識到標準的 roll-up 不能按照我們的期望運行,所以我們自己動手構建了我們需要的解決方案。這就像 1990 年代,當 3D 遊戲引擎還不是隨處可得的時候,開發者不得不自己構建它們。
World Engine 分為兩個關鍵部分。第一部分是核心,由兩個關鍵元素組成:EVM Base Shard,一個支持分片的混合執行層和排序器,以及 Game Shard,一個高性能的遊戲引擎加執行層。除此之外,還有一些周邊組件,如用於客戶端 - 伺服器通信的事務中繼和網絡代碼,以及用於像 Dark Forest 這樣的 ZK 遊戲的 ZK Cloud 證明器。
World Engine 的核心是圍繞我們的排序器設計的。雖然其他的排序器,如共享序列重構,優化了原子可組合性,但我們認為原子可組合性被高估了,特別是在遊戲的背景下。因此,我們完全異步,消除了在 EVM Base Shard 運行時下需要鎖的需求。
我們有一個全球的 EVM 鏈,玩家可以在上面部署智能合約來與遊戲進行組合,創建市場和 DEXes。我們在 Polaris 之上構建了這個,Polaris 是一個與 Cosmos SDK 兼容的 EVM 模塊,允許我們比其他解決方案能夠實現的更大程度地定制 EVM。
在 EVM Base Shard 排序器之上運行的是 Game Shard,一個設計為高性能遊戲伺服器的高性能迷你區塊鏈。Game Shard 被設計為對狀態機和 VM 無感知。我們構建了一個類似於 Cosmos SDK EBCI 的抽象層,允許你定制你的分片,或者通過實現一套標準的接口來構建你自己的分片。
我們還構建了第一個遊戲分片實現,以提供一個示例。我們使用了一個 ECS 實體組件系統,這是遊戲引擎中的一個常見特性,我們的構造優先考慮將實體組件系統作為一等公民。這意味著狀態機本身的每一個對象或原語都被視為一個實體。該系統還有一個可配置的 tick rate,允許你定制你的遊戲的速度。
最好的部分是,你不需要依賴索引器。你可以在區塊鏈上快速讀取,而不必處理索引器中最終一致性的缺失。此外,你可以用 Go 編寫你的代碼,無需與限制性的智能合約語言鬥爭。
由於我們的抽象層,分片本質上是無感的,所以你可以構建其他的分片構造,如一個堅實的遊戲分片來補充你的 cardinal 遊戲分片。你還可以構建一個帶有自定義規則的 NFT minting 分片,一個使用 NFT 表示你的遊戲身份的遊戲身份分片,並允許交易遊戲身份。我們不使用鎖,所以我們不必阻塞主線程,使遊戲分片運行時盡可能可靠,避免任何延遲。我們不再需要依賴加密經濟構造。
每個分片可以有不同的 DA 批處理壓縮策略。你可以對分片進行地理定位,以減少遊戲延遲。你也可以將遊戲分片作為一個獨立的遊戲伺服器運行,所以你不必擔心在第一天就要部署 roll-up。
我們在遊戲分片之上構建了各種遊戲,比如一個 Agar.io 的克隆,這在傳統上是不可能的。我們也使用了一個混合模型,你可以在 solidity 上使用現有的遊戲引擎框架,並將其與 World Engine 結合。未來由你來決定。你可以使用我們的 cardinal 堆棧,做一個混合,或者構建你自己的遊戲分片。這就像是全鏈遊戲的 Kubernetes,一個你的遊戲的混合和匹配樂高。
World Engine 現在在我們的 GitHub 上開源,我們歡迎新的貢獻者。如果你對構建你的第一個 World Engine 遊戲感興趣,我們今天晚些時候會舉辦一個研討會。明天,我們也將主持遊戲跟蹤,一個面板,和一個關於全鏈遊戲的講座。
總的來說,讓我們構建更酷的 roll-ups。我們現在正處於 roll-up 的復興時期。roll-ups 允許我們擴展區塊鏈,並利用底層 L1 的安全性。然而,我們仍然生活在一個非常以 EVM 為中心的 roll-up 架構的概念中。這只是起點,而不是終點。我們的目標是以用戶和應用為中心的 roll-up 構造。感謝你的聆聽。
英文版鏈接:
https://captainz.xlog.app/World-Engine-Sharded-Rollup-Framework-for-Onchain-Game