游戏行业的进步总是伴随着科技的提升而不断演变。从图形和音效的变化,到游戏设计、交互方式的变革,无一不在推动着游戏的发展。雅达利开发的第一款游戏Pong被公认为是第一款商业上成功的电子游戏,风靡一时,掀起了电子游戏的潮流。70年代是集成电路高速发展期,1975年摩托罗拉公司推出6502处理器,为后续的家用机辉煌奠定了基础。最著名的家用机先驱雅达利2600正是由此诞生,吃豆人从此家喻户晓。
现代游戏是综合艺术,同时也是复杂技术。早期的游戏从代码逻辑到界面交互都较为简单,开发者更习惯从 0到 1 进行制作,但是随着机能提升,游戏玩法越来越多样,技术越来越复杂,从头开发就显得过程缓慢且效率不高。到了90年代,CD-ROM与3D图形加速卡的出现则让游戏内容与画面表现都达到了新的高度,导致开发一款游戏的代码量急剧增加,在这个背景下,游戏引擎的概念应运而生。游戏开发者将部分底层技术标准化,集成为一个高效的工具集,以缩短开发周期,降低开发复杂性,并能够支持不同平台与设备上的游戏发布。可以说游戏引擎的出现为开发者带去了极大方便。这些模块化、通用化、标准化的功能可以让开发者更专注于游戏内容、玩法设计上。如今一套成熟的游戏引擎可能包含图形、物理、场景等各个系统。
1993 年,Id Software 公司使用了 DOOM 引擎(Id Tech 1)制作了《毁灭战士》这款游戏,获得了巨大成功,当年销量便达到了 350 万份。《毁灭战士》的成功在很大程度上得益于其软件架构的设计。其游戏软件架构被划分为核心软件组件、美术资产、游戏世界和游戏规则等部分。这种清晰的架构划分使得不同的开发者可以使用相同的引擎,通过制作新的美术、关卡、角色、游戏世界和游戏规则,创造出全新的游戏作品。DOOM 引擎的成功划分激发了社区中的 MOD 制作兴趣,同时也成为了第一个商业游戏引擎。此后十年内,游戏引擎炙手可热,从 Epic Games 的虚幻引擎Unreal,到 CryTech 的 CryEngine,再到在 IOS 端大放异彩的 Unity。除了商用引擎,许多厂商也打造了自家使用的自研引擎,例如 Valve 的Source 引擎,Infinity Ward 的 IW 引擎,育碧推出的 Anvil 引擎。
02、Web3 游戏引擎的ECS 架构目前最知名的两个全链游戏引擎 MUD 跟 DOJO 均采用 ECS 架构。ECS 代表实体-组件-系统(Entity-Component-System),是一种在 Web2 游戏开发中常用的架构模式,用于管理游戏对象(实体)以及它们的属性(组件)和行为(系统)。这种架构模式的好处有:
性能优化:ECS 架构允许游戏开发者更好地管理内存布局和数据访问模式,从而提高游戏的性能。实体和组件的紧密排列有助于减少缓存不命中,提高数据访问效率。可扩展性:由于实体和组件的解耦,新增功能只需要增加对应的组件和系统,而不需要改变已有的代码。这样可以方便地扩展游戏的功能和内容。复用性:通过将属性划分为独立的组件,可以更容易地复用这些组件来创建不同类型的实体,从而减少冗余代码。MUD V1 即是典型的 ECS 架构。在 V1 的框架中,Entities 实体也是游戏中的基本单位,可以是各种物体、道具或者是钱包地址,他们由唯一的ID标识。而 Components 组件是实体的数据部分,用来描述实体的不同属性,比如物体的位置,角色的属性等等。通过将不同的组件附加到实体上,就可以创建出丰富多样的游戏对象。而 Systems 系统则处理 Components 的逻辑,实现游戏的各种规则跟行为,他们以智能合约的形式存在于链上。实体、组件、系统均在一个 Worlds 世界合约中,每个 Worlds 相当于一个独立的游戏环境。
这个架构如何体现可扩展性呢?假设我们需要升级游戏中的某项功能或是社区想要添加新的内容,首先需要让新的游戏功能/逻辑(系统)获得相关组件的写入权限,然后创建升级版本,游戏中的其他内容保持不变即可。如果不给写入权限呢,那么也可以考虑创建包含新功能的新组件与新系统,玩家可以选择不同的版本游玩,同时与相同的核心组件的数据交互。因为从Worlds 的角度看,任何人都可以创建组件和系统,就像任何人都可以创建新的 ERC-20 代币并将它们“附加”到地址上一样。
03、Web3游戏引擎对链游发展的意义区块链技术目前虽然未完全落地至日常应用,但是其独特的确权透明等特性也势必为游戏领域带来重要的变革。特别是人们已经见识到 DeFi 带来的巨大魔力。而把游戏完全上链,会发生什么呢?由 DeFi 我们不难推出区块链将给游戏带来的变化:
开放的经济系统:区块链可以让游戏中的虚拟资产具备真实的所有权和稀缺性。这意味着玩家可以验证物品的稀有度和产出率,避免了中心化游戏公司对资产的控制和管理。可组合性:将游戏放置于区块链的开放环境中,允许不同的游戏和项目相互补充。玩家在一个游戏中的进展可以在其他游戏中反映出来,甚至是共享资产,创造了更加开放和互通的游戏生态。用户生产内容:用户可以完全自主构建游戏内容或是资产,并在开放源码环境中拥有资产的所有权。这促进了用户生成的游戏循环,增加了游戏的可玩性和分发。例如用户可以把通过验证的 mod 内容加载进游戏合约中,丰富游戏性的同时也许还能收获部分收益。区块链游戏一直以来备受期待,尤其在 DeFi、NFT 这两个区块链应用领域相继爆发后,然而目前实现仍然有很多障碍:
首先是技术基础设施的限制,EVM 速度慢,Gas 费用高,Solidity 语言在处理复杂游戏逻辑方面也几乎无法胜任,这严重限制了游戏的复杂性与交互性。经济模型设计,众所周知链游的经济系统是重中之重,有效激励与金融化需要找到平衡点。自由度与治理,链上游戏具有相当大高的自由度或者说开放性。它应该允许任何玩家创建并部署不同的游戏内容,然而这些内容势必导致游戏世界更加复杂,甚至产生未预期到的经济影响,这就需要有效的治理机制去协调管理。以上只是目前可预见到的一些困难,也是现阶段几乎所有全链游戏聚焦点都在SLG的原因——游戏机制简单,不需要高TPS,需要的信息不完备性也恰好能被已有技术完美应用。如果我们期待一款MMORPG,那无疑是具有相当的挑战性。借鉴游戏引擎给 Web2 游戏带来的改变,如果链游同样采取 ECS 架构,可以能解决:
数据组织和管理:链上游戏同样存在大量的游戏数据需要处理,包括角色属性、物品、地图信息等。ECS架构可以帮助将数据组织成可重用的组件,以及对数据的修改和访问进行有效的管理。灵活性和可扩展性:通过将游戏实体(Entity)和组件(Component)分离,开发者可以轻松地创建新的游戏对象和功能,而无需影响现有的逻辑。这种灵活性和可扩展性在链上游戏中尤为重要,因为复杂游戏机制可能需要频繁地进行升级和扩展。智能合约和数据更新:ECS架构可以更有效地管理智能合约中的数据更新。每个组件都可以独立地更新,而不必更新整个实体。这可以降低智能合约的执行成本,并提高交互效率。可组合性:ECS的一个优势是其组件和系统的可组合性,这与链上游戏中的可组合性概念相契合。也许玩家就可以创造新的内容,从而带来更丰富的体验。04、Web3全链游戏前瞻
全链游戏的难点还有很多,游戏引擎也只是解决一小部分问题,不过挑战与机遇并存,全链游戏这种复杂应用可能成为区块链技术真正落地的敲门砖。
目前全链游戏引擎还是非常早期阶段,如前所说,我们看到了复杂应用的雏形,但缺少工具实现。目前开发进度较快的是MUD V2与Dojo。MUD V2相比V1改进了ECS架构,但是V2目前还在开发中。Dojo是由Starknet社区构建的目前唯一可验证的游戏引擎,得益于Cairo语言,可以原生实现战争迷雾。Dojo也采用了ECS架构,并且计划在Starknet上开发专属游戏的L3,以进一步提高可扩展性。
此外链游所依赖的基础设施也在进化。L2 已经夯到可以一键发链,也许某个爆款游戏可以通过自建 Rollup 来赚取差价从而维持耗散结构,避免死亡螺旋。利用ERC-4337 账户抽象技术,全链游戏能够让玩家在一个单一账户中进行游戏交易、创建角色等等,有助于简化用户体验。还可以把不同的游戏机制封装为一个可升级的合约账户,使得开发者轻松更新或优化游戏规则,内容等等。