4.3 KiB
单文件启动配置
已批准方案
用户要求把远程配置地址、debug/release、是否使用本地服务器集中在同一个代码文件,便于发布修改;已确认布尔字段命名 useLocalServer,并回复“可以”授权实施。
唯一可编辑配置入口为已有 cocoscreator_projects/YouleNexus/assets/framework/config/profiles.ts:
export const STARTUP_CONFIG = {
mode: 'debug',
gameserver: 'https://tsgames.daoqi88.cn/config/update_jsonv2.txt',
useLocalServer: true,
localServers: ['ws://127.0.0.1:3088'],
} as const;
上述四项只定义一处。配置有明确 StartupConfig 类型、只读约束和入口验证;发布时仅修改这里的 mode 和 useLocalServer。应用 mode 不冒充 Creator 的编译 DEBUG 标志;引擎构建选项仍由 Creator 管理。
读取与来源
- 生产入口不再传 mode 常量;runtime-mode.ts 不读取 URL、不探测全局 DEBUG、不默认 debug。它保留类型和必要的纯模式读取功能,最终模式来自 STARTUP_CONFIG。
- runtime-config.ts 默认消费 STARTUP_CONFIG。保留显式整体配置注入作为纯测试接缝(options.startupConfig),不保留单独 mode/profile/servers 的第二套来源。
- URL 的 mode/profile 完全不参与模式和目标选择,包括冲突值或重复项,不因此拒绝网页启动。
- 原生/H5 的既有 gameconfig 注入解码、身份 query/native/BUILD 来源保持兼容,不把身份搬迁或复制。正常网页无参数即可运行。
- 旧 PROFILES/ACTIVE_PROFILE/resolveActiveProfile 不再作为生产配置来源;删除不再使用的选择逻辑,避免维护两套配置。仅用于旧 facade 或账号存储命名的派生 profile 标签不构成配置开关。
模式与服务器选择
debug/release 与 useLocalServer 是两个独立字段,四种组合都读取远程 JSON,按已完成的原工程层级规则解析并仅保存在内存。
- useLocalServer=true:成功读取并验证远程根/层级后采用配置中的 localServers,不要求未使用的远程 TCP 字段存在。
- useLocalServer=false:使用 game_server_tcp 或 player_server_tcp,缺失/非法显式失败,不使用 visitor TCP 或本地兜底。
- mode=release 不再隐式强制远程地址,否则两个字段不独立。实际发版应明确设 release/false。
- 本地地址必须有效、无认证信息/片段且为 loopback(127.0.0.0/8、localhost 或 ::1);缺少配置显式失败,消费方不得补值。
入口和诊断边界
LocalPlatformLogin 不再硬编码 mode,也不要求 profile=local。保留 cc/env.DEBUG 与 H5 保护:它是本地诊断场景,未授权将它变成完整生产启动场景。进入诊断前验证配置的 mode=debug、useLocalServer=true,并沿已有严格回环目标、停止/失败生命周期检查工作。无参数 Creator 网页预览应进入 login/ready。
本地账号缓存的 namespace 保持原 local 标签,避免无关账号重建;标签可保留为内部常量,不再从 URL 读取。
旧 LoginFlow 仅做调用接口兼容调整:移除 mode/profile 硬编码和配置失败后的地址/身份兜底,失败时停止;不重做 UI 接线、不称旧场景已接入新 Runtime。其其他旧逻辑留在后续入口迁移批次。
验收及范围
- 默认无参数读取统一配置;冲突的 mode/profile URL 不改变代码配置。
- 四种 mode/useLocalServer 组合、无效配置、远程读取失败、缺失远程地址和原生 gameconfig 注入有行为测试;任何失败无连接兜底。
- 原 get_paravalue、内存唯一引用与无远程持久化要求保持通过。
- 显式枚举纯 TS 测试,指定两项架构测试、类型和边界检查;每项实现 TDD、独立规格/质量和最终审查。
- funplay MCP 核实主 checkout 项目,刷新既有 TS 后用
http://127.0.0.1:7456/(实际端口为准)无参数预览,真实读取远程配置并进入可登录页,最终目标本地。验证后停止,不扩展 RPC 验收。 - 使用当前分支,不建 worktree。保留原有52项改动,不改服务器或任何 .scene/.prefab/.anim/.meta,不新增 assets 文件。
当前真实远程 JSON 对 BUILD 身份仍缺少 game/player TCP;useLocalServer=false 的实际启动限制保留,不通过改身份、选子游戏或修改远程服务来掩盖。