Skip to Content
CrossingNet
概念

生命周期

实例四态十一因、玩家八态、对局阶段,以及跨进程那条 trace 怎么把一次匹配串起来。

CrossingNet 里同时存在三种「状态」:对局实例的、玩家的、对局本身的。它们由一个 matchId 和一条 trace 串在一起,日志里能对上。

对局实例

Spawning ──首次健康OK──► Ready ──进人/开局──► Playing
   │                      │                    │
  启动超时                 空房宽限/关闭          结束(回 Ready 或 Closed)
   ▼                      ▼                    ▼
 Closed ◄────────────────┴────────────────────┘   (都带 CloseReason)
状态含义离开条件
Spawning进程已拉起、端口已占,房间还没回健康健康端口回 OK → Ready;StartupTimeoutSeconds(默认 180s)→ Closed
Ready空房间,等人进第一个人 → Playing;空置超过 EmptyGraceSeconds(空房宽限,秒) → Closed
Playing有人的对局房间结束回大厅,实例进 Closed
Closed已关闭,记录保留 ClosedRetentionSeconds(已关闭实例保留,秒)过期从表里删

十一种关闭原因

ECrossingCloseReason 决定日志里这一局为什么结束,排查时先看它:

值含义
None未指定
StartupTimeout启动超时
SpawnFailed进程拉起失败
Unresponsive健康探测连续失败
EmptyRoom空房宽限到期
OwnerGone房主离开
Lifetime生命周期结束
ClosedByOwner房主主动关闭
StopAll全部停止
LobbyShutdown大厅关闭
GameFinished对局正常结束

玩家

Idle → Queueing → ReadyCheck → Traveling → InRoom → InGame → PostGame → Idle
         │            │            │
         │取消/超时    │拒绝/超时    │失败(2001 → 回大厅)
         ▼            ▼            ▼
       Idle         Idle         Idle
阶段发生了什么失败回哪
Queueing入队,等待配对;窗口随时间放宽取消或超时 6001 → Idle
ReadyCheck配对成功,客户端确认拒绝 6008 / 超时 6007 → Idle
Traveling拿到地址与票据,旅行进房失败 2001 → 回大厅 Idle
InRoom校验票据、分座位、准备房间关闭 → 回大厅
InGame对局中;掉线保留座位重连窗口内回来 → InRoom
PostGame结算、返回大厅—

对局(比赛)

一局比赛由大厅的 matchId 标识,跨实例迁移时跟着走:

QueueJoin(生成 trace) → MatchFound → ReadyCheck → Assign(带 token 与 trace)
  → Travel → GameStart → EndGame → Settlement → ACK → ReturnToLobby
  • matchId:配对时生成,结算幂等键
  • trace:入队时生成,经 ReadyCheck、分配 URL(?CrossingMeta=<trace>)一路带到房间, 房间写进 PlayerState.CrossingTraceId;房间日志带同一个 trace=

用状态对日志

排查一局没走通,按这个顺序看:

1. 大厅 [Match] QueueJoin → MatchFound       真的配到了吗
2. 大厅 [Session] SpawnStart / HealthFirstOK  实例起来了吗
3. 大厅 [Assign] Assigned                     分配地址与票据
4. 房间 [Room] JoinTokenAccepted / SeatAssigned 进房成功吗
5. 房间 [Room] GameStart / GameEnd            对局走了吗
6. 大厅 [Session] SettlementRecorded/Acked    结算落盘了吗

下一页:大厅与实例。

On this page