8.0 KiB
本地启动、加载、登录真实验收
日期:2026-09-05。分支:codex/local-platform-login。代码:4414e1b。状态:本批启动、真实加载和两次独立预览登录验收通过;未合并、未推送。
工作区与范围
仅在 G:/Works/YouleGamesCocosCreator 主 checkout 使用 Git 分支;Creator 固定打开其下 cocoscreator_projects/YouleNexus(3.8.8)。不再使用 worktree。保留原有 50 项未提交文件的状态和 SHA256;不自动 stash。
本批独立 LocalPlatformLogin 场景只验证启动、加载、游客登录及结果显示。未改生产启动场景、默认 prod、GameEntry 契约、服务器、远程配置或原生接口;未选择子游戏,未发起其他平台或房间 RPC。
序列化新增严格为设计第 8 节授权的九项资源,全部通过 funplay MCP/Creator 生成、绑定、保存和重开验证。源 Login/Loading Prefab 未修改。
配置与账号单源
assets/framework/config/profiles.ts:debug/local 的直接连接目标为ws://127.0.0.1:3088,跳过远程配置。assets/framework/config/sources/defaults.ts的BUILD_IDENTITY:agentid、channelid、gameid、marketid、version 的构建来源。正式字段拼写为channelid。runtime-config.ts→local-startup.ts:解析真实location.search,必须显式profile=local;宿主只解析一次,将同一配置交给 Runtime、诊断 GameEntry 与本地账号来源。assets/framework/adapters/local/visitor-account.ts:按身份/连接作用域读取严格缓存或生成游客;openid 为testopenid_<随机数>,unionid 为ylgame<同一随机数>,同时产生昵称、头像、性别和地区。assets/framework/adapters/local/login-sources.ts:同次账号准备提供设备快照,机器标识从独立缓存读取或由时间戳与随机后缀生成;本地 location 显式为 null,其他可选输入遵循来源定义。消费方不补默认值。- 既有协议构造器产生唯一
agent/player_login信封;未执行历史scripts/login-live.ts。
本次真实请求使用未覆盖的 BUILD 身份,version=1 且类型为 number。下述 state=0 回包证明该组合被此次实际本地服务接受;不将源码配置或 TCP 可达单独当作身份匹配证据。
编辑器和运行环境
- 本地监听:3088,PID 20092,
G:/Works/JinXianProjects/gateway/game-gateway.exe。只读复核,无服务端写入。 - 场景 UUID:
67e69aac-9982-4e78-a44c-1d9c42f016ae。1600×720,Host 仅挂新组件;九项组件引用经保存、切回原场景、重新打开验证有效。 - Creator 返回预览端口 7456。通过 funplay MCP 创建独立 Electron Chromium 浏览器窗口,加载实际 Creator 页面
http://127.0.0.1:7456/?profile=local;关闭 Node integration、开启 context isolation/sandbox。未替换引擎或伪造编辑器内的浏览器 query。 - 输入通过 MCP 向真实预览窗口发送鼠标事件。首次坐标偏移误解未命中节点,证据确认零发送;纠正为 game 面板中心偏移后命中游客按钮。
- 原始收发仅保留于本地诊断内存。此报告不提交 openid、unionid、machineid、服务器认证/银行字段值或原始回包。
实际发现并修复的问题
- Creator 的诊断工具默认选择 TypeScript 4.9.5,无法解析已有 TS 5 语法。使用仓库 TypeScript、真实 Cocos 声明及严格 ES2020 参数检查;不修改工程配置或原生桥。
- 首次实际预览因既有 SDK 测试辅助模块的运行时
node:assert导入中断。最小 TS 范围扩展:该辅助函数改为必需的调用方断言参数,更新唯一测试调用和 README;所有原断言语义保留,无浏览器 shim。独立审查通过,MCP 刷新脚本后实际场景成功运行。 - 初次登录页不可见:新相机仅包含 UI_2D,原 Login Prefab 使用 DEFAULT。仅通过 MCP 修改授权新场景相机为
UI_2D | DEFAULT,重开和实际截图均通过;源 Prefab 不改。 - 第二个独立预览暴露单次浏览器计时器提前唤醒,记录 499.8ms。通过 RED/GREEN 加入每次唤醒后的单调时间阈值复核,未满 500ms 继续等待;保留取消能力。整分支审查的对应 Important 问题已复审关闭。该失败窗口未登录;修复后另开全新窗口验证为 501.1ms。
首次真实登录证据
fp_f5d718fac951802d:Loading 首次 draw 为 861.3ms;865.9ms 与 1090.7ms 的两张真实截图均显示加载环,角度由 -47.682° 变为 -86.688°。登录页激活为 1368.3ms,实际加载展示约 507ms。- 本地唯一 open 目标为
ws://127.0.0.1:3088;资源、配置、连接和最短展示门完成后,PageModel 为 login/canLogin=true。 fp_72e7cc8b8f6782a8:一次游客点击仅发送一个agent/player_login;服务器返回state=0。首次业务响应耗时约 1694ms。后续 26 字节入站为非业务帧,未产生额外出站 RPC。- Store 为 logged-in/outside;服务器语义、Store、PageModel 的玩家 ID、昵称、豆豆一致;实际结果页显示登录成功。页面不直接用请求填充玩家结果。
- 诊断 GameEntry 仅完成一次校验创建/释放,没有游戏 attach、restore 或消息调用。
fp_e481ee99042a594f:真实停止按钮触发后 ready=false、busy=false、pendingCount=0;观察 33.3419 秒,事件计数未变,无重连、继续渲染或浏览器异常。成功结果保留。
第二次独立预览与缓存复用
fp_9b9dc57c94603f6d:关闭已停止的窗口,新建独立浏览器窗口 9,仍使用同一真实预览 origin 和profile=local。修复后的 minimum-display-ready 为 501.1ms,login/canLogin=true,零浏览器异常。fp_ed01311f246331d4:向实际游客按钮发送鼠标事件,35ms 后观测 busy=true、登录遮罩可见、提示“正在登录,请稍候…”,仅一个业务请求;已取得实际截图。fp_f75c9fb9806e6a5c:服务器再次 state=0;openid、unionid、machineid 与首次请求均相同,返回相同玩家。Store logged-in/outside,Store、PageModel、回包和显示结果一致。比较在本地诊断内存完成,此处只记录布尔结论。fp_e58e3f88615487fb:真实停止按钮后 ready=false、busy=false、pendingCount=0;观察 47.0203 秒无新增事件、重连或浏览器异常。保留成功结果供查看。
截图位于工程 temp/mcp-captures/(本地证据,不提交):local-login-loading-first.png、local-login-loading-rotated.png、local-login-visible-ready.png、local-login-success-first.png、local-login-busy-second.png、local-login-success-second.png。
回归与审查
在 cocoscreator_projects 执行显式枚举全部 framework-tests/**/*.test.ts 的 node --import tsx --test --test-concurrency=1:最终 600/600,通过,exit 0,对应 4414e1b。计时修复前为 599/599,新增早醒回归后为 600。
指定 architecture/import-boundaries.test.mjs 和 architecture/presentation-boundaries.test.mjs:49/49,通过。框架类型、导入边界检查通过。未使用 npm test、test:framework 或旧资源生成器。
全量输出含既有 ui/store-binder.test.ts 故意触发的 StoreBinder/reactive boom 日志;测试未失败,不宣称全量日志无噪声。
各实现任务与修复均完成独立规格/质量审查。整分支审查完成至 73d7826,计时修复 4414e1b 复审通过;没有未关闭的 Critical/Important 代码问题。
最终范围复核
4414e1b后复核原有 50 项文件的 porcelain 状态和 SHA256,全部不变。两项历史删除 meta 和用户 scene-2d 均保留。- 分支资源差异严格为九项授权新增文件。测试辅助模块兼容修复只修改三个既有文本文件,未增加资源授权范围。
git diff --check通过。仅主 checkout;没有 worktree,未自动 stash、合并或推送。- 本结论仅为本批平台启动、加载、游客登录通过;不代表大厅其他 RPC、房间、真实子游戏、生产 profile 或原生 App 验收。