Complete room UI and protocol integration, move game definitions and resources behind bundle entries, publish authoritative version XML, and document single-game builds. Include all current resource changes and experiment artifacts.
48 lines
4.0 KiB
Markdown
48 lines
4.0 KiB
Markdown
# 子游戏 version.xml:网页预览与原生发布共用
|
|
|
|
## 日常使用
|
|
|
|
1. 在 Cocos 启动场景的应用组件 `SubgameAssets` 中选择 `gameKey`,并绑定对应游戏页面和房间资源。当前为 `erqiwang`。
|
|
2. 编辑该游戏唯一的 `assets/games/<目录>/resources/<gameKey>/version.xml`。
|
|
3. 网页预览直接读取该文件。Web Desktop / Web Mobile 正常构建后,扩展自动将原文件放在输出根目录,与 `index.html` 同级,不需要手动复制。
|
|
|
|
当前文件:
|
|
|
|
- 二七王:`assets/games/erqiwang/resources/erqiwang/version.xml`
|
|
- 模板游戏:`assets/games/template/resources/Game_Surface_3/version.xml`
|
|
|
|
## XML 契约
|
|
|
|
保留原生既有 XML 声明、game 根节点及 agent/game/channel/version 节点,不新增 market 字段。
|
|
|
|
- `game/agent@id`、`game/channel@id`:网页身份。
|
|
- `game/game@id`:所选游戏 gameid。
|
|
- `game/version@value`:非负安全整数 versionCode,转换为数值后发送至 `player_login.data.version`。
|
|
- `game/version@name`:字符串展示版本 version,例如 `1.8`;登录页显示 `v1.8`,不由 versionCode 拼造。
|
|
- 各 name 属性保留供原生读取。
|
|
|
|
网页 marketid 唯一配置位于应用层 `app/composition/build-identity.ts` 的 `WEB_MARKET_ID`,当前为 4。XML 不包含 marketid,因此不重复维护该字段。现有显式 URL 渠道/版本调试覆盖仍遵循通用启动解析器规则;日常预览无需 URL 身份参数,直接使用 XML。
|
|
|
|
原生环境的 agentid、channelid、marketid 仍通过既有 settings/uAgent_3 接口读取,缺失时报错,不回退到网页身份。游戏与版本信息来自 XML。未更改服务器、原生接口名或登录协议。
|
|
|
|
当前 XML 保留迁移前的联调身份与数值版本 1;展示版本采用原游戏 XML 的名称(二七王 1.8、模板 1.1)。旧 XML 的 versionCode 不覆盖当前联调版本;正式发布需在这一份 XML 中配置部署要求的实际版本和身份。
|
|
|
|
## 接入新游戏
|
|
|
|
`game-config.ts` 仅指定 `versionResource: '<gameKey>/version'`,不再保存身份和版本。应用注册表引用该配置。
|
|
|
|
在编辑器中把游戏的 resources 文件夹配置为 Asset Bundle:名称必须是 `version-<gameKey>`。运行时只加载所选版本包,读取 `<gameKey>/version` TextAsset,解析后释放该文本资源。使用编辑器操作资源及 meta,禁止手改序列化文件。
|
|
|
|
构建扩展 `extensions/youle-version-manifest` 在当前编辑器已启用;新环境需要在项目扩展管理器中启用。它从构建任务真正的启动场景读取游戏选择,检查唯一 XML、合法版本、对应 bundle 元数据和构建结果的 bundle 列表。构建中修改 XML、启动场景或相关元数据会使构建失败,避免生成身份不一致的包。
|
|
|
|
框架只消费注入身份,不包含具体游戏配置。新增、选择子游戏不需要修改框架代码或资源。本次未实现排除所有未选游戏代码和资源的完整构建裁剪。
|
|
|
|
## 验证记录
|
|
|
|
- 956 项框架测试、22 项构建扩展测试通过;框架/Cocos 严格类型检查、import boundaries、两款游戏房间资源检查通过。
|
|
- 实际 Cocos Game View:二七王解析 gameid 为当前联调值、versionCode=1、version=1.8;登录页显示 v1.8。创建独立测试组件选择模板后读取到模板 gameid、versionCode=1、version=1.1,未发送业务请求。
|
|
- 同时修复现有场景切换清理问题:隐藏已销毁的加载节点时不再访问其子节点;实际预览确认销毁后 dispose 成功,有效但缺失必要组件的节点仍明确报错。
|
|
- 最终真实 Web Mobile 构建任务 1788872259776 成功,用时 28 秒,输出目录 `build/web-mobile-version-xml`。构建日志确认扩展在 onAfterBuild 输出根目录 version.xml。
|
|
- 源 XML 与导出根目录 XML 的 SHA-256 均为 `6871c9a71f7363261c85de52bd72d1d9fc3cc7dfbdf0c1ef949b11367cb657f7`。
|
|
- Web Desktop 已注册同一 hook 并通过注册测试,尚未另跑真实构建;真实原生壳读取未执行。
|