这个项目能做什么
World Engine 被描述为构建于 Argus Labs 分片 rollup 架构之上的链上游戏引擎和 Gamechain SDK。README 指出该项目仍在开发中,正在从头重写,因此当前仓库主要是开发脚手架,而非完成的引擎。
开发环境搭建以 proto 和 moon 为核心。安装 proto 后,在仓库根目录运行 `proto install` 会安装 `.prototools` 中固定的 Go 和 moon 版本;proto 的 shim 必须保留在 PATH 中,以便 `go` 和 `moon` 解析到这些版本。
常用任务通过 moon 暴露:
- `moon tasks` 列出项目任务。
- `moon run world-engine:build` 构建 Go 包。
- `moon run world-engine:lint` 执行 lint 并安装固定版本的 linter。
- `moon run world-engine:lint-fix` 应用 lint 修复。
- `moon run world-engine:test` 运行所有 Go 测试。
- `moon run world-engine:test-ci` 写入 coverage.out 和 junit.xml。
- `TEST_SEED=123 moon run world-engine:test` 重放测试种子。
golangci-lint 安装到被忽略的 `bin/tools` 目录,gotestsum 通过 `go tool` 运行。失败的测试会记录一个种子以便复现。Moon 任务缓存被禁用,因此随机化测试每次都会运行,而 Go 自身的编译和测试缓存保持启用。
生成的客户端是独立的项目。`moon run proto-csharp:build` 或 `proto-csharp:pack` 构建或打包 C# 客户端,需要 .NET SDK;调试变体使用 `build-debug` 和 `pack-debug`。`moon run proto-ts:build` 对 TypeScript 客户端进行类型检查,需要 Node/npm,并事先在 `proto/gen/ts` 中执行 `npm install`。
Moon 取代了之前的 Taskfiles。任务名称使用连字符,因此 `test:ci` 变为 `world-engine:test-ci`。C# 的 `rebuild` 任务在构建前先清理,`update` 报告过时的依赖但不做更改。格式化和分析失败会传播给调用方。
CI 运行与本地开发相同的 Go 任务。Box2D 工作流保留自己的架构矩阵和显式的 `determinism-*` 目标。工作流选择显式目标而非 `moon ci`,将昂贵的确定性检查保留在专用矩阵中。生成的客户端可以在安装了相应 SDK 的 runner 上显式选择,清理和格式化从不自动运行。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。