单文件 HTML5 P2P 多人卡牌游戏。支持 2–9 人联机(默认上限9,开启内置turn服务上限为6),基于 PeerJS WebRTC 点对点连接。游戏风格为“漫画手绘”,提供 1–3 副牌(每副 54 张)并以颜色区分。
- P2P 多人联机:PeerJS + WebRTC DataChannel(星型拓扑,房主权威状态)
- 公网联机优化:默认 STUN 直连;可选 TURN 回退(按需开启)
- 1–3 副牌:每副 54 张,红/蓝/绿配色区分
- 胜利条件:先打光手牌即胜
- 质疑机制:顺序/乱序质疑(房主在大厅设置)
- 质疑公平窗口:100ms 短窗口仲裁,避免“同帧抢质疑”不公平
- 断线重联与房主迁移:房主断线后自动迁移,玩家可重连
- 移动端友好:安全区适配、底部手牌抬高
本项目为纯前端静态文件,无需构建。推荐使用微信扫码打开避免不同浏览器限制(无法打开可以刷新几次)。

双击 index.html 打开(部分浏览器可能限制 WebRTC 连接)。
访问:https://lu123bing.github.io/liars-gambit/
index.html:单文件完整版(HTML/CSS/JS)
- 输入昵称,创建房间
- 让玩家扫码或输入房间号加入
- 设置牌组数量、质疑模式、出牌记录显示
- 点击“开始游戏”
在同一 Wi-Fi / 热点下通常可直接联机,成功率最高。
项目默认使用 STUN(直连优先)。当两端网络环境较严格(对称 NAT / 防火墙)时,可提供 TURN 以提升成功率。
当前策略:
- 先尝试 STUN 直连;
- 若失败且配置了 TURN,则自动重试带 TURN 的连接。
不需要把密钥写进代码。可通过运行时配置注入:
localStorage键:lg_net_config- 或全局对象:
window.__LG_NET_CONFIG__
示例字段:turn.urls、turn.username、turn.credential。
- 心跳间隔:10 秒
- 心跳超时:30 秒
- 默认玩家上限:9
率先打光手中所有手牌的玩家获胜。
- 使用 1-3 副标准 54 张 扑克牌(含大王 & 小王)。
- 🤡 大王 & 小王 是万能牌——出牌时可充当任何数字,被质疑时 始终视为真牌。
- 每轮开始,庄家指定一个 目标数字(如 "8")。
- 庄家必须先出牌,声称它们都是指定数字。
- 声明的 数量必须真实(打几张说几张),但 数字可以造假!
从庄家下家开始顺时针,每人可选:
- 🃏 跟牌:打出任意张数的牌,声称都是目标数字。同样:数量真实,数字可假。
- ⏭️ 过:跳过本次,后续轮次仍可出牌。
- ⚡ 质疑:对上一位出牌者喊出 "质疑!"。
质疑将翻开 上一位出牌者 最后打出的牌:
- 质疑成功(牌中有假):被质疑者 收走牌池所有牌,质疑者 成为下轮庄家。
- 质疑失败(全是真牌/万能牌):质疑者 收走牌池所有牌,被质疑者 成为下轮庄家。
💡 质疑模式 由房主在大厅设置:
- 顺序质疑:仅出牌者的下家可质疑。
- 乱序质疑:任何人都可抢先质疑(手快有,手慢无)。
- 如果出牌后所有人都选择了“过”,该轮结束。
- 牌池中所有牌进入 弃牌堆(不再使用)。
- 最后出牌者成为新庄家,开始下一轮。
打出最后一张牌且未被成功质疑 → 获胜!
- 🤡 万能牌妙用:混入真牌中出牌,诱导对手错误质疑!
- 📊 数量陷阱:大量出牌施压,或少量出牌钓鱼——抉择在你。
- 👀 记牌读心:注意已出过的牌和各人反应,抓住破绽!
本项目部分音效来源于 Pixabay,遵循其 Content License 使用。
- 音效来源页:https://pixabay.com/
- 平台许可说明(摘要):可免费使用、可修改、通常无需署名;但不得将素材原样单独售卖/分发,不得用于误导、违法或商标用途等。
- 完整许可条款:https://pixabay.com/service/license-summary/
说明:以上为许可摘要,最终以 Pixabay 官方完整条款为准。
仅供学习和交流使用。