feat: integrate room framework and isolated subgame bundles

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.
This commit is contained in:
2026-09-09 03:13:18 +08:00
parent a7ec8aa6a7
commit 35216f75e7
1028 changed files with 835556 additions and 21415 deletions
@@ -0,0 +1,6 @@
import type {ChannelIdentity} from '../../YouleNexus/assets/framework/config/identity.ts';
/** Test-only identity, independent of application selection. */
export const BUILD_IDENTITY:Readonly<ChannelIdentity> = Object.freeze({
agentid:'1B2h0ccl205c390Y28m1Ajdplkuu4wgy',channelid:'aouv0LotK0pYyQ0Pdrx0CsdcaezfzrcG',
gameid:'J9r4022t80pxlb01zOK76DN1WD4QewFl',marketid:4,version:1,
});
@@ -0,0 +1,9 @@
import {GAME_DEFINITIONS as template} from '../../YouleNexus/assets/games/template/game-definition.ts';
import {GAME_DEFINITIONS as erqiwang} from '../../YouleNexus/assets/games/erqiwang/game-definition.ts';
import type {GameDefinition} from '../../YouleNexus/assets/framework/sdk/contracts/game-definition.ts';
/** Test-only inventory, excluded from Cocos assets. */
export const GAME_DEFINITIONS={...template,...erqiwang};
export function getGameDefinition(key:string):GameDefinition {
if(!Object.prototype.hasOwnProperty.call(GAME_DEFINITIONS,key))throw Error('Unknown game: '+key);
return GAME_DEFINITIONS[key as keyof typeof GAME_DEFINITIONS];
}
@@ -1,4 +1,4 @@
import { BUILD_IDENTITY } from '../../YouleNexus/assets/framework/config/sources/defaults.ts';
import { BUILD_IDENTITY } from './build-identity.ts';
import { createRemoteConfig } from '../../YouleNexus/assets/framework/config/remote-config.ts';
import type { ChannelIdentity } from '../../YouleNexus/assets/framework/config/identity.ts';