原文:《RPG Building Basics - Encode Club Sui Series #5》by SUI Foundation
编译:SUI World
Sui Foundation 与 Encode Club 合作提供了系列以开发者为中心的教育视频,本系列视频共计六则,范围从 Sui 的基础知识到构建智能合约和使用 Sui Move 中的对象的教程。往期视频参照SUI World 推文。
本教程将给我们展示如何为角色扮演游戏 (RPG) 创建角色和道具,以及如何让它们互动,千万不要错过!详情点击「阅读原文」查看视频。
学习亮点
由于 Sui Move 的以对象为中心的编程模型及其可扩展性,Sui 有望成为第一个真正将 web2 体验交付到 web3 的区块链,这种体验包括游戏,游戏的编程本质上都很复杂,并且需要强大的基础设施来确保玩家的无缝体验。得益于Sui Move 的以对象为中心的编程模型及其可扩展性,Sui 能够应对挑战。
让我们看一下 Sui Move 中链上 RPG 的编码示例。以下示例改编自 Sam Blackshear 的 hero.move 代码。
https://github.com/MystenLabs/sui/blob/main/sui_programmability/examples/games/sources/hero.move?ref=blog.suifoundation.org
上面的代码定义了我们的可玩角色。从它的领域可以看出,这个英雄可以与角色扮演游戏中的其他角色相媲美,它具有生命值 (HP)、经验和库存。
上面的代码展示了我们英雄的剑,请注意,这把剑具有钥匙和存储能力。回顾一下本系列之前的课程,key 意味着它是一种可拥有的资产,可以存在于顶级存储中。此类别中的 Move 对象也可以从外部 API 访问,从而创造了 Sui 在多个游戏中使用项目的独特可能性。而存储意味着这个对象是可以自由包装和转移的。
上面,我们在游戏中定义了野猪、不可玩角色 (NPC) 或敌人,与该类型的其他游戏类似,我们可以为我们的英雄创建 NPC 来战斗和获得经验,或者购买物品和接受任务。
The Action
上面代码中显示的动作描述了slay函数。在高层次上,这个函数首先检查以确保Hero和Boar都属于同一个游戏实例。然后英雄和野猪之间的决斗发生,检查以确保英雄的HP不能达到零。决斗结束后,英雄获得与野猪成比例的经验值,英雄的剑的力量增加1(如果英雄使用剑)。最后,该函数发出一个事件BoarSlayEvent。Sui Move中的事件让索引器跟踪链上的动作,这是实现普遍认可的对象状态的重要手段。
上面的代码示例简要摘录了 Sam 的 hero.move 代码。此代码为 Sui 上的游戏开发者提供了宝贵的示例,并且由于它是开源的,请随时 Fork 并构建您自己的游戏!