链上游戏技术栈:如何同步游戏状态?
•
2023-07-24 00:00:00
•
Meta •
阅读
TL;DR
- 全链游戏/自治世界("FOG/AW")是围绕Web 3的少数重要叙事之一。相比于只通过NFT连接到Web3的Web2.5应用不同,FOG/AW将游戏逻辑也放在了链上。它利用区块链作为游戏服务器,成为游戏状态的去中心化信任源。这带来了持久性、抗审查、可组合性等优点,但也限制了构建在其之上的游戏多样性和复杂性。
- 随着游戏复杂性和可玩性要求的提高,对引擎架构提出了更多的挑战要求:比如帧数延迟、随机数、生命值恢复、连续的被动效果、计时器等等。其中时间的概念以及Ticks单位在区块链上是不一样的。Mud提供了不少思路来模拟时间流逝以及被动恢复技能。比如,当玩家在房间中移动时,交易中附带根据一些预定义的设计移动房间中的所有物品。以此感知时间和状态的变化。
- FOG/AW技术栈可被抽象为:开发者为ui/ux和游戏核心逻辑编写前端和后端代码,然后通过游戏状态的循环来同步所有的变化,最后由索引器将新的状态反映到前端的本地设备上。
- 由于许多游戏类型,如RTS,需要高的tickrates,而由共识产生的区块链只能处理区块时间的变化,tickrate是这里要解决的一个大问题。Curio和Argus是这方面的领先者,他们正在摸索链的层面上增加游戏tickrate。Mud在试图最大程度实现全链上,整个应用程序状态都保存在 EVM 中。并没有为实现游戏更高tickrate上引入链下结合的方案。
- 对于不同链的选择上,Dojo在引领Starknet的全链生态。根据@tarrenceva的描述,Starknet有State diffs状态差异,不同于optimistic rollups,重点放在了执行输出而不是输入。对游戏的影响主要可能在于优化成本,例如国际象棋游戏:在三分钟的游戏中,可能会发生 50 步。通过状态差异,单个证明和最终状态可以证明“输出”。而optimistic rollups需要所有中间状态的“输入”。
定义 FOG/AW:游戏状态是如何同步的
我认为要判断是否是FOG,基准是游戏状态是如何同步的(source of truth)。
对于Web 2.5游戏或传统的多人游戏,有一个中心化的服务器来定义当前的游戏状态,当玩家发送行动时,服务器会编译这些输入并将更新的结果返回给每个连接的玩家的设备。服务器处理所有的输入(tick),解决不一致的问题,并定期向玩家发送更新,提供游戏中所有元素的快照,每一个tick都更新游戏状态。游戏状态("game state or tick")
- 星际资讯
免责声明:投资有风险,入市须谨慎。本资讯不作为投资建议。
下一篇:没有了
« 上一篇
上一篇:对话 Uniswap 创始人:超越聚合器,UniswapX 是更加自由的竞争市场
下一篇 »