# Dojo开发的基本逻辑 **Published by:** [FunBlocks](https://paragraph.com/@funblocks/) **Published on:** 2023-04-05 **URL:** https://paragraph.com/@funblocks/dojo-2 ## Content 原文链接: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 ## Publication Information - [FunBlocks](https://paragraph.com/@funblocks/): Publication homepage - [All Posts](https://paragraph.com/@funblocks/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@funblocks): Subscribe to updates - [Twitter](https://twitter.com/0xFunBlocksCN): Follow on Twitter