Skip to main content
Version: Current

核心概念

少数派规则

每轮 A/B 二选一 → 未答淘汰 → 多数派淘汰 → 少数派晋级 → 剩 1 人赢 / 2 人平。

认证场景

系统按部署地区支持两套登录方案(二选一,勿混用):

场景PlayerAdmin / Display
国内(CN)/login 6 位登录码/staff-login 邮箱 + 密码
美国(US)/login OAuth(Google / Azure AD)同左,OAuth + 邮箱白名单

完整说明见 认证场景。下文「登录码机制」仅适用于 国内场景

登录码机制(国内)

步骤行为
Admin 发布Redis 写入 game:main_room:login_code,广播 login_code_published
玩家提交POST /api/auth/verify-code 校验 6 位码
身份分配assignPlayerIdentity(playerId) → 内部 email + 显示编号
Admin 关闭删除 key,广播 login_code_closed
重置游戏clearLoginCode() + clearPlayerRegistry()

登录码 无 TTL,直到关闭或 reset。

玩家身份模型

  • 同一 UUID 重复登录 → 复用原编号
  • OAuth 用户(Staff)email 即标识,displayName 回退为 email

游戏状态

RoomState(Admin/Display):waiting | playing | ended

PlayerGameState(Player):waiting | playing | eliminated | winner | tie

自适应倒计时

存活人数秒数
≤ 3015
≤ 5020
≤ 12030
> 12040

NextAuth Provider 对照

Provider类型国内美国
player-codeCredentials(6 位码)Player
staff-credentialsCredentials(邮箱+密码)Admin / Display
googleOAuth可选Player / Admin / Display
azure-adOAuth可选Player / Admin / Display

Redis 新增 Key

game:{roomId}:login_code
game:{roomId}:player_number_seq
player:{uuid}:displayNumber
player:{uuid}:displayName
player:{uuid}:internalEmail
internal:{email}:displayName

数据分层

  • Redis:游戏 + 登录码 + 显示名(运行时)
  • PostgreSQL:RoundSnapshot、GameResult(归档与恢复)