作者:Fiona, IOSG Ventures
TL;DR
全鏈游戲/自治世界("FOG/AW")是圍繞Web 3的少數(shù)重要敘事之一。相比于只通過NFT連接到Web3的Web2.5應(yīng)用不同,F(xiàn)OG/AW將游戲邏輯也放在了鏈上。它利用區(qū)塊鏈作為游戲服務(wù)器,成為游戲狀態(tài)的去中心化信任源。這帶來了持久性、抗審查、可組合性等優(yōu)點(diǎn),但也限制了構(gòu)建在其之上的游戲多樣性和復(fù)雜性。
隨著游戲復(fù)雜性和可玩性要求的提高,對(duì)引擎架構(gòu)提出了更多的挑戰(zhàn)要求:比如幀數(shù)延遲、隨機(jī)數(shù)、生命值恢復(fù)、連續(xù)的被動(dòng)效果、計(jì)時(shí)器等等。其中時(shí)間的概念以及Ticks單位在區(qū)塊鏈上是不一樣的。Mud提供了不少思路來模擬時(shí)間流逝以及被動(dòng)恢復(fù)技能。比如,當(dāng)玩家在房間中移動(dòng)時(shí),交易中附帶根據(jù)一些預(yù)定義的設(shè)計(jì)移動(dòng)房間中的所有物品。以此感知時(shí)間和狀態(tài)的變化。
FOG/AW技術(shù)??杀怀橄鬄椋洪_發(fā)者為ui/ux和游戲核心邏輯編寫前端和后端代碼,然后通過游戲狀態(tài)的循環(huán)來同步所有的變化,最后由索引器將新的狀態(tài)反映到前端的本地設(shè)備上。
由于許多游戲類型,如RTS,需要高的tickrates,而由共識(shí)產(chǎn)生的區(qū)塊鏈只能處理區(qū)塊時(shí)間的變化,tickrate是這里要解決的一個(gè)大問題。Curio和Argus是這方面的領(lǐng)先者,他們正在摸索鏈的層面上增加游戲tickrate。Mud在試圖最大程度實(shí)現(xiàn)全鏈上,整個(gè)應(yīng)用程序狀態(tài)都保存在 EVM 中。并沒有為實(shí)現(xiàn)游戲更高tickrate上引入鏈下結(jié)合的方案。
對(duì)于不同鏈的選擇上,Dojo在引領(lǐng)Starknet的全鏈生態(tài)。根據(jù)@tarrenceva的描述,Starknet有State diffs狀態(tài)差異,不同于optimistic rollups,重點(diǎn)放在了執(zhí)行輸出而不是輸入。對(duì)游戲的影響主要可能在于優(yōu)化成本,例如國際象棋游戲:在三分鐘的游戲中,可能會(huì)發(fā)生 50 步。通過狀態(tài)差異,單個(gè)證明和最終狀態(tài)可以證明“輸出”。而optimistic rollups需要所有中間狀態(tài)的“輸入”。
定義 FOG/AW:游戲狀態(tài)是如何同步的
我認(rèn)為要判斷是否是FOG,基準(zhǔn)是游戲狀態(tài)是如何同步的(source of truth)。
對(duì)于Web 2.5游戲或傳統(tǒng)的多人游戲,有一個(gè)中心化的服務(wù)器來定義當(dāng)前的游戲狀態(tài),當(dāng)玩家發(fā)送行動(dòng)時(shí),服務(wù)器會(huì)編譯這些輸入并將更新的結(jié)果返回給每個(gè)連接的玩家的設(shè)備。服務(wù)器處理所有的輸入(tick),解決不一致的問題,并定期向玩家發(fā)送更新,提供游戲中所有元素的快照,每一個(gè)tick都更新游戲狀態(tài)。游戲狀態(tài)("game state or tick")是游戲世界中每個(gè)對(duì)象的屬性的時(shí)間快照。Tickrate 是指游戲服務(wù)器每秒鐘計(jì)算并向玩家廣播更新的游戲狀態(tài)的次數(shù)。Tickrate 越高,游戲體驗(yàn)就越精確、越高保真。一般來說,實(shí)時(shí)戰(zhàn)略或動(dòng)作游戲需要高。tickrate,而卡牌游戲等回合制游戲則不需要。
Source:https://www.gabrielgambetta.com/client-server-game-architecture.html
對(duì)于完全運(yùn)行在鏈上的游戲,區(qū)塊鏈?zhǔn)怯螒蚍?wù)器并作為游戲狀態(tài)的去中心化的信任源。在這種情況下,不僅NFTs或代幣有真正的所有權(quán),就連游戲者的ticks以及游戲邏輯也是在鏈上的。這就是為什么可以實(shí)現(xiàn)真正的所有權(quán)、持久性、抗審查性、可組合性等。理想情況下,游戲者的每個(gè)動(dòng)作都應(yīng)該提交給區(qū)塊鏈,在達(dá)成共識(shí)后,游戲狀態(tài)被更新并返回到本地設(shè)備。因此,自然而然地,需要較少tickrate的游戲類型更適合完全在鏈上進(jìn)行。
解決游戲的延遲、時(shí)間等的挑戰(zhàn)
隨著游戲復(fù)雜性和可玩性要求的提高,對(duì)引擎架構(gòu)提出了更多的挑戰(zhàn)要求:比如幀數(shù)延遲、隨機(jī)數(shù)、生命值恢復(fù)、連續(xù)的被動(dòng)效果、計(jì)時(shí)器等等。
幀數(shù)延遲其實(shí)在Web2世界也非常普遍,來自包括客戶端渲染和用戶操作上的延遲。特別是FPS這種高tickrate 游戲,一旦出現(xiàn)延遲,玩家體驗(yàn)會(huì)非常差,Web2中的其中一個(gè)解決辦法是 lockstep state update,讓所有玩家的同步按玩家中最高延遲的標(biāo)準(zhǔn)來同步,以此解決玩家公平性的體驗(yàn)。當(dāng)引入?yún)^(qū)塊鏈并需要等待交易確認(rèn)后,這個(gè)延遲可能會(huì)更嚴(yán)重。為此,Mud也增加了游戲中常用的optimistic rendering樂觀渲染這一機(jī)制,假設(shè)用戶操作成功,并在服務(wù)器同意之前(或者在本例中是在事務(wù)確認(rèn)之前)將其渲染在客戶端中。
鏈上生成隨機(jī)數(shù)是一個(gè)經(jīng)常被討論的課題,Mud認(rèn)為可以將用戶行為作為隨機(jī)結(jié)果的輸入,在交互發(fā)生后生成。
時(shí)間的概念以及Ticks單位在區(qū)塊鏈上是不一樣的。@SebastienGllmt認(rèn)為在用fraud proof概念的鏈上(比如Op)很難使用計(jì)時(shí)器,因?yàn)橐坏┏鲥e(cuò),將需要回滾,如果游戲中用到計(jì)時(shí)器,體驗(yàn)將很差。Mud提供了不少思路來模擬時(shí)間流逝以及被動(dòng)恢復(fù)技能。比如隨時(shí)間流逝增加金幣,每次玩家執(zhí)行需要金幣的操作時(shí),根據(jù)玩家之前的金幣數(shù)量、最近一次刷新的數(shù)量和刷新率來計(jì)算玩家的金幣數(shù)量。再比如,當(dāng)玩家在房間中移動(dòng)時(shí),交易中附帶根據(jù)一些預(yù)定義的設(shè)計(jì)移動(dòng)房間中的所有物品。以此感知時(shí)間和狀態(tài)的變化。
寫腳本“作弊”也許不是問題。@BriefKandle 不認(rèn)為對(duì)游戲系統(tǒng)的MEV算作弊,防止腳本能簡單的MEV是游戲團(tuán)隊(duì)需要考慮的事情,Web2的游戲開發(fā)需要轉(zhuǎn)變思路,好的MEV bot是游戲內(nèi)的NPC。
部分功能已在最近推出的一些鏈上游戲中實(shí)現(xiàn),比如Rhascau中,他們使用了計(jì)時(shí)器和連續(xù)被動(dòng)效果?;旧鲜褂脜^(qū)塊時(shí)間作為刻度。(在當(dāng)前的 L2 中,區(qū)塊時(shí)間 = tickrate)。
FOG/AW 技術(shù)棧
FOG/AW引擎框架是一個(gè)開發(fā)者工具棧,可以讓開發(fā)者利用區(qū)塊鏈作為服務(wù)器和信任源構(gòu)建游戲。此外,它可以解決目前的一些問題:
為了便于理解,這類引擎一般簡化的技術(shù)流程是:開發(fā)者為ui/ux和游戲核心邏輯編寫前端和后端代碼,然后通過游戲狀態(tài)的循環(huán)來同步所有的變化,最后由索引器將新的狀態(tài)反映到前端的本地設(shè)備上。
為了使運(yùn)行在區(qū)塊鏈上的游戲也能順暢地運(yùn)行這一回路,Mud,Dojo,Curio,Argus,Paima engine及Lootchain等正在為此開發(fā)各自的技術(shù)棧。技術(shù)棧由3個(gè)關(guān)鍵部分組成:鏈、核心開發(fā)棧和游戲前端。他們都有自己的創(chuàng)新,在去中心化和游戲復(fù)雜性之間做出權(quán)衡。
游戲前端:包含傳統(tǒng)引擎如Unity、Unreal等以及react/Threejs等語言和強(qiáng)大的工具提供渲染等功能,增強(qiáng)游戲可玩性和體驗(yàn)感必不可少的一環(huán)。以上項(xiàng)目基本都能提供相關(guān)SDK供開發(fā)者使用。
核心開發(fā)棧:設(shè)計(jì)一套方案能讓游戲邏輯運(yùn)行在區(qū)塊鏈上,并能按時(shí)同步到前端。關(guān)鍵組件包括合適的數(shù)據(jù)庫結(jié)構(gòu)(定義游戲行為和邏輯),以及游戲狀態(tài)的同步和返回。
鏈:大部分選擇了Ethereum、Optimism和Starknet上構(gòu)建。
下圖描繪了不同的協(xié)議是如何設(shè)計(jì)各自的技術(shù)棧。以Mud V2為例來看其運(yùn)作流:
一個(gè)開發(fā)者會(huì)在Mud調(diào)用一些Web2的前端工具來編寫代碼,利用這些強(qiáng)大的功能如渲染使得游戲更可視化看起來更好玩;
同時(shí),開發(fā)者會(huì)依Mud的智能合約框架(Mud World)來寫游戲的人物、物品以及具體的運(yùn)行邏輯等,比如當(dāng)英雄A從X處移動(dòng)至Y處,并發(fā)起對(duì)Y地塊的討伐,多大概率或什么情況下能成功占領(lǐng)該地塊;
以上的動(dòng)作及游戲狀態(tài)會(huì)被記錄在Mud Store,它是一個(gè)鏈上數(shù)據(jù)庫,負(fù)責(zé)全局游戲狀態(tài),是游戲狀態(tài)同步的信任來源;
當(dāng)英雄A對(duì)Y進(jìn)行討伐,其實(shí)是玩家在前端本機(jī)上點(diǎn)擊了鼠標(biāo)并提交了該命令上鏈,該命令依據(jù)開發(fā)者的游戲設(shè)計(jì)邏輯,以及當(dāng)前Store里的游戲狀態(tài),造成了一個(gè)結(jié)果,該結(jié)果被更新至新的游戲全局狀態(tài),并被同步上鏈;
Mud上的游戲支持Web、Mobile等各種前端,不過可能會(huì)面臨復(fù)雜的索引需求,Mode正是為此而開發(fā)的一個(gè)鏈下索引器。
現(xiàn)在,讓我們談?wù)勥@些核心框架的共同和不同的設(shè)計(jì)。
他們中的大多數(shù)遵循Mud v1設(shè)計(jì),并利用ECS作為游戲開發(fā)的數(shù)據(jù)結(jié)構(gòu)。這是游戲邏輯的編寫和呈現(xiàn)方式。Mud V2對(duì)其進(jìn)行了改進(jìn),數(shù)據(jù)被定義在Tables和Systems,這允許其他的數(shù)據(jù)標(biāo)準(zhǔn)(不必如V1遵守ECS 數(shù)據(jù)建模標(biāo)準(zhǔn)),這給了開發(fā)者更多的選擇,使其更具包容性。
大多數(shù)都使用去中心化的數(shù)據(jù)庫,因?yàn)閰^(qū)塊鏈自然地是游戲狀態(tài)和數(shù)據(jù)庫的信任來源。Mud在試圖最大程度實(shí)現(xiàn)全鏈上,整個(gè)應(yīng)用程序狀態(tài)都保存在 EVM 中。并沒有為實(shí)現(xiàn)游戲更高tickrate上犧牲去中心化或者引入鏈下結(jié)合的方案。
由于許多游戲類型,如FPS,需要高的tickrates,而由共識(shí)產(chǎn)生的區(qū)塊鏈只能處理區(qū)塊時(shí)間的變化,tickrate是這里要解決的一個(gè)大問題。Curio和Argus在自己的創(chuàng)新設(shè)計(jì)中,率先希望在鏈的層面上增加tickrates。
對(duì)于不同鏈的選擇上,Curio和Loot都利用Caldera構(gòu)建Op stack chain,除此之外,Dojo在引領(lǐng)Starknet的全鏈生態(tài)。根據(jù)@tarrenceva的描述,Starknet有State diffs狀態(tài)差異,不同于optimistic rollups,重點(diǎn)放在了執(zhí)行輸出而不是輸入。對(duì)游戲的影響主要可能在于優(yōu)化成本,例如國際象棋游戲:在三分鐘的游戲中,可能會(huì)發(fā)生 50 步。通過狀態(tài)差異,單個(gè)證明和最終狀態(tài)可以證明“輸出”。而optimistic rollups需要所有中間狀態(tài)的“輸入”。
目前已經(jīng)有一些游戲構(gòu)建在這些引擎之上,Mud和Dojo都在為此舉辦黑客松吸引開發(fā)者構(gòu)建應(yīng)用,Curio也剛在ETHCC發(fā)布魔獸爭霸的minigame demo。
很明顯,F(xiàn)OG/AW正在成為公鏈爭奪的關(guān)鍵生態(tài),由Lattice提出的AW(自治世界)是一個(gè)很大的概念,不僅限于游戲、還包含社交、金融等眾多屬性。因此,構(gòu)建在此之上的是一個(gè)充滿想象力的虛擬世界,即Metaverse。我們可以期待一些新形態(tài)的游戲、社交、金融等融合應(yīng)用。
Reference:
1.https://mirror.xyz/matchboxdao.eth/d3lVAOa9Bi0kY-caoUT3lDC6E61mWJqtP1q6tME4xGY
2.https://jumpcrypto.com/writing/defining-on-chain-gaming/
3.https://www.oneqode.com/what-is-a-game-server/
4.https://medium.com/@qingweilim/how-do-multiplayer-game-sync-their-state-part-2-d746fa303950
5.https://latticexyz.notion.site/Building-Autonomous-Worlds-with-MUD-39d5eb5d31034589bc54a2053efb4c56
6.https://twitter.com/tarrenceva/status/1660686571270705152
7.https://book.dojoengine.org/framework/sozo/overview.html
8. https://www.youtube.com/watch?v=A0OXif6r-Qk
免責(zé)聲明:本文不構(gòu)成投資建議,用戶應(yīng)考慮本文中的任何意見、觀點(diǎn)或結(jié)論是否符合其特定狀況,及遵守所在國家和地區(qū)的相關(guān)法律法規(guī)。
歡迎轉(zhuǎn)載分享!
轉(zhuǎn)載請(qǐng)注明本文地址:
如有文章侵犯了您的權(quán)利,請(qǐng)聯(lián)系本站站長,我們將在第一時(shí)間刪除相關(guān)內(nèi)容,謝謝!