功能特性
游戏机制
- A/B 二选一,自适应倒计时(15–40 秒,随存活人数变化)
- 未答题淘汰、多数派淘汰、平局(2 人)与唯一获胜者判定
- 答题 幂等提交(Redis
SET NX) - 游戏开始后 禁止新玩家中途加入(已有玩家可重连)
登录与身份
支持 国内 / 美国 两套互斥方案,详见 认证场景。
国内场景
玩家(登录码)
- Admin 发布登录码 → 6 位数字
- Display 大屏展示码与已加入人数
- 玩家在
/login输入 →玩家 #NNN显示名
工作人员(Staff)
/staff-login:白名单邮箱 +STAFF_*_PASSWORD- 与玩家入口分离,不使用 OAuth
玩家 ID:localStorage UUID,供 verify-code 复用编号。
美国场景
三端统一 OAuth
/login:UsLoginPanel→ Google / Azure AD- Admin / Display 由 OAuth 邮箱匹配
ADMIN_EMAILS/DISPLAY_EMAILS - 无登录码、无
/staff-login(默认构建) - 身份为真实 email,非
玩家 #NNN
管理端
- 发布 / 关闭 登录码
- 发布题目(13 道预设 + 自定义字段)
- 重置游戏(清空 Redis 状态、登录码、玩家注册表)
- 实时统计:存活/淘汰、A/B 票数、轮次
展示端
- LoginCodeDisplay:全屏登录码 + 当前人数
- 题目、倒计时、淘汰动画
- WinnerModal / TieModal(显示
winnerDisplay/finalistsDisplay) - 断线重连后自动补发
login_code_status
可靠性与性能
| 能力 | 说明 |
|---|---|
| Redis 运行时状态 | 毫秒级读写 |
| PostgreSQL 快照 | Redis 崩溃后恢复存活列表 |
| GameResult 归档 | 游戏结束持久化胜负 |
| 负载测试 | 200+ 并发,flood-test/ 含登录码 E2E 脚本 |
UI 主题
| 主题 | 环境变量 | 风格 |
|---|---|---|
| Spring | NEXT_PUBLIC_THEME=spring(默认) | 春节/cloud 背景 |
| Mario | NEXT_PUBLIC_THEME=mario | 像素风选项与字体 |
主题类名通过 globals.css 中 html[data-theme="..."] 切换。