元宇宙NFT链游系统开发DAPP技术方案分析

简介: 元宇宙NFT链游系统开发DAPP技术方案分析

链游就是指区块链技术上运作的手机游戏,使游戏玩家第一次变成手机游戏真正的主人。游戏玩家在游戏里面所具备的的武器装备是可以随意交易的NFT,不会受到游戏开发商的操纵。别的游戏开发商可以对于游戏玩家的NFT搭建新的游戏。假如之前的游戏软件开发得不太好,游戏玩家可以将NFT取得新的游戏里玩儿。我们团队针对区块链游戏这块在很早的时候已经开始布局。当下来讲的话链游开发技术在同行中来讲算是先行者了。

从上面看我们的结构的项目,我们可以推断出以下类型:

[u8; 16] dna- 使用 16 个字节来表示小猫的 DNA。
BalanceOf price- 使用 FRAME 的自定义类型Currencytrait.
性别 gender- 我们将创建!
首先,我们需要在声明结构之前添加自定义类型BalanceOf和AccountOf。将操作 #1 替换为以下代码段:

type AccountOf = ::AccountId;
type BalanceOf =

<<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance;

// Struct for holding Kitty information.

[derive(Clone, Encode, Decode, PartialEq, RuntimeDebug, TypeInfo, MaxEncodedLen)]

[scale_info(skip_type_params(T))]

[codec(mel_bound())]

pub struct Kitty<T: Config> {

pub dna: [u8; 16],
pub price: Option<BalanceOf<T>>,
pub gender: Gender,
pub owner: AccountOf<T>,

}
复制
请注意我们如何使用derive宏来包含各种辅助traits用到我们的结构中。我们需要添加TypeInfo,以便让我们的结构访问此特征。在pallet顶部添加以下行:

use scale_info::TypeInfo;
复制
对于Gender类型 ,我们需要构建自己的自定义枚举和帮助程序函数。

编写自定义类型Gender
我们刚刚创建了一个结构名为Gender,此类型将处理我们定义的Kitty 性别的枚举。要创建它,您将构建以下部分:

枚举声明,指定 Male和Female
为我们的 Kitty 结构实现一个帮助程序函数。
声明自定义枚举

将 ACTION 项 #2 替换为以下枚举声明:

[derive(Clone, Encode, Decode, PartialEq, RuntimeDebug, TypeInfo, MaxEncodedLen)]

[cfg_attr(feature = "std", derive(Serialize, Deserialize))]

pub enum Gender {

Male,
Female,

}
复制
注意derive宏必须在枚举声明之前使用。包裹着我们枚举的数据结构,需要与runtime中的其他类型进行交互。为了使用Serialize和Deserialize,需要将serde添加到pallets/kitties/Cargo.toml中。目前,我们知道如何创建自定义结构。但是,为Kitty结构提供一种分配性别的方法呢?为此,我们需要再学习一件事。

为我们的 Kitty 结构实现帮助程序函数

配置结构对于在结构中预定义值非常有用。例如,当设置与另一个函数返回的值相关的值时。在我们的例子中,我们有一个类似的情况,我们需要以一种根据Kitty的DNA设置的方式配置我们的Kitty的Gender。

我们只会在creating Kittes用到这个函数。我们将创建一个名为gen_gender的公共函数,该函数返回类型Gender并使用随机函数在Gender枚举值之间进行选择。

将 ACTION #4 替换为以下代码段:

fn gen_gender() -> Gender {

let random = T::KittyRandomness::random(&b"gender"[..]).0;
match random.as_ref()[0] % 2 {
    0 => Gender::Male,
    _ => Gender::Female,
}

}

相关文章
在钉钉开放平台中,事件订阅功能允许你的应用订阅钉钉的各种事件
在钉钉开放平台中,事件订阅功能允许你的应用订阅钉钉的各种事件【1月更文挑战第9天】【1月更文挑战第44篇】
520 2
|
Web App开发 前端开发 Java
Apache Zeppelin系列教程第二篇——整体架构
Apache Zeppelin系列教程第二篇——整体架构
364 0
|
数据可视化 数据挖掘 调度
【Python数据挖掘】优化电能能源策略:基于非侵入式负荷检测与分解的智能解决方案
【Python数据挖掘】优化电能能源策略:基于非侵入式负荷检测与分解的智能解决方案
275 0
|
9月前
|
存储 编解码 算法
3D-Genome | TAD调用之TopDom
3D-Genome | TAD调用之TopDom
3D-Genome | TAD调用之TopDom
|
9月前
|
存储 数据采集 人工智能
《从0到1:DataWorks搭建人工智能数据湖技术要点全解析》
在数字化转型中,数据成为企业创新的核心动力。阿里巴巴的DataWorks凭借强大的数据集成、开发、治理和运维能力,助力搭建人工智能数据湖。关键要点包括:1) 数据集成:打通多源数据流通,确保实时性和准确性;2) 数据存储与管理:分层存储,优化性能与成本;3) 数据预处理:清洗、转换、规约,提升AI模型训练效果;4) 数据安全与权限管理:加密、访问控制,保障数据安全;5) AI模型开发与应用:支持智能推荐、风险预测等场景,释放数据价值。通过这些技术要点,构建高效、可靠、安全的人工智能数据湖,推动企业数字化转型。
351 4
|
NoSQL Ubuntu 安全
在Ubuntu 18.04上安装和保护Redis的方法
在Ubuntu 18.04上安装和保护Redis的方法
341 0
|
Rust 数据安全/隐私保护 Android开发
Star 50.3k!超棒的国产远程桌面开源应用火了!
Star 50.3k!超棒的国产远程桌面开源应用火了!
631 0
Star 50.3k!超棒的国产远程桌面开源应用火了!
|
SQL 关系型数据库 数据库
在 Postgres 中使用子查询
【8月更文挑战第11天】
531 1
在 Postgres 中使用子查询
【科研技巧】Mac系统如何给Endnote 20安装GB/T中文文献格式以及利用Endnote在Word中插入参考文献
在Mac系统下给Endnote 20安装GB/T中文文献格式的步骤以及如何利用Endnote在Word中插入符合GB/T格式的参考文献。
1138 5
【科研技巧】Mac系统如何给Endnote 20安装GB/T中文文献格式以及利用Endnote在Word中插入参考文献
|
敏捷开发 数据可视化 数据挖掘
哪些OA任务管理系统值得推荐?4款高效办公工具介绍
在现代企业中,OA(办公自动化)任务管理系统是提升工作效率和团队协作的关键工具。本文介绍了4款备受推崇的OA任务管理系统:板栗看板、Trello、Asana和Monday.com,分别从提高工作效率、增强团队协作、优化资源分配和提升工作质量等方面进行了详细说明,为用户提供全面的参考和选择指南。