hy-farm/docs/godot-development-standards.md
2026-05-29 19:54:56 +08:00

3.9 KiB
Raw Permalink Blame History

Godot 开发规范

1. 资料优先级

  1. Godot 4.6 官方文档和类参考。
  2. Godot 官方 GitHub Release、官方 godot-builds Release。
  3. 原项目本地资源、EXML、PHP/Yii 接口和数据库。
  4. 官方没有覆盖时,再查 GitHub/Godot Asset Library/社区资料,并在文档中记录来源。

2. 引擎和语言

  • 固定使用 Godot 4.6.2 stable。
  • 使用非 .NET 版本。
  • 只写 GDScript不引入 C#。
  • Web 渲染路径使用 Compatibility。
  • Web 导出默认单线程。
  • Web 导出预设中 vram_texture_compression/for_mobile 默认保持 false,除非先启用并验证 ETC2/ASTC 导入设置。

3. 命名

遵循 Godot 官方 GDScript 风格指南:

  • 文件名:snake_case.gdsnake_case.tscn
  • 类名:PascalCase
  • 函数和变量:snake_case
  • 常量:ALL_CAPS
  • 信号:过去式或事件语义,例如 login_completedinventory_changed

4. 代码规则

  • 优先静态类型标注:var name: Stringfunc load_user() -> void
  • 使用 andornot,不用 &&||!
  • 每个脚本只承担一个清晰职责。
  • UI 节点脚本不直接拼后端 URL不直接解析复杂业务规则。
  • 网络请求统一从 ApiClient 发出。
  • 配置项统一放 project.godot 或后续独立配置资源。
  • 不在脚本里硬编码大量资源路径;临时路径必须在迁移文档里登记。

5. 场景规则

  • UI 以完全一致为验收标准,不接受只“差不多”的重构。
  • 每个页面必须先保存白鹭基准截图,再保存 Godot 同分辨率截图,并记录差异。
  • 白鹭页面存在多个 canvas 时,实际游戏画布以最后一个 canvas 为准;旧登录页当前实测实际 canvas 为 480 x 960
  • 白鹭源 EXML 和编译后 default.thm_*.js 不一致时,以线上运行时编译皮肤和截图为准。
  • 每个可复用 UI 面板都是独立 .tscn
  • 页面入口放在 scenes/ui
  • 运行入口只做场景装配,不写业务规则。
  • 能用 Control 完成的 UI 不用 Node2D
  • Egret scale9Grid 必须迁移为 Godot NinePatchRect,不能直接用普通 TextureRect 拉伸。
  • 使用 640 x 960 作为当前登录页基准,后续如确认线上实际为 640 x 1136再统一调整。

6. 资源规则

  • Egret 原资源先保存在 assets/egret 作为迁移输入。
  • Godot 可运行资源逐步转入 Godot 原生资源格式。
  • 图集转换要保留原 Egret 资源名,避免 UI 绑定丢失。
  • 字体授权未确认前,不把字体作为最终发布依赖。

7. Web 规则

  • Web 构建必须使用 index.html 作为入口文件名。
  • Web 导出的 HTML shell 必须保持旧 H5 的可见容器规则;当前登录页是 max-width: 480px; height: 100vh; background: #000
  • 所有 HTTP 接口必须支持 HTTPS 和 CORS。
  • 不使用原生 TCP/UDP。
  • 需要浏览器能力时优先查 JavaScriptBridge 官方文档。
  • 广告、统计、平台 SDK 通过 JavaScriptBridge 做薄封装,不污染核心玩法代码。

8. 验证规则

每次修改至少做对应验证:

  • 改 GDScript执行 --check-only --script
  • 改资源或场景:执行 --import --quit
  • 改 Web/平台相关:执行 Web 导出。
  • 改 Web 导出预设:同时验证 index.htmlindex.wasmindex.pck 能通过本地 HTTP 服务访问。
  • 改 UI用 Godot 或浏览器截图和 Egret 基准截图对比。
  • UI 对比命令:NODE_PATH=/tmp/farm3-playwright/node_modules node tools/compare_ui_baseline.mjs <egret.png> <godot.png> <diff.png>
  • 改网络:保存请求路径、请求参数、响应码、响应体摘要。

9. 第三方工具规则

  • 官方 API 能解决时不引第三方。
  • 官方没有 GDScript 游戏单元测试框架,后续需要自动化测试时优先评估 GUT 9.6.0。
  • 引入第三方前必须记录版本、来源、许可证、Godot 兼容版本和替代方案。