Dojo开发的基本逻辑

原文链接: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

Mirrorhttps://mirror.xyz/0x949B1fE8B1860E51fa550131EB0F21729cA68A1A

Subscribe to FunBlocks
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.