Skip to content

Repository files navigation

抖喵游戏屋

一个使用 React + TypeScript + Node.js + Socket.IO 搭建的实时联机小游戏项目。当前主玩法是锤子剪刀布,包含大厅、房间、聊天、观战、Bot、排位、惩罚模式、名字争夺战、后台文本配置工具等功能。

本地运行

npm install
npm run dev
  • 前端默认地址:http://127.0.0.1:5173
  • 后端默认地址:http://127.0.0.1:3000

构建检查

每次修改后建议运行:

npm run build
npm run server:build

实时刷新机制

  • lobby:update:大厅全量快照,包含在线人数、玩家列表、房间列表摘要、排行榜、大厅留言和服务端统计;服务端默认做 300ms 合并,适合房间列表、排行榜和全局结构变化。
  • room:update:单房间快照,只发给房间内玩家;包含座位、观战、准备、出拳/落子、黑白棋、井字棋、惩罚、比分和最近对局记录。服务端默认按房间做 60ms 合并,常规房间广播不带完整聊天,前端会保留已有聊天。
  • player:update:单个玩家公开资料轻量同步,适合玩家名牌、排位分、白给值、白给板、名争/极限状态等变化;前端会局部替换大厅玩家、排行榜、房间座位和观战名单。
  • chat:append / suggestion:append:聊天和留言走单条追加,避免为了新增一条消息刷新完整大厅或房间。
  • config:update / announcement:show:配置和全服公告单独广播;配置变化通常也会触发大厅快照兜底同步。

后台与配置

  • 后台入口:/admin#admin
  • 仓库默认不保存后台口令。
  • 部署时建议用环境变量设置后台口令:
ADMIN_PASSWORD=你的后台口令

配置文件说明:

  • config/default.json:默认配置,会提交到 Git。
  • config/active.json:服务器运行时实际配置,已被 .gitignore 忽略,不会提交。
  • work/uploads:玩家证明图片和后台图片上传目录,已被 .gitignore 忽略。

最近更新记录

2026-06-20

  • 优化高峰实时同步:大厅全量包改为 300ms 合并,房间状态包改为 60ms 合并,并允许丢弃过期状态包,减少晚上多人在线时的 Socket 堆积和单核 CPU 压力。
  • 新增井字棋玩法:创建房间可选择井字棋,支持真人 1v1、双方准备、随机 X/O 先手、观战聊天、固定分排位、倍率/极限排位、惩罚、断线判负和再来一局;Bot 暂不开放。
  • 优化井字棋界面:修复棋盘格子高低不齐的问题,创建房间时三种玩法卡片统一样式,并为井字棋新增纸面白、薄荷绿、夜间蓝、糖果粉、街机紫 5 种棋盘主题。
  • 主页新增赞助入口:顶部栏可打开赞助页面,集中展示 X、TG 群、爱发电、Patreon 和 Buy Me a Coffee 链接。
  • 优化黑白棋主题:不同棋盘主题现在会同步调整黑白棋子的描边和高光,创建房间的主题预览也会显示棋子效果。
  • 继续降低流量:连接时不再把完整配置重复塞进大厅包,大厅快照不再携带未使用的完整大厅聊天历史和重复排行榜玩家对象,玩家资料/白给/极限分变化优先走轻量 player:update,并为上传图片和构建静态资源开启长期缓存。
  • 全局排行榜改为 10 分钟刷新一次:顶部排行榜弹窗不再跟随每次分数变化实时跳动;大厅在线积分榜仍保持实时刷新。
  • 图片和页面订阅继续减流量:惩罚证明小图改为懒加载,进入房间后自动暂停接收完整大厅包,回到大厅时再重新订阅并补发最新大厅快照。
  • 房间内大厅留言改为按需订阅:只有切到“大 厅”聊天标签时才拉取最近留言并接收新留言;对局记录也改为终局单条追加,常规房间状态包不再反复携带最近记录。
  • 新增玩家轻量同步:玩家名牌、白给值、排位分等公开资料变化会通过 player:update 局部刷新;黑白棋白给/上贡结算卡片补充规则提示,选择后果更清楚。
  • 井字棋接入白给机制:开启白给后每次轮到自己落子会先询问是否白给,10 秒不选默认不白给;主动白给由系统随机落子并增加 0.3% 白给值,触发强制白给时只显示强制中并自动随机乱下。
  • 整理实时刷新机制说明,并收拢前端玩家轻量同步合并逻辑,减少白给值同步的重复广播。

2026-06-14

  • 极限模式新增“强行关闭”:0 分或负分也能退出极限模式,但会进入通用改名处,之后可被符合条件的极限玩家改名。
  • 大厅“名字争夺战失格者”升级为“通用改名处”,同时支持名争失格和极限强关两类改名目标;名争失名显示优先,极限改名会修改真实名字。
  • 后台补充通用改名处配置:可修改面板标题、名争/极限来源标签、极限强关提示、极限改名最低分和目标保护小时。
  • 修复惩罚阶段任务卡名字不同步:玩家进入失名状态后,房间当前惩罚任务标题和“需要惩罚”名单会立即显示失名后的名牌。
  • 修复黑白棋进行中被重置:观战玩家进入不会重开棋局,战斗席玩家对局中不能直接离开/切观战导致棋盘清空;管理员踢出对局玩家会先按被踢方判负处理。
  • 继续修复黑白棋误重置:进房后的自动开局检查不再对黑白棋准备/落子阶段执行重置,避免有人进入房间、重连或刷新同步时把正在下的棋局清空。
  • 修复黑白棋随机先手后的胜负归属:终局按黑棋所在座位/白棋所在座位判胜,不再把黑棋胜利固定算给 A;AB 玩家卡片也会按随机结果显示黑棋或白棋。
  • 黑白棋创建房间新增棋盘主题选择:内置经典绿、粉蓝白、深夜蓝、木纹棕、霓虹紫,房间内所有玩家同步显示同一个棋盘颜色。
  • 修复黑白棋认输/断线判负的排位体验:对方认输或超时判负时会兜底修正实时吃子分,保证赢家至少为正、输家至少为负,不再出现赢家扣分。
  • 惩罚证明提交区新增提示:文字证明必须填写,照片证明可选,避免玩家误以为一定要上传图片。
  • 后台“管理操作”改为分类切换:在线、离线、房间、公告四个页签,玩家管理、房间处理和公告发送不再挤在同一长页面里。
  • 后台“房间信息标签”补充游戏类型标签配置,锤子剪刀布/黑白棋标签也能改名字和颜色;同时修复颜色文本输入框过宽顶出卡片的问题。
  • 明确极限模式关闭条件:排位分必须大于 0 才能关闭,0 分不能关闭。
  • 大厅留言板和房间聊天新增“回到底部”按钮:用户往上查看旧消息时暂停自动滚动,点击按钮后回到底部并重新跟随新消息。
  • 黑白棋接入惩罚模式:创建黑白棋房可开启系统任务或玩家发布任务,终局、认输、逃跑、断线判负和管理员强制判定后都会进入惩罚流程;平局双罚、对手确认和图片证明沿用现有规则。
  • 黑白棋排位接入白给/上贡结算:开启白给模式的玩家落子后会先翻棋并锁住下一手,10 秒内可选择不白给、白给或上贡;白给按 0.1%/子增加白给值,上贡按 0.2%/子增加白给值,75% 后强制白给有概率升级为强制上贡。
  • 新增黑白棋 V1:创建房间可选择黑白棋,支持真人 1v1、观战、聊天、断线恢复、合法落子、自动跳过、终局胜负、再来一局和对局记录;黑白棋暂不接入 Bot。
  • 黑白棋接入普通排位:创建黑白棋房可选择 1/2/5/10 分/子,每次落子翻掉对方棋子时立即按翻子数 × 每子分加减,终局只记录胜负不重复结算,并进入现有在线积分榜和全局排行榜。
  • 黑白棋排位补充倍率和极限模式:倍率会放大每子实时结算分,极限模式会在每次翻子结算时套用现有极限折扣;白给模式仍不对黑白棋开放。
  • 黑白棋断线判负细化:对局中玩家断线仍先保留 30 秒静默 + 60 秒倒计时,超时后离线方判负,对局记录保存当前棋盘比分和已实时结算的排位变化,不再额外重复扣分。
  • 后台管理操作新增黑白棋强制处理:管理员可重开黑白棋、判黑方胜、判白方胜或判平局;强制结束只写胜负和记录,不额外补扣排位分。
  • 全局排行榜新增黑白棋分类:可查看黑白棋胜场榜、吃子榜和被吃榜,每行显示胜负平、吃子、被吃和净吃子。
  • 创建黑白棋房间时默认房名改为“新的黑白棋房间”,服务端也会兜底避免空房名或旧默认名串成锤子剪刀布房间名。
  • 黑白棋新增准备流程:双方战斗席玩家都点准备后,会播放随机执黑先手动画,由服务器随机决定黑棋玩家并开始对局;再来一局也会重新准备和随机。
  • 修复黑白棋棋子显示:明确棋子和合法落子提示点的显示尺寸,避免部分浏览器里棋子看不见。
  • 黑白棋认输改为对方确认:战斗席玩家可“申请认输”,对方同意后才结算;新增“逃跑”按钮,逃跑会立即判负,并按剩余空格的一半追加排位扣分;断线/离开超时按更重的全输规则处理。
  • 新增每日公告弹窗:玩家每天进入网站只显示一次,建角色前和已有角色都会弹出;后台“系统提示”可修改标题、内容、按钮文字和版本标识。

2026-06-13

  • 修复房间聊天记录:加入或创建房间时立即加载服务器返回的完整房间快照,不再需要刷新一次才看到历史聊天。
  • 优化白给自救板:卡片更紧凑,去掉重复白给值显示,投票额度改为按点击者每小时分别计算点赞 3 次、倒赞 10 次,并显示剩余额度和刷新倒计时。
  • 修复白给自救板标题数量标签过高的问题,让人数/条数徽章保持小尺寸显示,手机端也不会撑开标题区。
  • 房间聊天增加切换:可在房间内查看“本房间”和“大厅聊天室”,大厅内容沿用留言板并在房间内只读。
  • 新增排位倍率模式:玩家可花费 200 排位积分解锁倍率房,支持 x2 / x5 / x10,结算按基础赌分乘倍率计算,并在进房前提示风险。
  • 新增全局排行榜弹窗:顶部增加排行榜入口,支持正分榜、负分榜、名字争夺战榜和白给榜,每类最多显示 50 名并标记在线状态。
  • 新增极限模式:个人设置可开启极限模式,开启时排位分归零但保留胜负平和惩罚次数;极限排位房禁止倍率/Bot,支持分段加减分折扣、整点扣分和连胜风险。
  • 排行榜补充极限正分榜和极限负分榜,方便单独查看开启极限模式的高分和低分玩家。
  • 合并玩家名牌状态标识:名争、极限、极限名争统一显示为一个小标签,避免名字前后重复堆标识。
  • 优化失名者显示:失名状态下不再额外堆状态标签,极限失名玩家直接显示为“极 + 代号/玩家改名”。
  • 优化大厅房间排位标签:显示为“排位 20 分”,倍率房合并显示为“排位 20 分 ×10”。
  • 修复对战比分结算文字溢出:长名字胜利文案会自动换行,手机端和电脑端都不会把比分卡片顶出边界。
  • 修复对局记录长名字布局:玩家名和结果会在卡片内正常换行,手机端改为上下排列,避免被挤成竖条。
  • 调整极限连胜风险:连胜触发时改为按概率额外扣 333 分,不再直接变成 -999 分。
  • 调整极限/普通排位进房规则:排位类型不匹配时可以进入房间观战,但不能自动坐下或手动上桌。
  • 修复页面开着但实际断联的问题:Socket 重连成功后会自动用本地凭证重新同步玩家、房间和座位状态。
  • 对局记录电脑端也改为上下排列,彻底避免长名字在横向三列里被挤成竖条。
  • 名字争夺战失格者离线后会继续在名单保留 30 分钟,并显示离线保留倒计时,方便其他玩家仍可抢先改名。

2026-06-12

  • 新增白给模式:个人设置可开启白给模式,真人对战出拳区显示“白给”按钮;Bot 对战不显示也不会触发白给。
  • 新增白给自救板:玩家可提交 12 小时自罚宣言,其他玩家可点赞降低白给值或倒赞增加白给值,后台可修改自救板文案。
  • 修复白给模式细节:强制白给结算文案更明确,玩家名牌公开显示白给值,已上板玩家不再重复显示自救提交框。
  • 调整白给结算:白给现在是正式出拳状态,点击后会锁定等待结算;双方白给算双输,排位双方扣分,惩罚房双方受罚。
  • 修复排位断线判负:断线倒计时开始时锁定胜负对象,对手之后离开房间或下桌也会正常加减排位分。
  • 调整大厅布局:名字争夺战失格者面板移动到大厅房间列表下方,并预留“白给内容”开发中占位框;修复电脑端房间列表房间少时出现大块空白的问题。
  • 降低实时同步压力:大厅广播合并,配置从高频大厅包拆出,房间更新不再重复发送完整聊天,对局记录默认只下发最近 20 条。
  • 断线提示改成两段式:前 30 秒静默,不显示离线;30 秒后才显示 60 秒倒计时。
  • 在线积分榜改为显示全部在线玩家。
  • 优化大厅排版:房间列表、留言板、排行榜使用更稳定的滚动布局,减少页面抖动。
  • 优化房间排版:AB 对战栏、房间玩家名单、聊天、对局记录在桌面和手机端更稳定。
  • 修复一方已出拳但另一边为空时,新玩家无法坐到空位的问题。
  • 移除仓库里的默认后台密码,后台口令改为部署时单独设置。

维护约定

之后每次修改功能或修复 bug,都同步更新本 README 的“最近更新记录”。记录保持简洁,重点写用户能感知到的变化和部署注意事项。

如果这次修改需要同步到 GitHub,不能只改本地文件;必须完成 git commitgit push 后,GitHub 页面才会更新。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages