如何组织你的游戏工程
在游戏开发的世界中,项目管理和代码组织是非常关键的一环。本教程旨在介绍如何使用 Dora SSR 开源游戏引擎来组织和管理游戏项目工程目录。
1. 了解 Dora SSR 的项目管理机制
Dora SSR 引擎采用基于文件目录的方式来管理游戏项目。在这种结构中,任何包含名为 init
的文件的目录都会自动被识别为游戏工程的根目录。这个 init
文件的扩展名可以是 .yue
、.lua
、.ts
、.tsx
、.tl
或 .wasm
。
2. 游戏工程目录的识别
当使用 Dora SSR 的 Web IDE 开发时,如果打开任何代码文件进行预览或编辑,并执行项目运行操作,IDE 将自动从当前打开文件的目录开始向上搜索,直到找到包含 init
文件的根目录。游戏的运行测试将从这个 init
文件启动。
3. 工程目录组织建议
为了更加标准化地组织自己的游戏工程,建议(并非强制要求)按以下方式组织游戏项目目录:
- 游戏项目根目录
- Audio:用于存放游戏音频资源。
- Data:用于存放静态的游戏数据文件如Excel表格,脚本编写的配置表等。
- Font:用于存放游戏的字库文件资源。
- Image:用于存放游戏图片资源。
- Script:存放脚本文件,如 Lua、YueScript 、 Teal 或是 TS 代码。
- Spine:用于存放游戏动画资源。
- init.yue | lua | tl | ts | tsx | wasm:项目启动文件,根据使用的脚本语言选择合适的扩展名。
这种结构不仅清晰,也便于管理和维护。
4. 代码模块的搜索路径
在编写 Lua、YueScript、Teal 和 TypeScript 代码时,如果需要导入外部模块,Dora SSR 引擎运行时和 Web IDE 将按以下顺序搜索代码模块:
- 游戏项目根目录/Script
- 游戏项目根目录
- 引擎内置资源根目录/Script/Lib
- 引擎内置资源根目录/Script/Lib/Dora/zh-Hans
- 引擎内置资源根目录
其中,对 序号3 的搜索路径的使用请确认已经了解了 Dora SSR 提供的开发辅助的功能库的使用,序号4 的搜索路径主要是用于给多种静态类型的脚本语言提供 Dora SSR 引擎接口的类型定义文件。请确保你的模块存放路径符合上述搜索逻辑,以便在项目中无缝使用。
模块导入示例
project/
├── init.lua
└── Script/
├── moduleA.lua
└── moduleB.lua
- Lua
- Teal
- TypeScript
- YueScript
init.lua
-- 导入本地模块
local moduleA = require("moduleA") -- 使用了`序号1`的搜索路径: project/Script/moduleA.lua
local moduleB = require("Script.moduleB") -- 使用了`序号2`的搜索路径: project/Script/moduleB.lua
-- 导入引擎内置模块
local Utils = require("Utils") -- 使用了`序号3`的搜索路径: 引擎内置资源根目录/Script/Lib/Utils.lua
init.tl
-- 导入本地模块
local moduleA = require("moduleA") -- 使用了`序号1`的搜索路径: project/Script/moduleA.lua
local moduleB = require("Script.moduleB") -- 使用了`序号2`的搜索路径: project/Script/moduleB.lua
-- 导入引擎内置模块
local Utils = require("Utils") -- 使用了`序号3`的搜索路径: 引擎内置资源根目录/Script/Lib/Utils.lua
init.ts
// 导入本地模块
import moduleA from "moduleA"; // 使用了`序号1`的搜索路径: project/Script/moduleA.ts
import moduleB from "Script/moduleB"; // 使用了`序号2`的搜索路径: project/Script/moduleB.ts
// 导入引擎内置模块
import * as Utils from "Utils"; // 使用了`序号3`的搜索路径: 引擎内置资源根目录/Script/Lib/Utils.lua
init.yue
-- 导入本地模块
import "moduleA" -- 使用了`序号1`的搜索路径: project/Script/moduleA.yue
import "Script.moduleB" -- 使用了`序号2`的搜索路径: project/Script/moduleB.yue
-- 导入引擎内置模块
local Utils = require("Utils") -- 使用了`序号3`的搜索路径: 引擎内置资源根目录/Script/Lib/Utils.lua
5. 最佳实践
- 保持代码和资源的组织清晰,有助于团队协作和项目维护。
- 利用 Dora SSR Web IDE 的代码检查的功能来即时看到代码模块导入生效的效果。
- 检查项目目录下是否存在正确命名的
init
文件,确保项目能被正确加载和运行。
通过遵循这些指南,你可以有效地管理和运行你的游戏项目,祝你利用 Dora SSR 引擎的强大功能,创作出引人入胜的游戏体验。