32 lines
3.4 KiB
Markdown
32 lines
3.4 KiB
Markdown
# projects/ —— 旧版 HTML5 前端
|
||
|
||
## 前端模板 Game_Surface_3 与子游戏
|
||
|
||
**四层结构(自底向上):**
|
||
1. **引擎层** —— `js/gameabc.min.js`(gameabc 精灵引擎)+ Spine(`spine-canvas.js` / `SpineMgr.js`)+ Canvas 渲染;提供触屏/定时器/资源/WebSocket 底层回调。
|
||
2. **桥接层** —— `js/gamemain.js`:统一事件总线,把引擎回调分发到平台 UI、子游戏 `Game_Modify`、对战逻辑。
|
||
3. **平台层** —— `js/00_Surface/*`(12 个文件):登录、大厅、房间、聊天、社交、网络、资源、排行、任务等通用能力。**子游戏间几乎不变**。
|
||
4. **子游戏层** —— `js/01_SubGame/*`(3 个文件):只实现本游戏的对局逻辑与房间 UI。
|
||
|
||
**平台层关键文件(`js/00_Surface/`):** `02_Const.js`(`ConstVal`/`AppList`/路由表)、`04_Data.js`(`GameData` 全局态)、`09_Net.js`(`Net._SendData()` 收发分发)、`12_Logic.js`(`Logic` 连接/重连/分发编排)、`07_Desk.js`(`Desk` 房间状态机)、`06_Player.js`(`C_Player`/`Player` 数据结构)、`11_GameUI.js`(平台 UI)、`00_minhttp.js`(WebSocket 底层封装)。
|
||
|
||
**子游戏层(`js/01_SubGame/`,开发子游戏 = 改这 3 个文件 + 美术数据):**
|
||
- `00_SubGame_Config.js` —— `Game_Config`(房间数、气泡位置、分享、调试开关)
|
||
- `01_SubGame_modify.js` —— `Game_Modify` / `gameCombat`(对局实现 + 房间/胜负 UI)
|
||
- `02_SubGame_Input.js` —— 平台回调钩子(模板里是桩,子游戏覆写为真实逻辑)
|
||
- 另需补充:`gamemain.js`(扩展对局初始化)、专用算法模块(牌型/出牌等)、美术数据 `output/gameabc_data.min.js`。
|
||
|
||
**状态归属:** 平台层维护 `Desk`(房间/座位)、`C_Player`(自己)、`GameData`(连接/资产);子游戏维护对局态(手牌、出牌历史、轮次、分数)于自身命名空间,并需可序列化为 `deskinfo` 以支持断线重连。
|
||
|
||
## Cocos 迁移工作台:场景/资源创建与保存走 MCP(不要用户手动保存)
|
||
|
||
> 迁移到 `cocoscreator_projects/YouleNexus` 期间踩过的坑,供后续在此工作区操作时参考。
|
||
|
||
**场景与资源(`.scene` / `.prefab` / `.anim` / `.meta`)的创建和保存必须由 Claude 通过 MCP 工具完成,全程不要求用户手动 Ctrl+S。** 否则编辑器重启后,停留在临时场景 `scene-2d` 上建的内容全部丢失。
|
||
|
||
- **先建场景再建内容**:用 `cocos_scene { action: "create", sceneName: "Xxx", savePath: "db://assets/scenes" }` 建新场景(自动建 Camera + Canvas 并打开),再在其 Canvas 下建节点 / 实例化 prefab。有 `db://` 路径的场景才能登记进 build settings、被 content 模式截图、并随工程持久化。
|
||
- **保存当前场景**:`cocos_scene { action: "save" }`(无参数,保存到当前场景已有路径)。`save` 不接受 `savePath`/`sceneName`,带了不生效——曾误以为 `save` 能另存为,结果返回 success 却没落盘。
|
||
- **打开已有场景**:`cocos_scene { action: "open", scenePath: "db://assets/scenes/Xxx.scene" }`。
|
||
- **实例化 prefab**:`cocos_prefab { action: "instantiate", prefabPath: "db://.../X.prefab", parent: "Canvas" }`。
|
||
- 编辑 prefab 用 `cocos_prefab` 的 `edit_enter` → 改组件 → `edit_save` → `edit_exit`,改完必须 `edit_exit` 回到场景,别停在 prefab 编辑态。
|