時間:2023-05-06|瀏覽:234
文:JustinZhao
原標題:深度解析全鏈游戲引擎MUD
游戲引擎是一種用于開發(fā)和創(chuàng)建電子游戲的軟件框架。它包括了游戲開發(fā)所需的許多核心功能,對于傳統(tǒng)的Web2游戲來說,一般包含如渲染引擎、音頻處理、物理模擬和動畫系統(tǒng)等。通過使用游戲引擎,開發(fā)者能夠?qū)W⒂谟螒蛟O計和創(chuàng)意,而無需從頭開始構(gòu)建整個技術(shù)基礎設施。游戲引擎為游戲開發(fā)者提供了一個快速有效的工具,以降低開發(fā)成本和時間。
有許多知名的Web2游戲引擎,如Unity、Unreal Engine和Godot等。這些引擎不僅適用于專業(yè)開發(fā)者,也適用于獨立開發(fā)者和初學者。游戲引擎具有高度可定制性,可以根據(jù)項目需求進行調(diào)整。它們通常支持跨平臺開發(fā),允許開發(fā)者為多種設備(如個人計算機、游戲機和移動設備等)創(chuàng)建游戲。此外,許多引擎還提供了對虛擬現(xiàn)實(VR)和增強現(xiàn)實(AR)的支持,以滿足不斷發(fā)展的技術(shù)需求。游戲引擎還包含了一套豐富的工具集,可以幫助開發(fā)者輕松地創(chuàng)建游戲世界、角色和物品。這些工具有助于實現(xiàn)高效的游戲開發(fā)流程,例如可視化的場景編輯器、腳本編輯器以及動畫和特效工具等。
游戲引擎在游戲開發(fā)中發(fā)揮著至關(guān)重要的作用。對于全鏈上游戲來說,同樣需要一個能夠幫助開發(fā)者快速部署游戲邏輯的工具。這不僅能夠縮短開發(fā)周期,還為后續(xù)的迭代開發(fā)和開放生態(tài)中的互操作提供了統(tǒng)一的數(shù)據(jù)標準。
在這個領(lǐng)域中,較為成熟的項目是由Lattice工作室開發(fā)的基于Solidity的全鏈游戲引擎MUD。它使開發(fā)者能夠迅速將游戲邏輯部署到智能合約中,并實現(xiàn)合約與客戶端狀態(tài)的同步等功能,從而顯著提高開發(fā)效率。
值得注意的是,目前全鏈上游戲除了采用Solidity編寫外,StarkNet的Cairo也是一種常用的語言。然而,MUD并不能很好地兼容Cairo。因此,StarkNet生態(tài)中的兩個活躍項目Realms和Briq的創(chuàng)始人共同開發(fā)了基于Cairo的全鏈上引擎Dojo。由于Dojo的核心理念與MUD相似,引發(fā)了MUD創(chuàng)始人Ludens的不滿。但在一番爭議之后,Ludens最終表示愿意協(xié)助將MUD部署到StarkNet上。
開發(fā)游戲引擎時遇到的最大問題是如何表示游戲?qū)ο?,游戲?qū)ο罂梢詮臎]有控制或交互的簡單2D圖像到具有控制、聲音、動畫和AI的異常復雜3D對象。在概念上,很容易將游戲?qū)ο罄斫鉃楸硎居螒蛑芯哂卸鄠€功能的實體。最開始使用面向?qū)ο笞兂蒓OP的架構(gòu),現(xiàn)在更為流行的是ECS架構(gòu)(Entity Component System)。
ECS通過將邏輯、數(shù)據(jù)和實體分離,提高了游戲開發(fā)的靈活性和可維護性。這種架構(gòu)模式有助于降低代碼復雜度,減少耦合,從而提升性能和開發(fā)效率。ECS由以下三個主要部分組成:
ECS模式有助于解決傳統(tǒng)面向?qū)ο缶幊蹋∣OP)在游戲開發(fā)中的一些問題,如繼承層次過深和代碼重用困難等。ECS使得游戲?qū)ο蟮臉?gòu)建更加靈活,可以通過組合不同的組件輕松創(chuàng)建出復雜的行為。此外,ECS還有助于優(yōu)化性能,特別是在處理大量游戲?qū)ο髸r。許多現(xiàn)代游戲引擎,如Unity和Godot,已經(jīng)采用了ECS作為其核心架構(gòu)。
全鏈游戲和Web2游戲甚至常見的GameFi游戲(游戲資產(chǎn)上鏈但游戲本身不上鏈)有很大不同,比如,編程語言多采用Solidity,游戲?qū)ο蟮膶傩誀顟B(tài)儲存在智能合約中,這就導致面向?qū)ο缶幊掏耆珶o法使用,只能采用ECS架構(gòu)。
我們來看Solidity,其實已經(jīng)在不知不覺中使用過這種模式的變體。以ERC-20合約為例:ERC-20合約將每個地址的代幣余額存儲在一個映射中(從address到uint256余額)。我們可以將每個ERC-20合約視為一個具有兩列的表:"地址"和"余額"。這對應于具有單個模式值("余額")的組件。表中的每行都將一個實體("地址")與一個組件值("余額")關(guān)聯(lián)起來。一個地址可以在許多獨立的ERC-20合約中持有余額,這對應于一個實體與許多獨立的組件值關(guān)聯(lián)。在當前的ERC-20參考實現(xiàn)中,狀態(tài)和邏輯是耦合在同一個合約中的。在ECS中,我們將有一個通用的"轉(zhuǎn)賬系統(tǒng)"來處理從一個地址向另一個地址轉(zhuǎn)賬代幣的邏輯,通過修改代幣組件中存儲的狀態(tài)。
另一個例子是一個簡單的視頻游戲,可用的組件有"位置"和"生命值"。具有位置的實體在位置組件中有一個條目,具有生命值的實體在生命值組件中有一個條目。"移動系統(tǒng)"可以實現(xiàn)將實體從一個位置移動到另一個位置的規(guī)則。"戰(zhàn)斗系統(tǒng)"可以根據(jù)涉及實體位置的規(guī)則實現(xiàn)戰(zhàn)斗邏輯,并修改實體的生命值。
MUD是一個以太坊應用程序框架。其核心是一組合約接口和使用它們的約定。這些核心接口和庫使得一系列周邊工具、集成和庫能夠更加順暢地進行,從而使鏈上應用程序的開發(fā)變得更加簡潔。
MUD 可以實現(xiàn)如下功能
目前
未來
MUD的框架包含8個庫文件。
基于StarkNet的Dojo在功能上和MUD非常類似,甚至可以認為是用Cairo語言把MUD重新寫了一遍,所以不再具體講解。在MUD的開發(fā)者文檔中給出了一個具體的例子來教會大家如何在一天時間就能開發(fā)出一個全鏈游戲:Emojimon(表情怪獸)。感興趣的朋友可以參考這篇官方教程:javascript:;
Sky Strife是一個基于MUD構(gòu)建的鏈上游戲。游戲以快節(jié)奏的實時戰(zhàn)略(RTS)戰(zhàn)斗為特點,展開一場爭奪誰能帶著“Ember Crown”逃離戰(zhàn)場的激戰(zhàn)。
Kamigotchi 是一款具有PvP機制的多人在線角色扮演閑置游戲。您可以使用您的Kamigotchi(簡稱“Kami”)從世界各地散布的節(jié)點中收獲$KAMI。$KAMI可用于升級您的Kami并購買食物。然而,收獲會消耗您的Kami的生命值,當生命值較低時,其他玩家可以使用他們的Kami獵殺您的Kami。您需要保持您的Kami充饑并仔細觀察它們以獲得最大產(chǎn)出。死亡并不是永久的,核心NFT不受影響,但這會讓您付出代價——被殺死的Kami在游戲中無法再次使用,除非使用商店中的某些消耗品復活,當然這需要$KAMI。此外,您的Kami會因為這次經(jīng)歷而心情受挫。
Muddy Forest是一款完全基于鏈上的大型多人在線實時戰(zhàn)略太空征服游戲,游戲中的每個動作,從運輸、發(fā)送資源到占領(lǐng)星球等,都發(fā)生在區(qū)塊鏈上。
熱點:游戲