加载中 ...
首页 > 股票 > 区块链 > 正文

基础设施是游戏发展的关键(二):初探新框架—Action Registry Core

2023-05-06 15:51:42 来源:广东财经网

如何将传统游戏开发中的经验应用到区块链游戏中?由 ECS 架构所启发,Jump Crypto 提出了一种新框架 ARC,为全链游戏和资产上链的游戏提供了高效、可重用、易扩展和跨链互操作的支持,让 Web3 游戏开发更加轻松。

概述

在上一篇文章中,我们讨论了三种链上游戏类型,分别是:(1)完全上链(fully on-chain games, FOC),(2)资产上链(on-chain assets, OCA),和(3)可选资产铸造(optional cosmetic mints, OCM)。回顾一下,由于目前缺乏支持 FOC 和 OCA 的基础设施,大多数游戏工作室选择了 OCM 方法,以避免给用户带来太多的阻力。在接下来的几篇文章中,我们将重点介绍一些可能支持 FOC 和 OCA 的基础设施,以及每个部件在实际应用中可能的设计方案。

首先需要的基础设施是——一个能够高效管理链上资产和游戏状态的系统。定义资产在链上的操作方式对资产可编程性(如权限管理、元数据更新等)有着实质性的影响。为了更好地了解这样的系统可能会是什么样子,我们决定自己开发一个链上游戏(稍后会有更多介绍)。同时,我们很快发现,当游戏的规模扩大时,基于面向对象编程(object-oriented programming, OOP)的传统方法会遇到可扩展性的挑战,因为资产依赖关系会随着游戏规模的扩大呈现出线性的增长。

因此,我们决定尝试使用数据驱动的设计模式,这些模式在传统游戏开发中已被广泛使用,但在链上的实践很少。通过这个过程,我们在 Solana 上尝试了一个名为 ARC(Action Registry Core)的框架,我们认为这是管理链上资产和游戏逻辑最有效的方法之一。传统游戏开发中常用到一种数据驱动的架构模式是实体组件系统(Entity Component System, ECS),ARC 正是由 ECS 所启发构建的。

在本文中,我们将介绍 ECS 的工作原理、它在传统游戏中为什么如此重要、如何将这种理念扩展到构建类似 ARC 的框架,以及可能的底层架构。

我们的目标是为开源研究做出贡献,并帮助推动链上游戏基础设施的发展。秉着这种精神,我们决定开源 ARC 参考实现,并欢迎社区给予任何反馈。

ARC GitHub 链接:[https://github.com/JumpCrypto/sol-arc?ref=jumpcrypto-com.ghost.io]

传统游戏开发中的 ECS 是什么?

ECS 是近年来广泛应用于视频游戏的一种架构。与经典的面向对象编程(OOP)相比,ECS 可以将数据与行为分离,因此在视频游戏领域具有一定优势。在传统的 Web2 游戏中,它可以帮助提高游戏性能(改善缓存局部性),同时在开发游戏本身时,也能更好地控制游戏逻辑。

了解传统 OOP 方法在面对多个依赖关系时的局限性,可以更好地帮助理解 ECS 的优势。

OOP 面临的挑战 - 钻石继承问题

假设我们正在构建一个非常简单的游戏,具有以下属性:

三个实体:i) Mammal(哺乳动物),ii) Fish(鱼),iii) Amphibian(两栖动物)

Mammal 可以在陆地上呼吸,但不能在水里呼吸

Fish 可以在水里呼吸,但不能在陆地上呼吸

Amphibian 既可以在水里呼吸,也可以在陆地上呼吸

在传统的 OOP 中,Mammal 可以作为一个实体,继承自基类 LandBreather(陆地呼吸者),Fish 可以作为一个实体,继承自基类 WaterBreather(水中呼吸者)。在这里,我们遇到了 Amphibian 的挑战,它既具有 LandBreather的属性,又具有 WaterBreather的属性,但不能同时继承两者。在经典的面向对象编程中,这被称为“钻石继承问题或菱形继承问题”。这个问题在游戏中比其他应用更为普遍,因为游戏角色、物品和资产的数量随着特征和依赖关系的增加而增加。虽然存在一些变通方法,但对于游戏来说,我们认为 ECS 是最优雅的解决方案。

ECS 作为一种解决方案

基于 ECS 的游戏具有以下特性:

Entity(实体) - 组件的唯一标识或容器

Component(组件) - 不具备行为的纯数据类型,可以“挂载”到实体上

System(系统) - 与具有一定组件集合的实体匹配的函数

实体可以包含零个或多个组件。通过使用系统,实体可以动态地添加/删除/修改其组件。

为了了解 ECS 如何解决游戏中 OOP 面临的限制,我们可以使用 ECS 解决上面举例遇到的问题。在 ECS 模式下,我们会创建两个组件:LandBreather(陆地呼吸者)和 WaterBreather(水中呼吸者)。系统 LandBreatherSystem 处理具有 LandBreather 组件的任何实体的移动,而系统 WaterBreatherSystem 处理具有 WaterBreather 组件的任何实体的移动。实体可以如下所示:

Mammal:[LandBreather]

Fish:[WaterBreather]

Amphibian:[LandBreather,WaterBreather]

然后,您可以动态地为实体添加更多组件,例如 Fly(飞行)或 Fight(战斗),并且也可以在它们下面创建具有不同组件的更多实体。

什么是 ARC?

ARC(Action Registry Core)是一个受传统 ECS 架构启发的链上信息组织框架。与 ECS 一样,ARC 有用于组件的无数据容器——实体,以及可以“挂载”到实体上的无行为的纯数据类型——组件。

与 ECS 不同的是,ARC 有可以针对特定组件执行的“操作”(actions),而不是“系统”(systems)。主要区别在于,传统 ECS 中的系统是围绕传统游戏中使用的基于循环(loop-based)的架构构建的,而 Action Bundles 则考虑到了区块链架构是基于推送(push-based)的。这里概述的 ARC 的具体实现是针对 Solana 生态系统的,但其他生态系统中也可以使用类似的架构。ARC 的基本架构是一个分为三层的洋葱架构。首先,要有负责维护注册表和实体的核心层(the Core)。其次,有各种注册表(Registry)合约,它们负责维护组件和操作的注册表以及治理功能。最后,需要有(可选的)游戏或修改组件的操作(Actions)合约。

核心层(the Core)

核心层负责以下三件事:

初始化新的注册表实例

以 NFT 或独立实体 PDA 的形式铸造新实体

维护与实体相关的 SerializedComponents(序列化组件)

链上只需要存在一个核心程序,因为通过注册表实例,我们可以将不同的组件、实体和规则进行分桶。在 EVM 链上,这种方法可能行不通,因为每个合约的合约存储有限,所以最好启用多个核心。

具体在 Solana 中,实体结构类似于为每个 Metaplex NFT 生成的 Metaplex 元数据。一个显著的区别是在给定代币上的每个注册表实例都有一个新的实体映射。这意味着一个代币,理论上可以有多个实体,只要它们属于不同的注册表(很可能有不同的组件、组件值等)。

这种行为模式是否“优于”一个代币一个实体,这是一个尚待解答的问题。因为核心只处理序列化组件,所以它不需要担心如何反序列化任何东西。这意味着所有反序列化逻辑可以推给游戏或操作层。

注册表实例是赋予注册表及其实例 ID 的唯一标识。不同的实例有助于在同一核心中实例化不同的“游戏”,从而允许在给定的一组组件和操作中重复使用相同的注册表管理代码——只允许实体不同的实例化。

注册表(Registry)

注册表程序基本上是一个治理合约。它记录以下内容:

通过 Schema URL 注册的组件。

可以修改给定注册表实例的特定组件的已注册操作。

创建新注册表实例的能力。

例如,它可能规定只有管理员才能创建新的注册表实例,或者将该权限交给 DAO。

同样适用于用其注册的任何组件。例如,假设给定的游戏 X 中,存在一个移动操作,允许玩家以每秒1个格子的速度将棋子从一个格子移动到另一个格子。另一个团队来创建“Portals”,在这个注册表中允许更快的移动。要允许 Portals 操作能够修改单位上的“位置”组件,需要注册表的治理来投票决定是否允许这种规则的改变。例如,它们可能允许特定的注册表实例(你可以在“Portals Server”上使用它,但不能在“Hardcore Server”上使用)。

组件的更新权限在注册表这里,因为 Actions 只是向注册表提交其建议的更改,然后注册表检查治理,将更改提交给核心来修改实体。关键的是,Actions 不需要是链上游戏。它们可以是链下游戏基础设施,如预言机,向游戏 DAO 控制的链上资产层提交更改。

The Action Bundles

Actions 是链上或链下代码,具有以下能力:

读取实体 PDA 并反序列化它们认为有价值的组件。

修改并提交更改后的序列化组件(或一组组件)给到注册表,以便与实体一起更新。

特定于应用程序的 Actions 代码允许游戏的“分层”。例如,可能存在“目标:山丘之王(King of the Hill)”和“目标:击败(Kills)” 两个 Actions,可能可以玩三种游戏。可以实例化一个注册表实例,该实例仅允许第一个 Action、第二个 Action 或两者都处于活跃状态并允许对组件进行更改。

ARC 对链上游戏的帮助

对于 FOC 和 OCA 类型的游戏来说,ARC 具有几个优点,包括:

模式更改的同时,保持向后兼容性(Backwards compatibility)。

由于实体可以容纳动态组件,因此可以同时维护组件的v1和v2版本。

这允许旧应用程序可以进行查询,而不会丢失操作支持。

效率(Efficiency) - 由于实体的大小由它们所拥有的组件决定,因此它们的大小只有在需要时才会变大。

可重复性(Repeatability) - 由于基础实现非常简单,因此可以在各种生态系统中轻松使用相同的实现。

熟悉性(Familiarity) - Web2 游戏公司对这个框架也会更加熟悉。

模块化(Modularity) - 随着需求的变化,可以模块化地添加新的属性/行为。

可扩展性(Extensibility) - 链上资产层对于那些使用链上资产的混合游戏以及全链游戏(这些游戏可以读取和修改状态)都很有用。

跨链可访问性(Cross-chain accessibility) - 简单的跨链序列化框架和跨链身份框架可以简化应用程序向其他链的移植。接下来的文章中将详细介绍。

总结

总的来说,Action Registry Core 是一个用于管理游戏链上资产层的框架,支持全链游戏和利用链上资产的游戏。这种架构提供了可扩展性,随着游戏资产数量和相互依赖性的增加,可以避免面向对象编程方法可能带来的技术债务。在接下来的文章中,我们将深入探讨基于 ARC 的链上游戏后端的使用情况,并探索完成堆栈所需的其他基础设施。

作者:Dev Bharel & Shanav K Mehta

编译:Leia

“广东财经网”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与

我们联系删除或处理,客服邮箱1098101642@qq.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同

其观点或证实其内容的真实性。

  • 声音提醒
  • 60秒后自动更新
  • 【民政部回应何时恢复婚姻登记】民政部社会事务司二级巡视员杨宗涛表示,婚姻登记场所是人群聚集场所,部分地区暂停婚姻登记工作是对人民群众安全负责。未停止登记的地方推广用电话、网络、qq群预约登记,控制登记人数,分批分段登记,减少人员聚集和在登记机关停留时间。已停止婚姻登记地方将根据当地疫情控制情况逐渐恢复。

    15:54
  • 欧洲央行副行长金多斯:欧洲央行还没有达到逆转利率。宽松政策的副作用更明显了。

    15:54
  • 财经网站Forexlive分析师Justin Low评瑞士1月CPI月率:尽管通胀年率保持稳定,但核心通胀率有所下降,这一点令人更加担忧。这只是进一步巩固了瑞士央行维持现有货币政策不变,并可能在未来寻求更多宽松措施的观点。

    15:54
  • 【武汉两大批发市场商户开业率超过80%】商务部市场建设司司长朱小良10日称,目前武汉生活必需品供应基本正常,除冷鲜肉、鲜叶菜等少数品种存在结构性短缺外,大部分重要生活物资供应充足,未发生明显抢购或脱销断档情况。当地白沙洲和四季美两大批发市场正常营业,商户开业率超过80%,日交易量上升至3000吨以上。(国是直通车)

    15:53
  • 【日本2019年经常项目顺差增长4.4%】日本财务省10日发布的国际收支初步统计报告显示,主要受外国人入境游消费扩大影响,2019年日本经常项目顺差增长4.4%。报告显示,2019年日本经常项目顺差为20.06万亿日元(1美元约合109.8日元)。其中,商品贸易方面,由于液化天然气价格下跌等因素,进口下降5.6%至75.56万亿日元;由于汽车部件及钢铁等产品出口减少,出口下降6.3%至76.12万亿日元。货物贸易顺差减少53.8%,为5536亿日元。(新华社)

    15:53
  • 欧元兑美元EUR/USD短线波动不大,现报1.0952。

    15:53
  • 瑞士1月CPI年率:0.2%,前值:0.2%,预期:0.1%;瑞士1月CPI月率:-0.2%,前值:0%,预期:-0.2%。

    15:52
  • 英镑兑美元GBP/USD短线走低13点,现报1.2890。

    15:52
  • 【宁德时代“供电”国产特斯拉 有望拉低售价20%】全国乘联会秘书长崔东树分析认为,“随着特斯拉国产化率提升和产能爬坡,未来特斯拉国产车型的价格下探空间还是很大的。”他预计今年下半年,国产Model 3车型的售价就有望降至25万元,降幅接近20%。(新京报)

    15:51
  • 【内蒙古:对不裁员或少裁员企业返还上年度50%失业保险费】据内蒙古新型冠状病毒肺炎疫情防控工作指挥部消息,疫情期间,内蒙古对不裁员或少裁员的企业返还上年度实际缴纳失业保险费的50%,对面临暂时性经营困难的中小企业,返还标准提高到上年度6个月企业及其职工缴纳社会保险费的50%。

    15:51
  • 【商务部:2019年服务进出口总额54152.9亿元 同比增长2.8%】商务部新闻发言人表示,2019年,在服务贸易创新发展试点等政策的激励下,我国服务贸易总体保持平稳向上态势,逆差明显下降,结构显著优化,高质量发展成效初步显现。全年服务进出口总额54152.9亿元(人民币,下同),同比增长2.8%。其中,出口总额19564.0亿元,同比增长8.9%;进口总额34588.9亿元,同比减少0.4%。(第一财经)

    15:51
  • 【振华股份:疫情导致下游客户开工推迟 产品库存上升】振华化学公告,公司目前生产经营稳定,所有产能均正常开工,原材料采购能基本满足生产需要,由于疫情导致下游客户开工推迟,公司出货量减少,产品库存有所上升。公司将根据客户需求、疫情及市场变化,适度调整生产经营策略,尽可能保持生产经营的稳定。

    15:50
  • 环旭电子2月10日晚间公告,公司2020年1月合并营业收入为23.27亿元,较去年同期的合并营业收入减少27.83%,较2019年12月合并营业收入环比减少37.23%。

    15:49
  • 精测电子:与京东方集团签订了多份销售合同,合同累计金额达到6.96亿元。

    17:12
  • 华夏银行:银保监会同意本公司在全国银行间债券市场发行不超过100亿元人民币的金融债券,募集资金全部用于绿色信贷。

    17:03