原作者: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 這樣的社交媒體平台在一個事件驅動的運行時操作(enent-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:專為全鏈遊戲設計的分片Rollup框架

World Engine 分為兩個關鍵部分。第一部分是核心,由兩個關鍵元素組成:EVM Base Shard,一個支持分片的混合執行層和排序器,以及Game Shard,一個高性能的遊戲引擎加執行層。除此之外,還有一些周邊組件,如用於客戶端- 服務器通信的事務中繼和網絡代碼,以及用於像Dark Forest 這樣的ZK 遊戲的ZK Cloud 證明器。

World Engine:專為全鏈遊戲設計的分片Rollup框架

World Engine 的核心是圍繞我們的排序器設計的。雖然其他的排序器,如共享序列重構,優化了原子可組合性,但我們認為原子可組合性被高估了,特別是在遊戲的背景下。因此,我們完全異步,消除了在EVM Base Shard 運行時下需要鎖的需求。

我們有一個全局的EVM 鏈,玩家可以在上面部署智能合約來與遊戲進行組合,創建市場和DEXes。我們在Polaris 之上構建了這個,Polaris 是一個與Cosmos SDK 兼容的EVM 模塊,允許我們比其他解決方案能夠實現的更大程度地定制EVM。

在EVM Base Shard 排序器之上運行的是Game Shard,一個設計為高性能遊戲服務器的高性能迷你區塊鏈。 Game Shard 被設計為對狀態機和VM 無感知。我們構建了一個類似於Cosmos SDK EBCI 的抽象層,允許你定制你的分片,或者通過實現一套標準的接口來構建你自己的分片。

World Engine:專為全鏈遊戲設計的分片Rollup框架

我們還構建了第一個遊戲分片實現,以提供一個示例。我們使用了一個ECS 實體組件系統,這是遊戲引擎中的一個常見特性,我們的構造優先考慮將實體組件系統作為一等公民。這意味著狀態機本身的每一個對像或原語都被視為一個實體。該系統還有一個可配置的tick rate,允許你定制你的遊戲的速度。

最好的部分是,你不需要依賴索引器。你可以在區塊鏈上快速讀取,而不必處理索引器中最終一致性的缺失。此外,你可以用Go 編寫你的代碼,無需與限制性的智能合約語言鬥爭。

World Engine:專為全鏈遊戲設計的分片Rollup框架

由於我們的抽象層,分片本質上是無感的,所以你可以構建其他的分片構造,如一個堅實的遊戲分片來補充你的cardinal 遊戲分片。你還可以構建一個帶有自定義規則的NFT minting 分片,一個使用NFT 表示你的遊戲身份的遊戲身份分片,並允許交易遊戲身份。我們不使用鎖,所以我們不必阻塞主線程,使遊戲分片運行時盡可能可靠,避免任何延遲。我們不再需要依賴加密經濟構造。

World Engine:專為全鏈遊戲設計的分片Rollup框架

每個分片可以有不同的DA 批處理壓縮策略。你可以對分片進行地理定位,以減少游戲延遲。你也可以將游戲分片作為一個獨立的遊戲服務器運行,所以你不必擔心在第一天就要部署roll-up。

World Engine:專為全鏈遊戲設計的分片Rollup框架

我們在遊戲分片之上構建了各種遊戲,比如一個Agar.io 的克隆,這在傳統上是不可能的。我們也使用了一個混合模型,你可以在solidity 上使用現有的遊戲引擎框架,並將其與World Engine 結合。未來由你來決定。你可以使用我們的cardinal 堆棧,做一個混合,或者構建你自己的遊戲分片。這就像是全鏈遊戲的Kubernetes,一個你的遊戲的混合和匹配樂高。

World Engine:專為全鏈遊戲設計的分片Rollup框架

World Engine:專為全鏈遊戲設計的分片Rollup框架

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