原文标题:Made from MUD: dispatches from the frontier of AW
原文链接:https://mirror.xyz/williamx.eth/M9p3BwEbwPjHJpqA3LBAiGqlHfBjr18hSWQlver9_bc
原文作者:williamx.eth,Twitter ID:@W_Y_X
译者序:“在刚刚结束的ETHGlobal Autonomous Worlds黑客松活动中,众多开发者在一周的时间内集中体验了通过全链游戏引擎MUD开发各种不同类别的产品。那么MUD引擎的开发体验如何,他有哪些独特的优势,未来又有哪些有潜力的发展方向?
本文为本次活动获奖团队Trade Wars的成员William参赛后撰写的个人感受,我们对其进行了全文翻译。”
在过去的一周里,我和其他几个朋友一起参加了ETHGlobal Autonomous Worlds黑客松活动,并使用MUD开发了一款名为“Trade Wars”的项目:一个位于公海的开放世界贸易游戏。使用MUD开发项目是一次非常有趣的经历,同时我也产生了一些想法。
MUD是Lattice团队开发的一个游戏开发框架,用于开发全链上游戏。MUD最初是为了应对在开发Dark Forest和其他早期全链上游戏时遇到的挑战而创建的。
MUD是一个全栈框架,使用Optimism的OP Stack,并且在v2版本中提供了更容易创建前端的工具。目前已经有一些游戏基于MUD制作,包括Sky Strife、OPCraft以及Moving Castles等。
这篇来自Wired的报道也提供了一个很好的概述。
如果想要理解为什么MUD如此有趣以及其设计哲学,那么我们必须首先回答:为什么要开发MUD?
我们都了解并喜爱EVM,因为他有很多成熟的工具以及和现有项目良好的兼容性,但他真的很原始。对于DeFi来说,这没什么问题,因为状态更新(如资金账簿等)和交互范围(在一小组不可变的智能合约之间)都相当有限。
重要的是,这种在基础层缺乏特异度的特点,导致了对某些基础操作出现了非常多的实现方法。
例如,ERC-20标准只是一个推荐标准,用于创建同质化代币。然而,像honeypots tokens(如一些只能购买不能出售的代币)和rebasing tokens(指用户持有的代币数量会根据一定规则而改变的代币,最典型如算稳Ampleforth)这类产品都以非标准的方式修改了原始的代币标准。然而在ERC20代币标准已经确定后,社区没有办法推进该标准任何功能上的升级。
对于ERC-20来说,由于有大量的基础设施已经围绕他建立,这或许是一件好事。但对于全链上游戏来说,这就会产生很多困难。因为游戏开发是一个动态的过程,不可修改的合约与这种开发风格不太合适。正是出于同样的原因,我们更关注开发框架而不是制定标准。因为既然必须要进行改变,那么最好考虑可升级性而不是为了兼容性而不断妥协。
MUD倾向于使用基于表格的存储(table-based storage),这是其具有的关键特征之一。区块链经常被嘲笑为昂贵的SQL数据库,但不幸的是,事实并非如此(虽然确实昂贵,但区块链其实不具有SQL中的某些功能)!
以用于记录所有权的从地址到代币的映射(mapping)为例子。如果前端想要查询所有持有剑的地址,由于映射只能是单向的从键到值,而不能反过来查询,所以没有办法直接通过查询合约来做到这一点。虽然有一些方法可以绕过这个问题,但是直接从数据库(如table-based storage)中拉取数据显然更容易,这使得构建前端变得更简单。
相比较之前需要在不同合约中查询不同的状态片段,现在你只需要知道数据库的格式,就像在普通的web2应用程序中查询SQL数据库一样。这需要一种不同的思考合约中状态的方式:每个合约不再单独保存状态,而是将状态写入世界合约(World Contract)中的状态合约(state contract)中统一管理。
这需要开发者在编写合约时做一些改变。
自主世界(autonomous worlds)的一个关键特征是可组合性。这些内在开放的系统允许并鼓励其他人与其进行连接。
MUD支持以下两种方式实现可组合性:
客户端侧:通过UI以及可以改变玩家体验的插件来实现;
合约侧:通过在World合约中注册的新实体实现可组合性(World合约与实体Entity都是MUD所采用的ECS架构中的特有概念);
目前这两种实现方式还都处于非常早期的阶段,但他们都是体现未来实现可组合性潜力的非常好的案例。
对于插件来说,目前有像聊天或实现共享资源功能的插件,他们为玩家间的合作带来了新的方式。
而对于新实体(Entity),也就是能够帮我们在这些世界(World Contracts)中实现各种游戏道具互操作性的方式,其最经典的例子是能够将一把稀有的剑从一个游戏带到另一个游戏。诚然,这里还有更多的工作要做。例如,游戏需要能够明确地识别包含剑的表格的格式。
尽管依赖于Solidity及其语法,所有这些变化使得MUD成为了一种非常新颖的看待游戏的方式,就像React编译成Javascript一样。他为创建更具交互性的前端打开了大门。
像zk和zkml(Zero-knowledge machine learning)这样的新技术将首先在全链游戏中找到立足点。
游戏的低风险属性和更广泛的设计空间,使得开发者可以更方便地探索一些新的计算理念。使用zkml构建的自主游戏代理,或者像Dark Forest中使用的zk战争迷雾(fog of war)等,都极大地增加了链上游戏的探索空间。
DeFi和AW之间更深层次的整合非常令人兴奋。我们在黑客松中对这个方面进行了探索,在我们制作的游戏中,玩家使用的交易系统实际上是一个Balancer v1风格的多资产AMM,他允许玩家驾驶他们的船在AMM之间完成套利。
虽然这还处于非常初期阶段(MUD甚至没有ERC-20兼容性或原生ERC-20),但是能够创建AMM,并且与其他DeFi组建交互的能力为探索新的领域提供了可能。
如果要我押注未来AW显著增长的原因,那就是参考现有的代币经济的经验,并扩展金融互动的范围。这超越了简单的代币增发-销毁模型,这种模式虽然曾经促进了P2E类游戏的启动,也最终因为不可持续性导致了这些项目最终的消失。
前端与后端的紧密整合使得AW被用于全栈dapps的实践成为一件十分有趣的事情,这种模式也被Jai Bhavnani称为超级应用(hyperapps)。(译者注:超级应用是一种可以让一个链下应用,比如网站前端,完全或部分地由一个地址(比如DAO,EOA等)来治理,来源)
虽然这还处于早期阶段,但是用户对全栈应用的控制体验以及通过插件实现的前端可组合性,也是我们对于全栈应用未来如何真正成为现实的一种非常有趣的思考方式。
很明显,MUD还有很多工作要做。在过去的几天里,我在使用他的过程中遇到了一些bug、文档问题,以及不流畅的地方。
但如果要说有什么是确定的,那就是活跃的社区以及由MUD带来的快速的游戏开发体验,展现了真正令人兴奋的全链上游戏的未来。
特别感谢我的队友Cometshock,Bitzoic以及Lattice团队,他们组织了这次黑客马拉松,并使他成为了一次非常酷的体验。