旋友圈棋牌定制版源码-麻将框架二开全套

技术栈总览
层级 | 技术选型 | 说明 |
|---|---|---|
服务端 | Java + Netty 4.0.36 | 无 Spring / 无 Maven,纯手工编译 |
客户端 | Unity 2019.2.17f1 + C# | 596 个脚本文件,5 个场景 |
数据库 | MySQL 8 | 配置了读写分离(实际指向同一实例) |
通信协议 | 自研二进制 + WebSocket | 自带 IDL 定义文件和代码生成器 |
语音 | 腾讯 GCloudVoice | 客户端集成,需申请 AppID |
版本号 | 0.0.1 | 服务端硬编码 |
服务端:麻将框架跑扯旋
翻开服务端源码,最先注意到的是包名 com.game.majiang——但整个项目实际运行的是扯旋。配置文件 serverConfig.xml 里写的服务名是"旋旋友圈",入口类是 com.game.majiang.Server。这个命名痕迹说明底层框架最初为麻将开发,后来被改造成了扯旋专用平台。
服务端是一个单体 Java 应用,没有用 Spring、没有 Maven 或 Gradle 构建工具,25 个 JAR 包手动放在 lib 目录里管理。核心依赖包括 Netty 4.0.36(WebSocket 通信)、MySQL Connector/J 8.x、fastjson(JSON 序列化)、Disruptor(高性能队列)和一个名为 comm.jar 的私有框架包。
启动入口是 com.game.server.Main,启动后监听 8051 端口的 WebSocket 连接。服务端支持在控制台输入 stop 指令来安全关闭——这在没有管理后台的情况下是唯一的停服方式。
扯旋的游戏逻辑在 com.game.majiang.logic.chexuan 包下,游戏状态机定义了 7 个阶段:
状态 | 含义 | 说明 |
|---|---|---|
WAIT | 等待 | 玩家入座等待 |
READ | 准备 | 所有人确认准备 |
LICENSING | 发牌 | 系统发牌 |
BET | 压注 | 玩家下注 |
GROUPCARDS | 组牌 | 玩家整理手牌组合 |
END | 结算 | 本局计算输赢 |
CUOPAI | 搓牌 | 搓牌动画展示 |
匹配系统配置了 6 个级别的房间,从菜鸟场(200 底分,入场费 4000)到尊爵场(2500 底分,入场费 50000),每个房间收取不同比例的服务费。单桌最多支持 8 人同时游戏。

值得一提的是,源码的算法目录下实际包含 5 种牌类游戏的算法实现——扯旋、斗地主、牛牛、五子棋、炸金花——但配置文件里只启用了扯旋一种。其余四套算法代码完整存在,只是没有接入匹配和场景流程。
自研协议与代码生成器
这套源码没有用 Protobuf 或 JSON-RPC,而是自研了一套协议定义语言。协议文件是 source/player.h,共 1476 行,定义了 74 种以上的客户端请求和 113 种以上的服务端响应。
协议用箭头标记通信方向:
-> 客户端发往服务端(C2S)
<- 服务端发往客户端(S2C)
<-> 双向消息
例如登录相关的定义:
-> cycLoginReq(account, password, ...) // 客户端发起登录
<- cycLoginResp(playerId, nickname, ...) // 服务端返回登录结果
配套的代码生成器 com.comm.tools.Main 可以读取这个 IDL 文件,自动生成对应的 Java 消息类。客户端同步使用大端序二进制编码来序列化消息——这意味着改协议时,两端必须同步更新。
客户端结构
Unity 客户端基于 2019.2.17f1 版本开发,596 个 C# 脚本文件,109 个预制体,16 个自定义 Shader。场景包括启动页(Start)、登录页(Login)、大厅(Hall)和游戏桌面(xuanxuan)。
登录支持四种方式:账号密码、微信授权、游客模式、手机号+短信验证码。支付模块(支付宝走 JTPay 通道、微信支付走 UnPay 通道)在代码中仍有完整实现,但当前版本已全部注释掉。



客户端集成了腾讯 GCloudVoice 实现游戏内实时语音聊天,以及 ZXing 库处理二维码扫描(用于邀请入桌、加入俱乐部等场景)。通信层用 Socket.IO 封装 WebSocket,消息体采用与服务端对应的大端序二进制序列化。
俱乐部与联盟体系
这套源码的社交体系做得比游戏本身还重。协议文件里俱乐部和联盟相关的消息有 85 条以上,涵盖了完整的组织管理链路:
俱乐部层级:
创建 / 解散俱乐部
申请加入 / 审批 / 踢出成员
设置管理员 / 转让会长
俱乐部内公告、战绩统计
代开房间、俱乐部专属匹配
联盟层级:
俱乐部组建联盟 / 加入联盟
联盟内跨俱乐部匹配
多级管理权限

这套体系说明产品定位不是纯公开匹配的休闲游戏,而是面向熟人圈子和代理运营的私域棋牌。俱乐部主可以管理自己的玩家群体,联盟则把多个俱乐部串在一起。
部署步骤
环境准备
组件 | 版本要求 |
|---|---|
操作系统 | Linux(CentOS / Ubuntu 推荐) |
JDK | 1.8 及以上 |
MySQL | 8.0 |
开放端口 | 8051(WebSocket) |
服务端部署
安装 JDK 8 和 MySQL 8,创建数据库(库名
xuanxuanyouquan,字符集utf8mb4),导入初始化 SQL。修改
config/dbConfig.xml,填入数据库地址、端口、账号、密码。读写库可配不同地址,单机部署指向同一实例即可。修改
config/serverConfig.xml,确认监听端口(默认 8051)和服务名。修改
config/matchingConfig.xml,按需调整匹配房间的底分、入场费、服务费。编译部署:由于没有 Maven/Gradle,需要手动用
javac编译或用 IDE(IntelliJ / Eclipse)导入项目,将lib/下的 25 个 JAR 加入 classpath 后编译运行。启动命令:
java -cp "lib/*:src" com.game.server.Main
客户端配置
用 Unity 2019.2.17f1 打开
xuanyouquanUnity项目。修改服务器连接地址,指向部署好的服务端 IP 和端口。
如需语音功能,申请腾讯 GCloudVoice 的 AppID 并填入配置。
打包目标平台的安装包(Android APK / iOS IPA)。
预估部署耗时: 半天到一天。主要时间花在手动编译配置和数据库初始化上,没有自动化构建脚本。
二开评估
评估维度 | 情况 | 说明 |
|---|---|---|
源码完整度 | 全明文 | Java 服务端 505 个文件 + Unity 客户端 596 个文件,无加密无混淆 |
构建工具 | 无 | 没有 Maven/Gradle,手动管理 25 个 JAR |
框架文档 | 无 | 自研框架无文档,全靠读代码理解 |
协议扩展 | 需两端同步 | 改 IDL → 跑代码生成器 → 服务端和客户端同时更新 |
新增玩法 | 有基础 | 4 套闲置算法(斗地主/牛牛/五子棋/炸金花)可复活启用 |
支付对接 | 需重写 | 原有支付通道已注释,接口代码可参考但第三方通道需重新对接 |
俱乐部体系 | 成熟 | 85+ 条协议消息,改动量小,扩展空间大 |
二开门槛 | 中高 | 自研框架学习曲线陡,但一旦理解了协议层和状态机,扩展并不困难 |
整体来看,这套源码适合有 Java 基础且愿意花时间理解自研框架的团队。最大的二开价值在两处:一是 4 套现成但未启用的牌类算法,接入匹配流程即可上线新玩法;二是已经做好的俱乐部联盟体系,省去了从零开发社交功能的工作量。最大的障碍则是没有构建工具和文档,初期上手成本较高。
下载地址
会员免费本资源为会员专享,登录后可下载

