达达麻将-四川血战血流房卡全套源码:Cocos Creator客户端加Node.js服务端
达达麻将是一套只做四川麻将的房卡源码,客户端用 Cocos Creator 1.3.2,服务端是纯 Node.js,前后端加代理后台全部是明文 JS,没有编译过的 DLL 或加密脚本。体量很小(解压后约 126M,
ddmj_20161230115M、server11M),适合想看清一套房卡麻将从建房到结算怎么走、或者在它上面加地方玩法的人。
包里有什么
解压后顶层只有两个目录:ddmj_20161230(客户端、代理系统和文档)和 server(游戏服务端)。目录名里的 20161230 就是这版代码的打包日期,后面讲到的 Node.js 4.6、MySQL 5.1 这些老版本也都是那个年代的配置。
目录 | 内容 |
|---|---|
| Cocos Creator 工程,45 个脚本,6 个场景(登录、大厅、牌局、创建角色、加载、热更新),带 |
| 代理系统,独立的一套 Node.js 服务端 + Cocos Creator 管理端 |
| 开发环境搭建、CentOS 部署、Creator 升级说明、源代码说明表 |
| 账号服、大厅服、麻将游戏服三个服务,配置文件、SQL、测试脚本 |
服务端的 node_modules 已经带好(express、socket.io、mysql、log4js、fibers),代理服务端还多一个 forever,不用再去装依赖。
四川麻将的两个玩法写在哪
游戏服目录 majiang_server 里两份核心文件分别对应两种玩法:gamemgr_xzdd.js 是血战到底,gamemgr_xlch.js 是血流成河,各 64K 左右,出牌、碰杠、胡牌判断和结算都在里面。胡牌算法单独放在 mjutils.js,tests 目录里还有一个 mjhupai.js 专门测胡牌。
建房界面能选的规则和代码里的字段对得上:4 局或 8 局(分别扣 2 张、3 张房卡,房卡在第一局结算时才扣,提前解散不扣)、3/4/5 番封顶、自摸加底或加番、点杠花算点炮还是自摸,另外有换三张、将对、门清中张、天地胡几个勾选项。
下面是这套四川麻将的登录页、大厅、建房规则和牌局界面:
![]()
登录页:游客登录和微信登录
![]()
大厅:创建房间、加入房间,左侧是健康游戏公告
![]()
创建房间:血战到底、血流成河两个页签和规则选项
![]()
进房后等人:邀请微信好友、返回大厅、解散房间
![]()
血战到底牌局:顶部显示局数、封顶和玩法,中间是剩余张数
客户端除了牌局本身,还带了战绩回放(ReplayMgr.js)、语音(VoiceMgr.js,原生层在 native/android 和 native/ios/VoiceSDK 里用 AMR 编码)、热更新(HotUpdate.js 加 version_generator.js 生成清单)和 AnySDK 接入(微信登录、分享)。
服务端为什么只有三个进程
server/server 的结构非常直白:
account_server:账号登录,端口 9000,同时提供dealer_api.js,给代理系统充房卡时调用;hall_server:大厅,9001 给客户端、9002 给游戏服汇报;majiang_server:麻将游戏服,HTTP 9003 向大厅报状态,socket.io 和客户端通信。
start_all.sh 在 Linux 上用 nohup 依次拉起这三个服务,Windows 下对应 0.start_all.bat 和几个编号 bat。所有地址、端口、MySQL 账号集中在一个 configs.js 里,另有 configs_local.js、configs_local2.js 两份局域网配置可以参考。
目录里还有一个 texas_server,只有 main.js 和 roommgr.js 两个文件,监听 8081,里面是建角色、聊天、进房这种早期框架代码,没有德州扑克的牌局逻辑,也没接进启动脚本——当成作者留下的半成品看待即可,别把它当成能用的第二个游戏。
![]()
服务端根目录:三个服务、配置、启动脚本和 SQL
![]()
麻将游戏服:gamemgr_xzdd.js 和 gamemgr_xlch.js 两个玩法文件
数据库只有七张表
server/server/sql/db_ddmj.sql 约 1.8M,建了 7 张表:t_accounts、t_guests、t_users、t_rooms、t_games、t_games_archive、t_message。体积大是因为带了 1500 多条历史牌局存档(t_games_archive)和 89 条房间记录,这些是作者测试留下的数据,正式用之前清空这两张表即可。t_message 里的公告和「房卡购买」提示语打包前已改成中性文字,按自己的运营信息再改一次就行。
代理系统的库单独放在 dealers/server/sql/db_dealers.sql(28K)。
代理系统是三级分销
dealers 是一套独立部署的代理后台,文档里说明的规则是:代理在平台充值得到积分,用积分买房卡或申请提现,可以发展下级;代理给玩家充房卡时,自己拿 A% 积分返点,上级拿 B%,上上级拿 C%,三个比例由管理员设定(接口 /change_rates)。
服务端按模块拆成 dealer_module、player_module、shop_module、notice_module 等 6 个文件,分别管代理、玩家查询和转房卡、商品购买与记录、公告。管理端同样是 Cocos Creator 工程,界面只有一个 appScene 场景。
部署要准备什么
包里的《天天麻将开发环境搭建》和《CentOS部署》两份文档写的是同一套步骤(文档里沿用了「天天麻将」这个旧名字):
装 MySQL 5.1.x,建一个库(默认名
nodejs),导入 SQL;CentOS 7 下把 mysql 换成 mariadb;装 Node.js 4.6.0(文档给了官方下载命令),代理服务端目录里自带了一个 Windows 版
node.exe;改
configs.js里的HALL_IP和 MySQL 账号;客户端用 Cocos Creator 1.3.2 打开,改
assets/scripts/HTTP.js里的账号服地址;浏览器调试时在网址后加
?account=asdf1、?account=asdf2就能多开几个号凑一桌。
需要注意的几处:
Creator 版本必须用 1.3.2,文档专门写了各版本引擎内核不兼容。想升新版 Creator 要按《Cocos Creator版本升级说明》先删
build目录重新生成原生工程,脚本 API 也要跟着改;包里自带的 Android 签名证书
boyue.keystore密码是公开的,上线前换成自己的;热更新清单和
version_generator.bat里还指向作者的局域网地址192.168.1.88:10086,要改成自己的热更新服务器;Node.js 4.6 和 MySQL 5.1 都很老,直接上新版本可能遇到
fibers编译失败、mysql 驱动认证方式不兼容,最省事的是先按文档版本跑通,再逐个升级。
![]()
客户端工程目录:assets、build、native 和 Creator 配置
![]()
docs 目录:搭建、部署、升级和源代码说明
能改到哪
前后端加代理后台全是明文 JS,所以改动空间取决于你愿意动多少:换皮只要替换 assets/resources 下的图片和动画;加规则在 gamemgr_xzdd.js 里加字段并同步建房面板;要做别的地方麻将,可以照着 majiang_server 复制一个游戏服,大厅按服务器 ID 分配房间的机制已经有了。没有的东西也要心里有数:没有金币场、没有俱乐部或亲友圈、没有网页运营后台(除了代理后台),只有四川麻将一个游戏。
如果想看同一种玩法的重量级做法,《中發四川麻将3D房卡版-Unity+网狐6603双端全套源码/血战到底血流成河四玩法/带六库数据库与搭建文档可二开》也是血战到底加血流成河,但用的是 Unity 客户端加网狐 C++ 服务端,带 SQL Server 六个库和 ASP.NET 后台,两套放在一起对比,能看出 Node.js 三进程和网狐多进程在部署成本上的差别。
四川麻将血战血流源码对比1 篇
下载地址
全员付费本资源为付费内容,登录后可下载


