Skip to content

单局房间型架构 ​

Category ​

design / problem-domains 子树。节点定位:单局房间型问题域的横向速查——特征、约束、方案形态、特有的坑,一页对照。

Definition ​

这一页从问题域角度归纳单局房间型项目,是全书问题模型篇目的横向速查版。它不重新推导这类项目为什么难,而是把问题域特征、由此推导的架构约束、常见方案形态和该类型特有的坑压缩在一页里,适合在方案评审、项目盘点,或者拿不准某个项目该往哪个方向做时快速对照。

一句话画像:大部分关键状态在一局内部闭合,房间是状态的生灭单位,局外只保留可信的结果。麻将、斗地主、派对游戏、桌球、轻量射击、短局 Auto Battler 都落在这个画像里。

Problem ​

方案评审时需要的是速查而不是重读推导:房间型项目的判断集中在状态一局内闭合、服务即抛式组织、局外链路(匹配/结算/反外围)被低估这三件事上。拿不准项目方向时,一页对照比翻全章快。

这个问题域的特征 ​

  • 状态生命周期以局为单位,一局结束,大部分运行时状态随之作废。
  • 会话边界清晰,进局、离局、重连都有明确的时间窗口。
  • 局内玩家强耦合,任何一个人的异常都可能拖累整局体验。
  • 局外资产与局内过程解耦,结算结果是两者之间唯一的接口。
  • 开局、散局、重连、结算的频率极高,而单次状态的价值很低。

这些特征单独看都不难,难在组合:状态又短又高频,出错又直接命中玩家最敏感的环节。

与相邻类型的边界 ​

横向看,单局房间型最容易和三类项目混淆,判断错类型往往导致架构方向整体跑偏。

  • 和持续在线世界型相比,它没有需要长期维护的世界状态,扩缩单位是房间而不是地图,容量问题更容易按房间粒度切分和回收。
  • 和强实时对战型相比,它对毫秒级一致性的要求往往宽松,棋牌和派对游戏常用状态同步就够,通常不必引入帧同步或锁步。
  • 和长周期成长型相比,它的局内状态不需要版本化和迁移,真正需要长线治理的是局外的积分、战绩与信誉。

判断一个项目属于哪类,常见做法是看主导矛盾:如果口碑主要取决于“开局快、局内稳、结算准”,它就是房间型主导,哪怕同时挂着成长、活动和商业化系统。

特征推导出的架构约束 ​

短生命周期状态约束了状态组织:局内状态要么整体驻留在单进程,要么能整体快照,很少值得为它引入跨进程共享存储。

高频开局散局约束了资源模型:房间的创建和销毁应该是廉价操作,团队通常盯的指标是单机并发房间数、房间冷启动耗时和销毁后的回收完整度。

房间粒度扩缩约束了调度方式:扩容与缩容通常按房间迁移或按节点排水操作,而不是按玩家会话操作,这意味着房间与节点之间要有可重建的归属关系。

结算一致性约束了写回链路:胜负、奖励、积分、战绩往往经由一条幂等、可审计、可补偿的链路落到局外资产,而不是由多个服务顺手各写各的。

常见方案形态 ​

大厅与对局分离是最常见的形态:大厅层负责登录、匹配、组队和局外状态,对局层负责房间内推进、广播和权威裁决,两层之间以结算接口对接。

  • 房间状态机几乎是标配,创建、就绪、开局、运行、异常、结算、销毁各有明确转换条件,掉线、托管、超时都映射到状态机上。
  • 匹配与组房通常独立成服务,按段位、延迟、组队关系分桶凑局,房间实例在凑局成功后才分配节点。
  • 断线重连通常以恢复窗口加房间快照实现,窗口内恢复到断线前状态,窗口外转托管或判负。
  • 托管与真人输入的切换点要在状态机里定清楚,否则争议局往往说不清中间发生了什么。

结算链路的常见做法是集中收口:对局结束时生成一份权威结算单,由结算服务统一回写资产、排行和战绩,失败可重试且不重复发放。

容量与扩缩的速查判断 ​

  • 扩缩以节点承载的房间数为准,而不是以在线人数为准。
  • 峰谷差异明显的项目,通常按排队深度和房间创建速率扩容,按排水收缩。
  • 房间内状态越重,单节点故障的影响面越大,常见做法是控制单节点房间数,并保留对局日志以便结算补发。
  • 版本更新时,常见策略是让旧节点上的对局自然散局再回收,很少让对局跨版本存活。

该类型特有的坑 ​

房间服被塞成迷你世界:好友、活动、背包、支付回调都进了房间进程,房间生命周期与局外系统绑死,扩缩、迁移和异常恢复都随之变重。

散局治理缺位:团队往往重视匹配与开局,不重视日志归档、结算确认和资源回收,时间一长,节点上堆满脏实例和未回收状态。

重连只是尽量试试:没有恢复窗口、没有快照、没有托管切换点,玩家回来后要么进不去,要么看到错误局面。

结算顺手一写:多个服务各自改积分、发奖励,中间一步失败就出现胜负已记、奖励未发之类的脏状态,而且事后难以补偿。

常见误区 ​

  • 把“一局很短”当成“后端很轻”,结果高频开局、掉线恢复和结算争议把局部问题放大成全局故障。
  • 用世界型的大一统架构做房间制,系统很重而收益很低,开发节奏被拖垮。
  • 把横向速查结论当成完整推导,看到“房间型”三个字就套方案,没有先确认主导矛盾确实是会话而不是世界。

这类项目的架构方向通常可以概括为:状态短而边界清,房间独立可生灭,结算是唯一可信出口。

Used By ​

方案评审的快速对照;项目归型盘点;评审前的方向校验。

关系链:特征 → 边界 → 约束 → 方案形态 → 容量速查 → 特有的坑。上游:industry/models/02(问题模型全展开)。下游:system 树匹配节点。

Reference ​

本页为工程经验归纳。

游戏知识体系