游戏技术栈中的链上同步方法是什么?

游戏技术栈中的链上同步方法是什么?

FOG/AW:游戏状态的链上同步

在Web 3的众多重要叙事中,全链游戏/自治世界(FOG/AW)是其中之一。与仅通过NFT连接到Web3的Web2.5应用不同,FOG/AW将游戏逻辑也放在了链上,利用区块链作为游戏服务器,成为游戏状态的去中心化信任源。这带来了持久性、抗审查、可组合性等优点,但也限制了构建在其之上的游戏多样性和复杂性。

传统的Web 2.5游戏或多人游戏使用中心化服务器来定义当前的游戏状态,当玩家发送行动时,服务器会编译这些输入并将更新的结果返回给每个连接的玩家的设备。服务器处理所有的输入(tick),解决不一致的问题,并定期向玩家发送更新,提供游戏中所有元素的快照,每一个tick都更新游戏状态。游戏状态是游戏世界中每个对象的属性的时间快照。Tickrate 是指游戏服务器每秒钟计算并向玩家广播更新的游戏状态的次数。Tickrate 越高,游戏体验就越精确、越高保真。实时战略或动作游戏需要高tickrate,而回合制游戏则不需要。

对于完全运行在链上的游戏,区块链是游戏服务器并作为游戏状态的去中心化信任源。不仅NFTs或代币有真正的所有权,连游戏者的ticks和游戏逻辑也是在链上的。这使得真正的所有权、持久性、抗审查性、可组合性等成为可能。理想情况下,游戏者的每个动作都应该提交给区块链,在达成共识后,游戏状态被更新并返回到本地设备。因此,自然而然地,需要较少tickrate的游戏类型更适合完全在链上进行。

然而,随着游戏复杂性和可玩性要求的提高,对引擎架构提出了更多的挑战要求,比如帧数延迟、随机数、生命值恢复、连续的被动效果、计时器等等。例如,在Web2世界中,帧数延迟是很常见的问题,由于客户端渲染和用户操作的延迟。特别是对于高tickrate游戏,一旦出现延迟,玩家体验会大大降低。解决这个问题的一种方法是使用lockstep state update,根据玩家中最高延迟的标准同步所有玩家,以保证公平性。然而,引入区块链后,等待交易确认会导致延迟更为严重。因此,Mud引入了游戏中常用的optimistic rendering机制,即假设用户操作成功,并在服务器同意之前(或在事务确认之前)将其渲染在客户端中。

另一个挑战是链上随机数的生成。Mud认为可以将用户行为作为随机结果的输入,在交互发生后生成随机数。此外,区块链上的时间概念和Ticks单位与传统游戏中的不同。在使用诸如Op等采用fraud proof概念的链上,使用计时器会非常困难,因为一旦出错,需要回滚,这会导致游戏体验非常差。Mud提供了一些思路来模拟时间流逝和被动恢复技能。例如,随着时间流逝增加金币,每次玩家执行需要金币的操作时,根据玩家之前的金币数量、最近一次刷新的数量和刷新率来计算玩家的金币数量。在房间中移动时,交易中还会移动房间中的所有物品,以此感知时间和状态的变化。

对于FOG/AW的技术栈,开发者为ui/ux和游戏核心逻辑编写前端和后端代码,然后通过游戏状态的循环来同步所有的变化,最后由索引器将新的状态反映到前端的本地设备上。然而,由于许多游戏类型,如FPS,需要高的tickrates,而由共识产生的区块链只能处理区块时间的变化,tickrate是一个问题。目前,Curio和Argus在尝试在链的层面上增加游戏tickrate。对于不同链的选择上,Dojo在引领Starknet的全链生态,Starknet引入了状态差异的概念,重点放在执行输出而不是输入,这对游戏的优化成本有一定影响。

FOG/AW引擎框架是一个开发者工具栈,可以让开发者利用区块链作为服务器和信任源来构建游戏。这解决了FOG/AW开发中一些问题,如效率低下、缺乏模块化和代码重用性、缺乏可组合性。为了方便理解,这类引擎一般简化的技术流程是:开发者为ui/ux和游戏核心逻辑编写前端和后端代码,然后通过游戏状态的循环来同步所有的变化,最后由索引器将新的状态反映到前端的本地设备上。

目前,已开发了一些基于FOG/AW引擎的游戏。Mud和Dojo都举办了黑客松活动,以吸引开发者构建应用程序。Curio也在ETHCC发布了魔兽争霸的迷你游戏演示。可以预见的是,FOG/AW正在成为公链竞争的关键生态,而基于FOG/AW的虚拟世界Metaverse将呈现出一些新形态的游戏、社交、金融等融合应用。

参考资料: 1. Mud V2 2. Defining On-chain Gaming 3. What is a Game Server 4. How do Multiplayer Games Sync their State 5. Building Autonomous Worlds with MUD 6. Twitter – Tarrence van As 7. Dojo Framework 8. YouTube – LatticeEx Engines Explained