大家好,我是HuiZhou12(你们可以叫我老周)。最近我突发奇想,想做一款带有RPG技能体系、赛博朋克/硬科幻画风的“战术五子棋” 。 起初,我以为这只是个简单的WebSocket玩具项目。但随着开发的深入,我的“架构强迫症”发作了,为了保证哪怕在弱网环境下也能有极致的对战体验,我推翻了内存单机架构,直接上了一套分布式高并发架构。
现在核心闭环(登录->匹配->对战->断线重连->结算->返回大厅)已经全部跑通。即使有ai大模型进行辅助,但一个人肝全栈,还是撑不住,太累了!所以现在准备开源,希望能在这里找到志同道合的伙伴一起把这个项目做大!
视觉尝鲜
用户登录界面
赛博朋克风的匹配雷达按钮
匹配成功
下棋时的混合渲染特效
断线重连时的“琥珀色警戒”
注意!这不是一个普通的五子棋
想必从上面的效果图可以看到,本项目并非传统五子棋实现,而是在经典规则基础上引入了多类型棋子、技能机制、冷却时间与局部博弈判定,
为了配得上前端的视觉表现以及不一样的游戏机制,后端的基建我一点也没含糊。核心技术栈基于 Java 21 + Netty + Redis:
- 高并发通信架构 (主从 Reactor) :抛弃了传统的 Web 容器,基于 Netty 构建了主从 Reactor 线程模型。严格区分了 IO 线程与业务线程职责,绝对不让 EventLoop 阻塞,轻松应对高并发 WebSocket 握手与长连接场景。(咳咳,大马拉小车)
- 极客级的协议传输 (Protobuf) :全面弃用 JSON,采用 Google Protobuf 自定义二进制协议。不仅彻底解决了 TCP 粘包/拆包问题,还极大地压缩了网络载荷,让弱网环境下的传输犹如德芙纵享丝滑。
- 无状态分布式网关:通过 Redis + Redisson 集中管理用户会话、房间状态与对局生命周期。网关层完全无状态,意味着这个游戏后端可以随时多实例部署、横向扩展。
- 状态机 (FSM) 与绝对一致性:对局状态流转全部交由有限状态机严格控制。结合 Redisson Delayed Queue 实现“回合超时自动落子”与“断线判负”,就算玩家拔网线,对战逻辑依然具备最终一致性,杜绝前端参与计算!
压测炼狱!我们用数据说话
我不喜欢光说不练。在核心路径完工后,我用 Apache JMeter (CLI Mode) 在单机与云服务器环境下进行了地狱级的并发与稳定性验证:
HTTP 登录接口高并发无缝衔接 WebSocket Upgrade。 模拟连接风暴下的瞬时建连。 长连接保持与异常断连处理测试。
结果:在极限弱网和高并发条件下,实现 0 报错、无连接泄漏,并成功定位并解决了几个隐藏的性能瓶颈。当然这也只是我的其中一个测试结果,相关压测大家可以前往我的github仓库进行查看。(由于我用的是办公本,性能压则仅供参考哈)
最后,我需要各位大佬(抱腿)!
这个项目的底座已经打下(其实还有很多bug),但我一个人的精力确实到了极限(前端和后端的逻辑快把我搞精分了)。 项目目前已经开源 附上 GitHub 链接,我诚挚邀请各位大佬加入:
前端特种兵 (Vue 3 / CSS 特效)
我受够了前端 AI 生成的臃肿代码,我要的是极致的控制力。
如果你热衷于打磨 UI 质感、写酷炫的 CSS 动画,或者想尝试 Canvas+DOM 混合渲染,这里有绝佳的舞台。
目前亟待开发:排行榜、个人界面、好友系统、更酷炫的技能特效。
后端架构师 (Java / Netty / Redis)
万物皆对象,唯有架构永恒。
如果你对分布式系统、网络编程感兴趣,想拿一个硬核的实战项目练手或者写进简历。
目前亟待优化:心跳机制调优、匹配匹配算法设计(这个我是真的不会写啊!)。
游戏策划/数值体验官
平衡,是一门杀人的艺术。
懂得平衡游戏性,设计技能体系(比如:弓箭手冷却几回合合适?)。能否让这款棋类游戏真正具备 RPG 的深度,就靠你了!
后端特种兵(Java / Netty / Redis)
没有解决不了的 Bug,只有不够极致的优化。
只需要关心快、更林、最快。如果你看到 EventLoop 被阻塞会感到生理不适,如果觉得 100ms 的延迟是对玩家的羞辱,加入我吧!。
目前亟待开发:数据库开发、好友系统、段位计算逻辑、胜负判定优化。
加入方式: 在 GitHub 提 Issue,或者在评论区留言/私信我。哪怕只是来点个 Star,或者 Clone 下来把玩一下,也是对我莫大的鼓励!