Files
youle_cocos/docs/superpowers/reports/2026-09-07-room-entry-integration.md
T

4.1 KiB
Raw Blame History

模板房间接入验收

依据:已确认的 2026-09-07-room-entry-template-design.md。分支 codex/room-entry-template;未提交或合并。服务器零改动。

已接入

  • Layer15_JoinRoom:0–9、删除、重输、粘贴、短号确认、6 位自动提交。显示保留前导零,出站房号按原模板为 number。复用 00046 BitmapFont;原有 Sprite 数字槽改为 Label。
  • Layer27_CreateRoom:根节点挂 TemplateCreateRoomView,使用两个 Cocos ToggleContainer。选择与上次 roomtype 的读取遵循原模板;创建按钮仍发原源码固定数组。重新对齐选项、标签和关闭按钮,面板背景阻止点击穿透。
  • create_room 请求、独立创建回包解析和权威房间状态建立;创建回包不要求 players。创建成功的自己资料来自已登录玩家,不向原始回包添加虚构字段。
  • 平台与子游戏双向调用沿用 GameEntry / GameModule / GameHost:成功提交状态后挂载模块,房间视图消费快照,准备/退出经受限 host 发回平台。替换原登录专用拒绝房间入口。
  • 请求防重复、15 秒超时、错误与断线结束等待;断线关闭房间页并使迟到剪贴板回调失效。关闭页不能撤销已经发往服务器的请求,迟到成功仍由平台按服务器状态进入房间。
  • 原样传递 join/login 的 deskinfo。解析人数前传给子游戏的是不可变 roomtype 副本,防止污染服务器原始数据。

子游戏如何换创建页

  1. 在自己的 prefab 根节点挂继承 assets/scripts/platform-login/CreateRoomPage.ts 的脚本,实现 open(context)、setBusy(busy)、close()。
  2. 子游戏自行管理选项、布局、校验和异步回调,调用 context.submit(roomtype) 提交已经验证的数组,调用 context.cancel() 关闭。
  3. 在 PlatformStartup 场景的 SubgameAssets.createRoom 指定该 prefab。平台不访问其 group/Spirit 节点。
  4. 子游戏的 GameEntry 提供实际 route、resolveSeatCount 和 GameModule。本次模板注册放在 Startup 的组合入口;不把模板的示例规则作为其他游戏的默认值。

模板的 Desk.Create 在没有 getMaxPlayerCount 钩子时明确采用 Game_Config.Max.PlayerCnt=10。本次 TemplateRoomRules 保留该容量;其他游戏必须用自己的真实人数规则。模板没有玩法网络实现,Game_Surface_3 模块标识不是任何具体游戏服务器路由的认证结果。TemplateRoom.prefab 是房间接管演示页,不是已完成的牌桌玩法。

验证结果

  • 223 项房间相关平台/协议/模型测试通过。
  • Cocos Game View 30 项检查通过:真实坐标点击键盘、数字显示、删除/粘贴、ToggleContainer(再次点击选中项保持选中)、防重复、迟到回调取消、超时、创建拒绝、创建成功真实加载 TemplateRoom 场景、准备/退出 GameHost、重复成功不重挂、加入成功及 deskinfo 原样恢复。脚本:cocoscreator_projects/scripts/verify-room-entry-preview.mjs。实际 socket 在测试前停止,测试回包与出站捕获仅在本地运行。
  • Cocos 与 framework 两个严格 TypeScript 检查通过(ES2022/DOM,TypeScript 6);import boundaries 通过。
  • 三个 prefab 共 55 个资源引用校验,无缺失;截图检查创建页和加入页布局。
  • 全量 775 项测试:770 通过,5 失败。3 项旧迁移测试仍读取已在本任务前移走的 Login_Layer.prefab;2 项账号/登录策略测试硬编码旧 agentid/channelid,与本任务前已调整的 defaults 配置不一致。未为测试改回用户的配置或资源名称。
  • 基线哈希核对:原有序列化资源仅 PlatformStartup.scene、Layer15_JoinRoom.prefab、Layer27_CreateRoom.prefab 变化。其余原有 scene/prefab/anim/meta 保持基线。
  • 协议审查发现的可变数组问题、集成审查发现的断线剪贴板问题均已修复并复核。

未进行实际服务器创建/加入联调,未实现具体子游戏的规则解释、玩法消息或牌桌操作。本次确认的是模板页面与平台房间交接边界。

截图:cocoscreator_projects/YouleNexus/temp/mcp-captures/room-create.png、room-join.png。