原文:《在隋身上构建Capy原型》
作者:艾伦
在这个去中心化的游戏中,玩家购买、交易、繁殖和装饰可爱的南美半水栖啮齿动物水豚。Sui开发人员可以将这里概述的许多原则和代码示例应用到他们自己的项目中。
作为Sui区块链上的可编程对象,Capys展示了资产所有权、可转让性和动态对象域的原则。它们和配饰一起出现在玩家的钱包里,包括帽子、自行车和围巾。要立即预览Capy,请访问Capy.art使用Sui Move开发Sui Capys需要定义基本模块,创建类型,最重要的是,建立一个注册表来记录和验证capy。该原型的一个独特功能是,它可以根据繁殖对的特点,繁殖现有的两只小水豚,生成一只全新的小水豚。重申一下,这是一个开发者预览版,展示Sui的独特之处,供开发者在构建自己的项目时参考。Capys非卖品。
放弃
这个DApp目前被认为是早期的阿尔法,所以它的风格边缘可能有点粗糙。
dApp运行在Sui的开发网络中,没有主网的成熟性和稳定性。
在使用Capys时,隋钱包的交易历史中有一个已知错误。我们将在下周发送一个钱包修复程序来解决这个问题。
我们计划在不久的将来将Capy.art更新为钱包适配器的标准。
Sui Capys是一个致力于激励我们的开发人员社区的演示。这不是空 vote。请负责任地使用水龙头,不要向我们的Devnet水龙头发送垃圾邮件。
Capy架构Capy应用(Github)由三个模块组成:Capy、capy_items和capy_market。这些模块定义了Capys、附件和交易机制。在开发过程中,我们首先定义了一些特定的原则,以使原型令人愉快并具有功能性。
以下原则有助于确定体系结构和实施:
Capys应可自由转让,并可用于任何链应用。
类型应该包含最少量的数据以保持性能。
事件可用于发出静态数据,这些数据可由索引器获取。
原型应该是可扩展的,因此您可以在以后添加新的属性。
想要在Sui上构建游戏和应用的开发者应该从定义这些核心概念开始,这些核心概念将指导开发过程。
Capy CoreCapy模块定义了Sui Capys的核心功能:它定义了一个Capy类型,并授予发布者一个CapyManagerCap来为运营商开放管理功能。它定义了CapyRegistry,集中的原型状态,及其演变。
类型:CapyCapy是应用程序的主要类型,它是一个具有已定义属性集的自有对象。32个基因和原型特征所需的额外实用信息。Capy有两个能力,钥匙和储存。前者使其成为自有资产,后者允许自由转让和打包。
gen属性标志着Capy的生成。第一代Capy的基因为gen 0;;较新的品种有父母的基因加1作为gen1,所以有gen1,gen2等等。
src属性使资源管理器能够显示图像。Capys本身并不存储他们的完整图像,因为它是动态的,可以在添加新项目时进行更改。
“基因”属性存储基因序列,这是一个32字节的向量,用于在繁殖期间计算属性并为新生儿选择基因。
Item_count是一个实用属性,用于跟踪每个Capy附带的对象数量。
属性属性存储育种过程中生成的人类可读属性。比如{ " name & # 8221: “模式& # 8221;, “价值& # 8221;: “熊猫& # 8221;}。
这组字段是Sui Capys功能的最低要求,包括育种或添加/删除项目。
类型:Capy注册表(Capy Registry)是一个用于育种的共享对象,它存储了已经出生的Capy的总数,并包含一个伪随机种子,这在下面的基因科学部分有所描述,用于育种过程中的基因选择。它包含在繁殖阶段分配给新生儿的所有属性定义。
可以向原型添加新属性,如下面的管理功能部分所述:
类型:capymanager capymanager cap是模块发布时发送给模块发布者(发布事务的发送方)的函数。它授权所有模块的管理行为,包括capy_items和capy_market。
InitializerCapys是一个独立的(非通用的)应用程序,因此它的主要逻辑可以在模块初始化期间启动。init函数做以下两件事:
创建一个CapyManagerCap并将其发送给模块发布者。
创建并共享CapyRegistry。
管理功能为了使应用程序可玩且有意义,管理员必须执行一系列操作:
add_gene函数在CapyRegistry中注册一个新的GeneDefinition。在育种过程中,注册表中的所有现有属性都被分配给新的Capy。如果一个新的GeneDefinition(属性)被添加到原型中,在此添加之前出生的Capy不会得到它,但他们的孩子会得到它。每个基因定义都有一个名称和一组选择器来选择每个属性的值。
批量功能允许批量创建带有预定义基因的Capys。它用于在后期为新用户初始化和填写更多Capys市场交易。
繁殖创造不可预测性和帮助原型进化的主要逻辑是capy::breed函数。任何有两张卡的玩家都可以执行这个功能。该功能的逻辑如下:
根据CapyRegistry。Capy_hash,选择新Capy的父基因。
从CapyRegistry获取当前GeneDefinitions的列表并设置属性。
用新的Capy数据发出事件。
返回一个新的Capy(使用breed_and_keep发送给发送者)。
在进入应用程序最有趣的部分之前,我们必须注意,这种解决方案不能提供绝对的不可预测性,因此不应该在高风险的应用程序中使用。但是它确实通过将用户输入变成一个伪随机修改器而产生了一定程度的随机性。
这个原型的一个非常有趣和独特的功能是能够复制两个现有的kabi来产生第三个。新的Capy将继承其父母的特点。生殖功能需要双亲,Capys,计算新生儿的基因。为了使这个动作公平和随机,我们需要一个选择算法和一个种子。CapyRegistry提供种子(存储为capy_hash)并在每次复制后更新它们。算法如下:
使用哈希函数(sha3_256)三次加盐生成三个32字节的向量(标记为A、B、C),这些向量来自capy_hash。
第一个载体(a)用于亲本基因选择。如果第n个字节的值超过126,则选择第一个父代的基因。否则,选择第二个亲本的基因。如上所示,第一个基因将是P2,第二个P1,第三个P2和第四个P1将再次出现(直到N=32)。
第二个向量(b)定义了突变的机会。如果位置n的值超过250,则使用第三个向量(c)中的相同位置来选择突变值。在这个例子中,第三个基因将发生突变,其值将为42。
Capy Items,一个非常简单的模块,定义了每个Capy可以添加的可穿戴物品,以及我们如何实现前端展示。该项目只能由Capy管理员添加,因为它需要CapyManagerCap的授权。
在Capys中添加和删除附件时,管理项目使用动态对象字段,这是Sui中替换父子对象更有效、更方便的方法。动态字段允许任意命名,可以立即添加和删除。以下代码向Capy添加一个项目。
Capy市场为了收购和销售Capy和CapyItems,我们创建了Capy市场。该模块使用动态对象字段,并锁定支付价格后可以获得的项目。在此市场结构中,每个项目类型都有一个市场对象(Capymarket Sellscapys而另一个不同的对象,Capymarket,Sellscapy accessories),列表作为动态对象字段附加到市场,而列出的对象附加到列表。
+–& gt清单& # 8211;& gtTCapyMarket+& # 8211;& gt清单& # 8211;& gtt+& # 8211;& gt清单& # 8211;& gtT
市场和列表功能
每个Marketplace实例只服务一种类型。在这个应用程序中,一个Marketplace实例以Capy类型存在,另一个以CapyItem类型存在。
列表函数使用动态字段。它使列出的项目成为列表的一个字段,然后使列表成为CapyMarket的一个列表字段。
Capy Inspiration创建Capy原型来展示Sui的一些关键特性,并在他们自己的项目中激励开发人员。Capy利用了Sui的面向对象特性,允许玩家交易购买便携配件,并根据父母的属性生成新的Capy。我们设计的原型可以无限扩展,所以会让用户和开发者都很开心。
我们希望这里的例子和代码对Sui的开发者有所帮助。几个突出的实施包括Capy市场,配件和育种。Capy市场可以作为任何交易或存储机制的模型。配件展示了动态字段的良好使用。育种提供了一种独特的方式来自动生成具有无限应用的新对象。
温馨提示:注:内容来源均采集于互联网,不要轻信任何,后果自负,本站不承担任何责任。若本站收录的信息无意侵犯了贵司版权,请给我们来信(j7hr0a@163.com),我们会及时处理和回复。
原文地址"capwap建立需经历六个过程,capwap建立过程":http://www.guoyinggangguan.com/qkl/179502.html。
微信扫描二维码关注官方微信
▲长按图片识别二维码