← 全部项目Maskword · 谁是卧底
移动端优先的“谁是卧底”,同时提供多人手机线上联机和一台设备轮流操作的线下同屏玩法。系统负责私密发牌、发言顺序、匿名投票、淘汰、胜负结算和再来一局;玩家的描述与讨论在线下面对面完成。
正常开放当前版本 3.0

项目介绍
Maskword · 谁是卧底
移动端优先的“谁是卧底”,同时提供多人手机线上联机和一台设备轮流操作的线下同屏玩法。系统负责私密发牌、发言顺序、匿名投票、淘汰、胜负结算和再来一局;玩家的描述与讨论在线下面对面完成。
V1 功能
创建 6 位数字房间号,设置平民、卧底、白板人数以及房主是否参赛
昵称统一设置并在本机记忆,创建房间与加入房间使用两条独立入口
服务端随机分配身份和本地词库词语,客户端在结束前只能获得自己的私密信息
身份卡点击查看、再次点击隐藏、5 秒自动隐藏,并在失焦或切后台时收起
每轮重新随机存活玩家发言顺序,非白板优先成为第一位发言者
普通匿名投票、60 秒超时弃权、按存活人数控制主动弃权、无时限平票重投;平票候选人可看到自己与上一轮匿名票数
淘汰观战、退出处理、自动胜负判断、身份公开和原房间再来一局
刷新/短暂断线恢复;房主离线 15 秒后自动转移,也可在任何阶段手动转移
等待房间、结束房间和全员离线游戏的内存清理
PC 端使用独立 WebP 聚会背景,手机端保持无干扰的单页布局
线下同屏支持 3–12 名参赛者、主持人不参赛、逐人私密发牌和无倒计时匿名投票
线下对局按已确认步骤保存在本机;刷新、失焦或切后台后从中性交接页恢复,不重新展示敏感信息
可安装为 PWA;首次联网完成缓存后,可断网打开线下同屏并继续本地对局
V1 不包含账号、语音、录音、文字聊天、广告、数据库、Redis、ORM 和 Docker。
更新日志3.0
Maskword 更新日志
Maskword 更新日志
本文记录 Maskword 从首个可用版本到当前版本的重要功能变化。
仓库早期没有创建 Git 版本标签,因此下列语义版本号是根据功能里程碑补录的;发布日期和提交哈希是历史追溯的准确依据。日期均采用北京时间(Asia/Shanghai)。
[Trial-90] - 2026-09-07 真人试玩冻结版
- 正式删除孤独/独处、坚持/固执、经验/偏见、规则/习惯、网约车/出租车、医院/诊所、许愿/画大饼、催婚/催稿、收藏/断舍离、前同事聚会/同学会及对应问题与标签,不补新词。
- 主库冻结为轻松 34、烧脑 25、脑洞 31,共 90 组、416 条专属问题;主题 114 组。停止自动扩充与纸面优化,进入真人反馈阶段。
- 完整 typecheck、52 项单元、1 项集成、17 项 E2E 和生产构建通过。部署结果另行实测记录。
随本次发布的第二轮质量精修(以下数量为删除十组前的历史)
- 主库从 120 缩减为 100 组(轻松 36、烧脑 30、脑洞 34),重构烧脑场景并淘汰重叠配对;主题池移除 6 组,剩 114 组。
- 主库全部配置专属问题,共 464 条;L3 候选优先用完再轮换,避免相邻回合重复;旧线下存档的单条 L3 可降级到通用候选。
- 线上词包历史改为房间所有,转移房主和原房间再来一局保留;小池耗尽后重洗,并按最近两题的体验标签降低语义重复。
- 删除 GPT、漏洞、大boss、无线网、微软系统、深度求索、苹果电脑系统、苹果系统等宽泛或不稳定的别名,保留正式写法规范化及明确简称。
- 完整删改与历史 30 组双边纸面模拟见 质量复审报告,不代表真人试玩或生产验收。
[3.0.0] - 2026-08-24
对应提交:0ef1f9e(feat: rebuild Maskword word library)
新增
- 新增轻松局、烧脑局、脑洞局和主题局四种词库玩法。
- 烧脑局和脑洞局的每组词都包含 1–3 级专属描述问题,共 240 条;无专属问题时使用 9 条通用描述提示。
- 为常用简称和不同写法增加精确别名,并加入 NFKC、空白和大小写规范化匹配。
- 线上和线下分别记录每个词库玩法最近使用的 30 个题源,优先避免短期重复。
- 增加词库开发期校验:检查重复词、重复词对、A/B 答案冲突、空别名、问题缺级及问题直接泄词。
调整
- 将 570 组旧词审校为 240 组:120 组正式精品词和 120 组兴趣主题词。
- 正式精品词包含轻松局、烧脑局、脑洞局各 40 组;成语、数码、医学、游戏、王者荣耀、汽车主题各保留 20 组。
- 词库源数据由固定“平民词 / 卧底词”改为无方向的 A/B,开局时以 50% 概率随机决定方向。
- 线上服务和线下同屏改用同一套选词、方向、提示和猜词判定规则。
- 创建房间界面由“分类 + 难度”改为“词库玩法 + 主题词库”。
- 线下存档升级到 V4,词库冷却历史使用独立存储,不会随放弃当前对局一起删除。
[2.1.0] - 2026-08-24
对应提交:099ffe8(feat: add vote reveal and elimination resolution rules)
新增
- 房主可选择投票结果“锁票后实名逐票公开”或“仅公开票数”,默认公开投票明细。
- 轮次结果记录普通投票、平票重投、弃权和未提交状态,复盘可以还原各投票阶段。
- 增加平民冤死遗言:首名被票出的平民在场上存在白板时,可尝试带走一名白板。
- 增加白板临走猜词:猜中平民词可获得个人“偷家”成就,猜中卧底词可投诚卧底阵营。
- 增加明确的结束原因、关键事件和个人结局记录。
- 自爆提示轮允许从第 1 轮普通投票开始设置。
调整
- 平票候选人不参与重投,由其余存活玩家裁决;重投继续保持不限时并允许房主结束。
- 自爆猜词、票选淘汰、冤死遗言和白板猜词按统一结算顺序处理,最终结果完成前不泄露中间状态。
- 同一轮允许因自爆失败、票选和遗言产生多名淘汰者,并避免重复记录同一玩家。
- 线下存档升级到 V3,旧版进行中存档会安全失效并提示重新开局。
[2.0.0] - 2026-08-12
对应提交:9e2c94d(feat: implement Maskword V2 modes and recovery)
新增
- 保留线上联机、线下同屏两个入口,增加经典明牌、经典暗牌、明牌自爆、暗牌自爆四种模式。
- 增加双面间谍;普通卧底全部淘汰后,存活间谍才会激活一次猜词机会。
- 增加投票阶段密封自爆:猜词与选票一起锁定,平票时延迟到重投结束后统一揭晓。
- 增加白板和双面间谍的人数门槛、占比限制及阵营平衡校验,两种特殊身份默认关闭。
- 不参赛主持人可自定义平民词和卧底词,词语只保存在私密状态中。
- 增加 15 类词库、3 档难度和适用人群元数据,线上与线下共享同一词库来源。
- 增加 16 个房间内不可重复的固定头像,贯穿大厅、发言、投票、结果和复盘。
- 增加 30/45/60 秒可选发言计时;超时只提示,不自动结束发言。
- 增加线上自动 5 秒或房主手动、线下手动或自动的结果推进设置。
- 增加日间和夜间主题:08:00/20:00 自动切换,手动选择当天有效。
- 增加模式说明、规则摘要、投票提示和结束复盘。
稳定性
- Socket.IO 每次重新连接后都会使用恢复凭证重新绑定玩家,并等待服务端最新快照后才开放操作。
- 优化手机切到后台、网络短暂中断和页面刷新后的恢复流程。
- 保留房主离线 15 秒自动转移、全员离线房间清理和服务端权威状态边界。
- 线下敏感页面在失焦、切后台、刷新后恢复到中性交接页;存档升级到 V2。
[1.4.0] - 2026-08-12
对应提交:ac12699(调整建房人数控件与线下入口卡片)
调整
- 建房人数控件统一为“减号-人数-加号”的直观顺序。
- 统一线上、线下入口卡片的尺寸和视觉层级。
- 增加窄屏下的控件位置与点击区域回归测试。
[1.3.0] - 2026-08-11
对应提交:3edc1ed(扩充共享词库至400对)
新增
- 将线上与线下共用词库扩充到 400 组、800 个不重复词语。
- 增加词语全局唯一和无向词对唯一校验。
[1.2.0] - 2026-08-11
对应提交:3a1637b(优化品牌视觉与胜利结算动效)
调整
- 更新 PWA 图标、卧底标记和线下同屏主题插图。
- 增加独立胜利结算组件,强化阵营获胜反馈。
- 优化首页、身份展示和结束页的移动端视觉层次。
[1.1.0] - 2026-08-11
对应提交:15f42f9(feat: improve online game experience)
新增
- 增加带房间号的邀请链接、系统分享和复制房间号降级方案。
- 邀请链接可直接进入加入房间流程,并支持从分享文本提取 6 位房间号。
- 建房人数改为 3–12 人固定预设,人数变化时自动应用对应身份配置。
- 增加身份高级设置折叠区、人数差异提示和房主参赛开关。
- 增加投票选择摘要、已提交人数、倒计时和粘性确认区域。
- 增加轮次结果 5 秒进度条。
调整
- 优化创建、加入、修改昵称和房间号输入流程。
- 阶段切换时清理过期提示和投票选择,降低误操作概率。
- 改善窄屏、长昵称、按钮点击区域和键盘焦点的可用性。
[1.0.0] - 2026-08-11
对应提交:84024fe(feat: implement Maskword V1)
首次发布
- 提供线上联机与线下同屏两个入口,支持 3–12 名参赛者和不参赛主持人。
- 线上创建 6 位数字房间号;支持昵称记忆、加入、退出、解散、房主转移和原房间再来一局。
- 服务端权威分配平民、卧底、白板身份和词语,结束前不会公开其他玩家私密信息。
- 身份卡支持点击查看、再次隐藏、5 秒自动隐藏以及失焦或切后台自动收起。
- 每轮随机存活玩家发言顺序,并避免白板成为首位发言者。
- 支持匿名投票、60 秒超时、主动弃权、平票重投和自动胜负判断。
- 被淘汰玩家进入观战;被淘汰房主仍可主持但不能发言、投票或成为目标。
- 支持刷新和短暂断线恢复;房主离线 15 秒后自动转移。
- 线下同屏提供逐人私密发牌、身份复查、秘密投票、中性交接页和本地存档恢复。
- 提供移动端单页界面、桌面聚会背景、PWA 安装与离线打开线下模式。
- 建立 Vue 3 + Vite 前端、Fastify + Socket.IO 服务端和共享 TypeScript 规则包。
版本演进概览
- V1:完成“能开局、能联机、能线下玩、能恢复”的核心闭环。
- V1.1–V1.4:集中改善联机入口、邀请、建房、视觉、词库数量和移动端可用性。
- V2:引入四种模式、自爆、双面间谍、头像、主题、计时、复盘和更稳定的断线恢复。
- V2.1:完善公开投票、平票裁决、平民遗言、白板猜词和多阶段结算。
- V3:将重点从词库数量转向词库质量,加入精品分包、描述问题、别名、随机方向和防重复冷却。