底层技术推动游戏跨越式发展
游戏行业的进步总是伴随着科技的提升而不断演变 。从图形和音效的变化,到游戏设计、交互方式的变革,无一不在推动着游戏的发展。雅达利开发的第一款游戏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 引擎。
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 代币并将它们“附加”到地址上一样。
Web3游戏引擎对链游发展的意义
区块链技术目前虽然未完全落地至日常应用,但是其独特的确权透明等特性也势必为游戏领域带来重要的变革。特别是人们已经见识到 DeFi 带来的巨大魔力。而把游戏完全上链,会发生什么呢?由 DeFi 我们不难推出区块链将给游戏带来的变化:
-
开放的经济系统:区块链可以让游戏中的虚拟资产具备真实的所有权和稀缺性。这意味着玩家可以验证物品的稀有度和产出率,避免了中心化游戏公司对资产的控制和管理。
-
可组合性:将游戏放置于区块链的开放环境中,允许不同的游戏和项目相互补充。玩家在一个游戏中的进展可以在其他游戏中反映出来,甚至是共享资产,创造了更加开放和互通的游戏生态。
-
用户生产内容:用户可以完全自主构建游戏内容或是资产,并在开放源码环境中拥有资产的所有权。这促进了用户生成的游戏循环,增加了游戏的可玩性和分发。例如用户可以把通过验证的 mod 内容加载进游戏合约中,丰富游戏性的同时也许还能收获部分收益。
区块链游戏一直以来备受期待,尤其在 DeFi、NFT 这两个区块链应用领域相继爆发后,然而目前实现仍然有很多障碍:
-
首先是技术基础设施的限制,EVM 速度慢,Gas 费用高,Solidity 语言在处理复杂游戏逻辑方面也几乎无法胜任,这严重限制了游戏的复杂性与交互性。
-
经济模型设计,众所周知链游的经济系统是重中之重,有效激励与金融化需要找到平衡点。
-
自由度与治理,链上游戏具有相当大高的自由度或者说开放性。它应该允许任何玩家创建并部署不同的游戏内容,然而这些内容势必导致游戏世界更加复杂,甚至产生未预期到的经济影响,这就需要有效的治理机制去协调管理。
以上只是目前可预见到的一些困难,也是现阶段几乎所有全链游戏聚焦点都在 SLG 的原因——游戏机制简单,不需要高 TPS,需要的信息不完备性也恰好能被已有技术完美应用。如果我们期待一款 MMORPG,那无疑是具有相当的挑战性。借鉴游戏引擎给 Web2 游戏带来的改变,如果链游同样采取 ECS 架构,可以能解决:
-
数据组织和管理:链上游戏同样存在大量的游戏数据需要处理,包括角色属性、物品、地图信息等。ECS架构可以帮助将数据组织成可重用的组件,以及对数据的修改和访问进行有效的管理。
-
灵活性和可扩展性:通过将游戏实体(Entity)和组件(Component)分离,开发者可以轻松地创建新的游戏对象和功能,而无需影响现有的逻辑。这种灵活性和可扩展性在链上游戏中尤为重要,因为复杂游戏机制可能需要频繁地进行升级和扩展。
-
智能合约和数据更新:ECS架构可以更有效地管理智能合约中的数据更新。每个组件都可以独立地更新,而不必更新整个实体。这可以降低智能合约的执行成本,并提高交互效率。
-
可组合性:ECS的一个优势是其组件和系统的可组合性,这与链上游戏中的可组合性概念相契合。也许玩家就可以创造新的内容,从而带来更丰富的体验。
Web3全链游戏前瞻
全链游戏的难点还有很多,游戏引擎也只是解决一小部分问题,不过挑战与机遇并存,全链游戏这种复杂应用可能成为区块链技术真正落地的敲门砖。
目前全链游戏引擎还是非常早期阶段,如前所说,我们看到了复杂应用的雏形,但缺少工具实现。目前开发进度较快的是 MUD V2 与Dojo。MUD V2 相比 V1 改进了 ECS 架构,但是 V2 目前还在开发中。Dojo 是由Starknet 社区构建的目前唯一可验证的游戏引擎,得益于 Cairo 语言,可以原生实现战争迷雾。Dojo 也采用了 ECS 架构,并且计划在 Starknet 上开发专属游戏的 L3,以进一步提高可扩展性。
此外链游所依赖的基础设施也在进化。L2 已经夯到可以一键发链,也许某个爆款游戏可以通过自建 Rollup 来赚取差价从而维持耗散结构,避免死亡螺旋。利用 ERC-4337 账户抽象技术,全链游戏能够让玩家在一个单一账户中进行游戏交易、创建角色等等,有助于简化用户体验。还可以把不同的游戏机制封装为一个可升级的合约账户,使得开发者轻松更新或优化游戏规则,内容等等。