原文:《 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 并构建您自己的游戏!





