查看原文
其他

Dojo开发的基本逻辑

FunBlocks FunBlocks
2024-08-25
原文链接:https://twitter.com/tarrenceva/status/1642201057689473030
原文作者:@tarrenceva


在过去的几个月里,我们一直在埋头构建@dojostarknet,一个用于在Starknet上开发自主世界的引擎。

Dojo是一个框架,它简化了创建、管理和扩展不断增长的、完全链上的自主世界的过程。

首先,我们来介绍一些背景:

两年多以前,我们开始在Starknet上构建名为“Roll Your Own”自主世界:一个由@eth_worm发起的@TheDopeWars开放宇宙项目(GitHub:https://github.com/dopedao/RYO)

从那时起,自主世界的概念取得了显著的进展,很大程度上要归功于@latticexyz团队和MUD.dev框架。

同时,许多团队也在Starknet上开拓自主世界的概念:@cartridge_gg, @topology_gg, @LootRealms, @briqNFT, 和 @influenceth。到目前为止,他们大多独立进行开发,缺乏共享的标准和公共资源。

现在随着Cairo 1.0的推出,智能合约开发迎来了巨大的进步,Starknet生态系统正在经历重生。

作为重生的一部分,Starknet上的所有合约都需要用Cairo 1.0重写,这为协作、经验整合与构建一个强大的Starknet链上游戏开发工具套件提供了绝佳的机会。

⛩️Dojo在@sylvechv @lordOfAFew的提议下诞生⛩️

Dojo利用Cairo 1.0、一个实体-组件系统(entity-component system)和钻石模式(diamond pattern:一种编程设计模式,用于解决多重继承中的菱形问题),为自主世界提供了一个模块化、可扩展的基础。

在Dojo中,World Contract是世界的核心,维护着所有的状态,执行访问控制,并提供了一个接口,用于安装新的组件和系统,以扩展这个宇宙。利用Cairo 1.0语言插件,Dojo提供了一种简单而简洁的语法来定义世界的模块。

例如,一个描述World状态的一部分的组件(component),是一个简单的struct:

Systems是一些简单的函数,定义了World中的状态转换。这里有一个使用set命令来生成一个新玩家的例子。

commands api提供了一种简单而强大的方式来与World交互,使开发者能够轻松地写入和读取状态,并执行函数。

此外, Dojo提供或正在开发的内容包括:

  • 实时状态索引+与mud栈的兼容

  • 在starknet上的高吞吐量Layer 3🤫

  • 通过客户端证明的隐私信息

  • 链下状态通道(Offchain state channels)

  • 类型绑定生成(Typed bindings generation )


想了解更多?

Join us:dojoengine.org
Github:github.com/dojoengine/dojo

Discord:https://discord.com/invite/vUN4Xq9Qv6

感谢@sylvechv @lordOfAFew @broody_eth @JunichiSugiura @shrameetweets @eniwhere_ @Cheelax_和许多其他推动生态系统发展的优秀贡献者!


联系译者

关于我们:

FunBlocks是一家聚焦区块链游戏最新发展动态的媒体,重点关注全链游戏(Fully On-Chain Game)领域的前沿进展。我们相信为玩家创造快乐才是区块链游戏发展的方向!

推特:https://twitter.com/FunBlocksFun

Mirror:https://mirror.xyz/0x949B1fE8B1860E51fa550131EB0F21729cA68A1A

继续滑动看下一个
FunBlocks
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存