撰文: ck
翻譯:MetaCat
开始之前
mud2048.fun 是我們爲獲得對全鏈遊戲开發的微觀體感展开的一次探索,旨在通過復刻體驗無限接近原始 2048 遊戲(play2048.co)的全鏈上版本,來實地感受全鏈遊戲开發的水溫,獲得一线的體感。
本文是對本次开發過程中習得的經驗、展开的思考匯總,拋磚引玉,以饗讀者。
這大約是對全鏈遊戲(Fully On-chain Games)开發最簡單的嘗試,在此之前我們的曾嘗試實現 Chrome 離线恐龍遊戲(Chrome Dino Game)的全鏈上版,後發現沒有區塊鏈原生遊戲 Tick 機制的支持,很難復刻在體驗與原遊戲接近的全鏈版本。
Chrome Dino Game 的在线版本,網址:https://dinorunner.com/
這裏可能涉及一個常見誤區:簡單遊戲更容易實現全鏈上版本。實則不然,由於區塊鏈的交易確認時間(即便是主流 Layer 2)尚未達到中心化服務器的接口響應時間水平;加之將遊戲邏輯上鏈之後,帶來了中心化場景裏未曾出現的工程復雜度,導致並非所有簡單的休闲遊戲都能夠輕松實現全鏈版。這也一定程度上解釋了當前全鏈遊戲生態的分野:
以 RTS(實時策略類遊戲)爲主,如:Loot Survivor、Primodium、Sky Strife、Cellula 等,以 Meta Rules(元規則類遊戲 / 沙盒遊戲)爲輔,如:PixeLAW、Briq、OpCraft 等。這兩類遊戲均在遊戲形態上規避了區塊鏈交易確認時間較長帶來的弊端。
圖爲SkyStrife 的啓動界面,網址:https://playtest.skystrife.xyz/
爲什么選擇 MUD 引擎?
MUD 是 EVM 生態首款全鏈遊戲引擎(也是EVM 生態首款應用程序开發框架),引擎內置的Session wallet,以及可通過 API 調用的測試鏈Faucet可降低玩家進入門檻。
另一個原因是 MUD 开源,文檔及社區資料較多,易於上手。遊戲引擎是否开源涉及到商業模式問題下文再專門討論。
MUD 簡介。來源:https://github.com/latticexyz/mud
下面進入正題,將談論一些我們在使用 MUD 引擎過程中的一些心得體會,有宏觀感性的行業層面、也有微觀理性的工程實操層面,面向的受衆群體不同,大家可自行取用(直接跳過不感興趣的部分)。
工程篇
總的來說,MUD 引擎是什么?
MUD 引擎 = 鏈上關系型數據庫 + 鏈上應用开發框架。
MUD Features。來源:https://github.com/latticexyz/mud
這個是一個站在互聯網領域看區塊鏈領域的視角(有點類似站在陸權看海權),肯定不是最恰當的角度,但考慮到區塊鏈尚未實現 Mass Adoption,區塊鏈產品要出圈,依然需要吸引更多互聯網領域的用戶,所以不妨先從互聯網的視角來看分析。
不論是「鏈上關系型數據庫」還是「鏈上應用开發框架」,都對以太坊這台「世界計算機」的發展來說至關重要。
從互聯網應用开發中我們學到:數據庫軟件的好用程度 / 數據庫表結構設計的合理程度,很大程度上決定了整個項目开發的復雜度。換句話說,互聯網應用开發是以數據庫爲核心的展开的,我們姑且稱之爲「數據庫本位」。
那么我們看看,MUD 引擎的設計是否也遵循了「數據庫本位」的思想。從 MUD 引擎的設計思路看,它核心解決三個問題:
1.鏈上數據如何易於讀寫且以經濟的方式存儲,
2.鏈上 / 客戶端之間的自動數據同步,
3. 應用开發的普遍復雜性管理。
我們先來看第一個問題:「鏈上數據如何易於讀寫且以經濟的方式存儲」。
這個問題可以拆解爲兩個要素:
1>易於讀寫
2> 經濟存儲
「易於讀寫」這個點經過互聯網領域幾十年的實踐,「關系型數據庫」被認爲是最優解。雖然區塊鏈是非常不同於傳統數據庫存儲模式的鏈式存儲模式(見下圖),該模式即便對於單一場景的簡單操作都很不友好(比如對某 NFT Collection 的交易額求和 / 求均值 / 求最大最小值等),更別提更進一步的復雜場景。
圖片來源:https://mempool.space/mining
因此,MUD的解法是在鏈式存儲之上,實現「關系型數據庫」(對應 MUD 引擎中 Store 下的 Table)。對开發者來說,使用體驗如同操作常見的關系型數據庫(如:MySQL、SQL Server、PostgreSQL、SQLite 等)。這一點確實對廣大互聯網开發者比較友好。下圖爲我們基於 MUD 引擎开發全鏈版 2048 時,對應的表結構。
圖片來源:https://github.com/themetacat/MUD2048/blob/main/packages/contracts/mud.config.ts
「經濟存儲」這個點,我們可以從以太坊這台世界計算機的角度來分析。
現代計算機均符合「馮諾依曼結構」,該結構分爲:輸入、輸出、運算、控制、存儲五部分(見下圖)。
圖片來源於網絡
從全鏈遊戲引擎自身的角度講,它能優化其實也只有「存儲」,因爲「輸入」、「輸出」在它的上層,它控制不了;「運算」、「控制」是以太坊區塊鏈自身在做的事情。全鏈遊戲引擎作爲運行在這台「世界計算機」之上的「基礎應用軟件」來說,它能優化的只有經由它輸入的「存儲」。
對存儲的優化,具體方案是對輸入數據實現非常高效且緊湊的「位打包」(bitpacking),由於在區塊鏈上存儲數據是按數據體積收費的,因此,更小的數據體積意味着更低廉的存儲成本。充分優化過的存儲成本是,大規模復雜鏈上應用出現的前提。下圖爲 MUD 對存儲優化的具體案例,詳見《全鏈遊戲引擎 MUD 從 0 到 V2》。
圖片來源:https://lattice.xyz/blog/mud-zero-to-v2
綜上,對於問題一,MUD 主要就是從「數據庫本位」的角度切入,來解決問題的。
現在我們來到第二個問題:「鏈上 / 客戶端之間的自動數據同步」。
這也是 MUD 引擎提供的一個核心功能,幫开發者省去了自己管理復雜狀態同步的繁重工作。具體實現方案是:在客戶端對鏈上數據庫的實時同步,換句話說,每個客戶端都有一個內置的、與鏈上數據庫實時同步的本地副本。
這主要是通過 MUD 引擎中的 Indexer 實現的。下圖爲 MUD 官方對 Indexer 的介紹,主要面向想在搭建運行在項目方服務器上的場景(當然該描述也同樣適用於,自動運行在全鏈遊戲客戶端內的Indexer)。
圖片來源:https://mud.dev/services/indexer
對开發者來說,初步擁有了一個使用體驗接近本地數據庫的鏈上數據庫。不過就目前 MUD 的實現來說,客戶端難以實現諸如生成全局榜單這樣的功能;另外,讓每個客戶端生成一遍全局榜單,也不是一個經濟的做法。
說到這裏,這裏大家肯定會問:爲什么不在鏈上生成全局榜單?原因是 MUD 引擎雖然實現了初步的關系型數據庫,但關系數據庫中的常見的求和 / 求均值 / 求最大最小值等功能,MUD 尚未支持。
因此,在mud2048.fun中,我們在中心化服務器上搭建 MUD Indexer 節點,來以成本收益相對平衡的方式生成全局玩家排行榜(見下圖)。
網址:https://www.mud2048.fun/
不過讓每個客戶端擁有一個鏈上數據庫的實時副本,也有弊端的。比如在應用啓動前需要先從鏈上同步數據,以在本地建立鏈上數據庫的最新副本,這會增加玩家進入遊戲的等待時間。MUD 官方也意識到了該問題,在 MUD V2 版本中提到了相關優化方案(分段數據同步和客戶端緩存),不過在我看來都屬於臨時方案,不能徹底解決隨時間推移,待同步的鏈上數據越來越多的問題。
這個問題暫時看是無解的(短期很難在公網數據傳輸效率和鏈式數據檢索方面取得大的突破),希望隨着 MUD 的迭代,能找到更恰當的解決方案。如果這個問題得到很好的解決,也能爲其他鏈上復雜應用的誕生鋪平道路。
現在我們來到問題三:「應用开發的普遍復雜性管理」。
在此之前,以太坊生態的鏈上應用多數比較簡單(一個客觀指標是,不論 DeFi/NFT/DAO 單一產品所涉及的合約數量有限,且多數情況下部署後更新的可能性很小)。但對於復雜應用开發來說,邏輯更新、訪問控制、權限管理都是需要從頭做一遍的重復勞動。因此非常需要一個通用型框架 / 引擎,統一幫开發者處理這些問題,以便开發者可以全身心投入應用开發。
MUD 引擎提供的另一個核心功能便是,通過 World 模塊幫助开發者省去處理上述問題的時間,具體而言,World 提供了在Store 之上的邏輯和訪問控制,下圖爲 MUD 官網對World 的描述,這是一般應用开發框架都會提供的功能,這裏不再贅述。
圖片來源:https://mud.dev/world/introduction
對復雜應用开發來說,訪問控制(或者叫路由)是決定總體工程量很重要的環,訪問控制設計的優劣,直接決定了應用开發的復雜度和易維護性。MUD 顯然也很重視這一點,下圖爲 MUD v1 和 v2 兩個版本中對其訪問控制模塊的優化。
[uploading100%]
圖片來源:https://lattice.xyz/blog/mud-zero-to-v2
以上是我們在使用 MUD 引擎开發 mud2048.fun 的過程中,在工程方面的一些思考與體會。總體來看,MUD引擎也遵循了「數據庫本位」的思想,這跟互聯網應用开發的方法論高度一致,因此對互聯網應用开發者來說,MUD 引擎不會讓他們感到陌生。接下來我們將探討對全鏈遊戲行業方面思考。
行業篇
當我們進入全鏈遊戲領域的時候,不斷追問自己的三個問題是:
1. 爲什么需要全鏈遊戲?
2. 什么樣的遊戲適合全鏈上?
3. 全鏈上(Fully on-Chain)與加密原生(Crypto native)到底什么關系?
接下來我們逐一討論:
對於第一個問題:爲什么需要全鏈遊戲?
這個問題可以進一步拆解爲兩個子問題:
1> 區塊鏈行業爲什么需要全鏈遊戲?
2> Crypto 市場爲什么需要全鏈遊戲?
從區塊鏈行業看:
以太坊生態發展到了需要復雜鏈上應用出現的階段(過去的鏈上應用 DeFi/DAO/NFT 均較爲簡單,支撐一個應用的合約數量可見一斑),另一個反向的例證是以太坊 Layer 2 對全鏈遊戲的扶持。從內在邏輯看,沒有瓷器活,煉不成金剛鑽,Layer 2需要全鏈遊戲這些瓷器活來成就自己。
NFT 領域在 PFP 泡沫後一直沒有新的範式促進其發展,而 NFT 區別於 ERC-20 的點是可組合性,遊戲場景是 NFT 天然的可組合性場所。
全鏈遊戲的終極目標「自主世界」,是對數字世界終極形態又一次闡述(上一次闡述是被過度營銷化後爛大街的「元宇宙」)。自主世界作爲人類對美好未來的共同想象,具有很好的號召力,而全鏈遊戲作爲實現該目標的重要途徑,也被寄予厚望。
Autonomous Worlds 官網:https://aw.network/
從Crypto 市場看:
回顧互聯網發展史,遊戲總是最先採用新技術領域,遊戲屬於 Consumer App,更容易觸達終端用戶。
鏈遊 /GameFi 模式暫時被證僞,對區塊鏈遊戲的探索重新回到了遊戲的本源:遊戲性。基於區塊鏈的遊戲性(完全繼承了區塊鏈的優點和缺點)有望提供過去沒有的全新體驗和範式,從而吸引用戶。
我們來到第二個問題:什么樣的遊戲適合全鏈上?
目前看行業 / 市場對這一點尚未達成共識,從歸納法的角度看,以前文提到的實時策略類(RTS)和元規則類(Meta Rules)兩個類別居多。但創新不足、商業模式不清晰、未能很好的匹配到用戶等問題依然是這個領域繞不开的問題。
個人認爲,元規則(Meta Rules)類相對更有潛力,因爲至少能在規則層面、互操作性層面有更多原生的可能性,不過現在還很早期,尚難以評估其確定性,下圖爲元規則類全鏈遊戲 PixeLAW 的界面。
圖片來源:https://twitter.com/0xPixeLAW/status/1704375844674912515
遊戲間的互操作性,相當長的時間內可能都是個僞命題。雖然全鏈遊戲繼承了區塊鏈的互操作性,但從商業 / 產品 / 生態角度,短期很難想象兩個獨立產品間面向互操作性來开發,以及這個點也在之前「元宇宙」周期內被一定程度上證僞。
現在我們來談論第三個問題:全鏈上(Fully on-Chain)與加密原生(Crypto native)到底什么關系?
首先,過度強調「全鏈上」會使人陷入原教旨主義的怪圈,區塊鏈現在的基礎設施難以支撐廣泛類別的遊戲將數據 / 邏輯全部上鏈。另外《黑暗森林》創始人 GubSheep,最初的提法是「Crypto-Native Games」,以期從 Crypto-Native 的角度,思考遊戲如何最大程度上促進區塊鏈行業的發展。下圖爲 GubSheep 原文局部。
來源:https://gubsheep.substack.com/p/the-strongest-crypto-gaming-thesis
加密原生(Crypto native)是個內涵不斷變化,且邊界相對模糊的概念。在區塊鏈發展的不同階段,有不同的詮釋。
在 2017 年,CryptoKitties 被認爲是加密原生的典範;
在 2018 年,Uniswap 是加密原生的典範;
在 2020 年,CryptoArt 是加密原生的典範;
在 2021 年,DAO 是加密原生的典範;
到了 2023 年,數據和邏輯都在鏈上的全鏈遊戲,被看作是加密原生的典範。
但本質上加密原生是一種思想,而非一種教條。
全鏈上(Fully on-Chain)是踐行加密原生(Crypto native)的方法論,但不能因之作繭自縛,就像中心化 / 去中心化、革命 / 反革命一樣,都是相對概念,過於糾結字面容易走入死胡同。
那么,無論全鏈上遊戲還是加密原生遊戲,到底帶來了哪些新的可能性?
我認爲,將遊戲邏輯 / 規則通過上鏈透明化後,所有遊戲策略可以真正公平競爭,當然還需要找到能夠體現這種優勢的場景。舉例來說,因爲遊戲邏輯都在鏈上,可以直接寫合約代碼來玩遊戲,再加上 AI 生成玩法策略,可能會讓我們擁有一個高於平均水平 / 不眠不休的虛擬玩家代理(這個想法受 Shoshin 啓發)。
此外,像MUD 這樣的全鏈遊戲引擎(其實叫它全鏈應用开發框架更合適),作爲數據庫 + 應用开發框架合體的存在,在 EVMs 生態的重要性不言而喻。但數據庫 / 應用开發框架都屬於公共物品,本身毫無商業模式可言。不過好在有區塊鏈原生的 Token 機制,以及像EIP-6969這樣的开發者版稅方案,能夠幫助這些公平物品开發者,以一種外部的方式捕獲價值,這是區塊鏈優於 Web2 的點。
附錄:
1. MUD 2048 官網:https://www.mud2048.fun/
2.MUD 2048 項目代碼:https://github.com/themetacat/MUD2048
3. MUD 引擎官網:https://mud.dev/
4. Autonomous Worlds 聖經官網:https://aw.network/
5.GubSheep 加密原生遊戲理論:https://gubsheep.substack.com/p/the-strongest-crypto-gaming-thesis
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。