Dojo开发的基本逻辑
在过去的几个月里,我们一直在埋头构建@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 )
想了解更多?
Discord:https://discord.com/invite/vUN4Xq9Qv6
感谢@sylvechv @lordOfAFew @broody_eth @JunichiSugiura @shrameetweets @eniwhere_ @Cheelax_和许多其他推动生态系统发展的优秀贡献者!
关于我们:
FunBlocks是一家聚焦区块链游戏最新发展动态的媒体,重点关注全链游戏(Fully On-Chain Game)领域的前沿进展。我们相信为玩家创造快乐才是区块链游戏发展的方向!
Mirror:https://mirror.xyz/0x949B1fE8B1860E51fa550131EB0F21729cA68A1A