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

房卡联盟2026-08-25693 阅读
约 1,837 字 · 大约 6 分钟
旋友圈 品牌启动页
旋友圈 品牌启动页

技术栈总览

层级

技术选型

说明

服务端

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)

服务端部署

  1. 安装 JDK 8 和 MySQL 8,创建数据库(库名 xuanxuanyouquan,字符集 utf8mb4),导入初始化 SQL。

  2. 修改 config/dbConfig.xml,填入数据库地址、端口、账号、密码。读写库可配不同地址,单机部署指向同一实例即可。

  3. 修改 config/serverConfig.xml,确认监听端口(默认 8051)和服务名。

  4. 修改 config/matchingConfig.xml,按需调整匹配房间的底分、入场费、服务费。

  5. 编译部署:由于没有 Maven/Gradle,需要手动用 javac 编译或用 IDE(IntelliJ / Eclipse)导入项目,将 lib/ 下的 25 个 JAR 加入 classpath 后编译运行。

  6. 启动命令:

java -cp "lib/*:src" com.game.server.Main

客户端配置

  1. 用 Unity 2019.2.17f1 打开 xuanyouquanUnity 项目。

  2. 修改服务器连接地址,指向部署好的服务端 IP 和端口。

  3. 如需语音功能,申请腾讯 GCloudVoice 的 AppID 并填入配置。

  4. 打包目标平台的安装包(Android APK / iOS IPA)。

预估部署耗时: 半天到一天。主要时间花在手动编译配置和数据库初始化上,没有自动化构建脚本。

二开评估

评估维度

情况

说明

源码完整度

全明文

Java 服务端 505 个文件 + Unity 客户端 596 个文件,无加密无混淆

构建工具

无

没有 Maven/Gradle,手动管理 25 个 JAR

框架文档

无

自研框架无文档,全靠读代码理解

协议扩展

需两端同步

改 IDL → 跑代码生成器 → 服务端和客户端同时更新

新增玩法

有基础

4 套闲置算法(斗地主/牛牛/五子棋/炸金花)可复活启用

支付对接

需重写

原有支付通道已注释,接口代码可参考但第三方通道需重新对接

俱乐部体系

成熟

85+ 条协议消息,改动量小,扩展空间大

二开门槛

中高

自研框架学习曲线陡,但一旦理解了协议层和状态机,扩展并不困难

整体来看,这套源码适合有 Java 基础且愿意花时间理解自研框架的团队。最大的二开价值在两处:一是 4 套现成但未启用的牌类算法,接入匹配流程即可上线新玩法;二是已经做好的俱乐部联盟体系,省去了从零开发社交功能的工作量。最大的障碍则是没有构建工具和文档,初期上手成本较高。

下载地址

会员免费

本资源为会员专享,登录后可下载