背景
C143 umbrella 的 Stage-1+2 落地。GameApp.Start 仅支持单 ServerType,AppEnter 仅支持单宿主;共享内核在每个 Role 启动类里重复初始化。本 issue 实现多 Role 启动 + AppBootstrapper 共享内核幂等守卫 + 逆序停机。
设计源:gfx-doc/dev/online-platform/process-topology-isomorphism-design-2026-09-21.md § D1 / D2 / D5 / D7 / D8。
Change 文件:gfx-doc/dev/startup/changes/C143b-process-topology-stage2-multirole-startup/change.md。
范围
GameApp.Start 扩展:--ServerType=Game,Social 复数 + --AllInOne 开关。
RoleSet:本进程 Role 不可变快照。
AppBootstrapper:进程级共享内核幂等初始化(Interlocked.CompareExchange 守卫)。
AppEnter 扩展:宿主集合 + 逆序停机(按 StartUpTypeRegistry 优先级)。
StartupOptions 扩展:IsAllInOne、ServerTypes: string[](保留 IsSingleMode 不动)。
任务
验收
- AC-1 All-in-One:
--AllInOne 单进程拉起全部已注册 Role;可在 IDE 断点调试整组服务器。
- AC-3 现状兼容:现有单 Role 启动命令行为零变化;
StartupOptions.IsSingleMode 不变。
- D5 共享内核幂等:进程级共享内核仅初始化一次;二次初始化抛明确异常而非静默覆盖。
依赖
- 依赖:C143a(CurrentSetting + GameDb 多库 + LogType 固定标识)
- 阻塞:C143c
标签约定
P1 project:gameframex.server.source blocked-by-dependency
背景
C143 umbrella 的 Stage-1+2 落地。
GameApp.Start仅支持单 ServerType,AppEnter仅支持单宿主;共享内核在每个 Role 启动类里重复初始化。本 issue 实现多 Role 启动 + AppBootstrapper 共享内核幂等守卫 + 逆序停机。设计源:
gfx-doc/dev/online-platform/process-topology-isomorphism-design-2026-09-21.md§ D1 / D2 / D5 / D7 / D8。Change 文件:
gfx-doc/dev/startup/changes/C143b-process-topology-stage2-multirole-startup/change.md。范围
GameApp.Start扩展:--ServerType=Game,Social复数 +--AllInOne开关。RoleSet:本进程 Role 不可变快照。AppBootstrapper:进程级共享内核幂等初始化(Interlocked.CompareExchange守卫)。AppEnter扩展:宿主集合 + 逆序停机(按StartUpTypeRegistry优先级)。StartupOptions扩展:IsAllInOne、ServerTypes: string[](保留IsSingleMode不动)。任务
AllInOneOptions实现(CLI 解析:--ServerType逗号 split +--AllInOne开关)RoleSet不可变快照实现AppBootstrapper幂等守卫 +BootstrapperAlreadyInitializedExceptionGameApp.Start扩展接受AllInOneOptions;CLI 解析走AllInOneOptions.ParseAppEnter扩展:宿主集合 + 逆序停机AppStartUpBase启动链改为调用AppBootstrapper.EnsureInitialized()dotnet test全绿验收
--AllInOne单进程拉起全部已注册 Role;可在 IDE 断点调试整组服务器。StartupOptions.IsSingleMode不变。依赖
标签约定
P1project:gameframex.server.sourceblocked-by-dependency