← 全部项目

Maskword · 谁是卧底

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

正常开放当前版本 3.0
Maskword · 谁是卧底封面

项目介绍

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

V1 功能 创建 6 位数字房间号,设置平民、卧底、白板人数以及房主是否参赛 昵称统一设置并在本机记忆,创建房间与加入房间使用两条独立入口 服务端随机分配身份和本地词库词语,客户端在结束前只能获得自己的私密信息 身份卡点击查看、再次点击隐藏、5 秒自动隐藏,并在失焦或切后台时收起 每轮重新随机存活玩家发言顺序,非白板优先成为第一位发言者 普通匿名投票、60 秒超时弃权、按存活人数控制主动弃权、无时限平票重投;平票候选人可看到自己与上一轮匿名票数 淘汰观战、退出处理、自动胜负判断、身份公开和原房间再来一局 刷新/短暂断线恢复;房主离线 15 秒后自动转移,也可在任何阶段手动转移 等待房间、结束房间和全员离线游戏的内存清理 PC 端使用独立 WebP 聚会背景,手机端保持无干扰的单页布局 线下同屏支持 3–12 名参赛者、主持人不参赛、逐人私密发牌和无倒计时匿名投票 线下对局按已确认步骤保存在本机;刷新、失焦或切后台后从中性交接页恢复,不重新展示敏感信息 可安装为 PWA;首次联网完成缓存后,可断网打开线下同屏并继续本地对局 V1 不包含账号、语音、录音、文字聊天、广告、数据库、Redis、ORM 和 Docker。

项目截图

Maskword · 谁是卧底 截图 1
UPDATES

更新与计划

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:将重点从词库数量转向词库质量,加入精品分包、描述问题、别名、随机方向和防重复冷却。