Files

32 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 编辑态。