講師:Scott Sunarto (@smsunarto) 在模組峰會上
文章編輯:Justin Zhao (@hiCaptainZ)
https://www.youtube.com/watch?v=lHyQKCVQTPo&t=2548s
大家好,感謝您參加今天的峰會。我在這裡討論一個在過去一年中佔據我們大部分時間的項目。然而,正如您將很快發現的,這個敘述的範圍遠超過這段時間。
在共同創立 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 在事件驅動的運行時中運作,這與區塊鏈類似。用戶觸發一個事件,例如發佈推文,這會導致狀態轉換。
另一方面,遊戲在循環驅動的運行時中運作。即使沒有用戶輸入,狀態轉換仍然會繼續發生。火焰繼續燃燒,水繼續流動,作物繼續生長,日夜循環繼續。這一根本差異使我們重新思考如何為遊戲構建更好的區塊鏈。
這裡需要理解的關鍵點是,網絡應用程序中的狀態轉換,例如智能合約,不需要用戶輸入。例如,在 Uniswap 中,如果用戶想用 Token A 交易 Token B,他們提交一個交易,然後交易被執行。這個過程是事件驅動的。
然而,我們很快意識到傳統區塊鏈的事件驅動特性與運行遊戲狀態機不兼容。因此,我們探索了遊戲使用的循環驅動運行時。遊戲引擎專門構建以支持這種循環驅動的運行時。
在循環驅動的運行時中,遊戲進程被稱為 “滴答”,這是時間的原子單位。每個遊戲循環在單個滴答中執行。滴答率越高,遊戲的響應感覺越強。例如,像 Counter-Strike 或 Valorant 這樣的現代遊戲具有高滴答率,使其感覺更具響應性。相比之下,滴答率較低的舊遊戲往往感覺遲鈍。
在區塊鏈的背景下,這些滴答可以與區塊相比,區塊是狀態轉換發生的單個時間單位。如果一個滴答或區塊感覺緩慢,可能會對遊戲體驗產生負面影響。
我們認為遊戲本質上是循環驅動的,因為許多遊戲狀態轉換並不是由外部輸入觸發的。例如,遊戲中的重力不依賴於用戶按下按鈕;它無論用戶輸入與否都會繼續存在。
確定性交易排序也至關重要。例如,如果您想對用戶造成傷害,遊戲應該先對用戶施加健康恢復還是先造成傷害?使用傳統排序,您無法預測或控制哪些狀態轉換首先應用,這會導致遊戲循環中的問題。
使用循環驅動的遊戲區塊鏈,我們保持可組合性,這就是為什麼我們希望將區塊鏈用作遊戲的運行時。這種方法允許實時遊玩,模糊了區塊鏈和傳統遊戲伺服器之間的界限。它還使得開發比以往更複雜的遊戲成為可能。
然而,要構建可擴展的遊戲伺服器區塊鏈,我們需要橫向擴展。遊戲不是在單個伺服器上進行的;它們分佈在許多伺服器上。滾動聚合運行在計算機上,受物理計算限制的約束。因此,我們需要一種新的策略來控制交易。
傳統遊戲伺服器,特別是那些性能密集型的遊戲,如大規模多人在線遊戲(MMOs),使用分片的概念。分片是一種工具,而不是構建遊戲的處方。例如,在基於位置的分片中,笛卡爾坐標可以分成四個圖。當玩家從一個分片移動到另一個分片時,會向另一個分片發送消息,玩家被傳送到那裡。
第二種方法涉及使用稱為多重分片的概念,這對於玩過 MMO 遊戲的人來說是熟悉的。在這些遊戲中,登錄時,玩家會看到多個伺服器供選擇。這是一種類似的結構,其中存在不同的狀態或遊戲世界,玩家可以選擇加入。
通過循環驅動的運行時和橫向擴展,我們也追求卓越的可組合性。然而,在滾動聚合中實現這一點可能看起來超出現實。這就是為什麼我們創建了世界引擎。我們意識到標準的滾動聚合無法如我們所願運行,因此我們決定自己構建所需的解決方案。這就像 1990 年代,3D 遊戲引擎並不容易獲得,開發者不得不自己構建它們。
世界引擎分為兩個關鍵部分。第一部分是核心,由兩個關鍵元素組成:EVM Bayshore,一個具有分片支持的混合執行層和排序器,以及 Game Shard,一個高性能的遊戲引擎加執行層。除了這些,還有周邊組件,如交易中繼和客戶端 - 伺服器通信的網絡代碼,以及用於像 Dark Forest 這樣的 ZK 遊戲的 ZK Cloud 證明者。
世界引擎核心是圍繞我們的排序器設計的。雖然其他排序器如共享序列重建優化原子可組合性,但我們認為在遊戲的背景下,原子可組合性被高估了。因此,我們完全採取非同步方式,消除了在 EVM 基礎分片運行時下對鎖的需求。
我們有一個全球 EVM 鏈,玩家可以部署智能合約以與遊戲組合,創建市場和 DEX。我們在 Polaris 之上構建了這個,這是一個與 Cosmos SDK 兼容的 EVM 模塊,允許我們比其他解決方案更大程度地自定義 EVM。
運行在 EVM 基礎分片排序器之上的是 Game Shard,一個高性能的迷你區塊鏈,旨在作為高性能遊戲伺服器。Game Shard 的設計是狀態機和 VM 無關。我們構建了一個類似於 Cosmos SDK EBCI 的抽象層,允許您根據自己的喜好自定義分片或通過實現一組標準接口來構建自己的分片。
我們還構建了第一個遊戲分片實現以提供示例。我們使用實體組件系統,這是遊戲引擎中的一個常見特徵,並且構建優先考慮實體組件系統作為一級公民。這意味著狀態機本身的每個對象或原始物體都被視為實體。該系統還具有可配置的滴答率,允許您自定義遊戲的速度。
最好的部分是,您不需要依賴索引器。您可以在區塊鏈上快速讀取,而無需處理索引器中缺乏最終一致性的問題。此外,您可以使用 Go 編寫代碼,消除了與限制性智能合約語言的鬥爭。
由於我們的抽象層,分片在本質上是無關的,因此您可以構建其他分片結構,例如堅固的遊戲分片,以補充您的基數遊戲分片。您還可以構建具有自定義規則的 NFT 鑄造分片,遊戲身份分片以使用 NFT 代表您的遊戲身份,並允許交易遊戲身份。我們不使用鎖,因此不必阻塞主線程,使遊戲分片運行時盡可能可靠,避免任何延遲。我們不再需要依賴加密經濟結構。
每個分片可以有不同的 DA 批處理壓縮策略。您可以地理定位分片以減少遊戲延遲。您還可以將遊戲分片作為獨立的遊戲伺服器運行,因此您不必擔心在零天的滾動部署。
我們在遊戲分片上構建了各種遊戲,例如 Agar.io 克隆,這在傳統上是不可能的。我們還採用了混合模型,您可以在 Solidity 上使用現有的遊戲引擎框架,並將其與世界引擎結合。未來由您來決定。您可以使用我們的基數堆棧,進行混合,或構建自己的遊戲分片。這就像是鏈上遊戲的 Kubernetes,為您的遊戲提供混合和匹配的樂高。
世界引擎現在在我們的 GitHub 上開源,歡迎新貢獻者。如果您有興趣構建您的第一個世界引擎遊戲,我們今天稍後將舉辦一個工作坊。明天,我們還將舉辦遊戲專題、座談會和有關鏈上遊戲的演講。
總之,讓我們構建更酷的滾動聚合。我們目前正處於滾動聚合的文藝復興時期。滾動聚合使我們能夠擴展區塊鏈並利用底層 L1 的安全性。然而,我們仍然生活在一個非常以 EVM 為中心的滾動聚合架構概念中。這只是起點,而不是終點。我們的目標是以用戶和應用程序為中心的滾動聚合建設。謝謝您的聆聽。
中文版鏈接:
https://captainz.xlog.app/World-Engine-zhuan-wei-quan-lian-you-xi-she-ji-de-fen-pian-Rollup-kuang-jia