前阵子一个在县城开棋牌室的兄弟找我喝酒,说他店里红中麻将的台子天天爆满,想弄个微信小程序版的,让老顾客在家也能组局。
我一开始是拒绝的,麻将游戏这东西,政策敏感、开发量大,搞不好就白忙活。后来他给我看了别人家正在用的“七星房卡”系统,我研究了一圈发现,这玩意儿把麻将小程序的架设门槛降得挺低,只要服务器跑起来、源码配置好,前后不到两天就能出个能玩的成品。今天就把这次搭建的全过程复盘出来,从服务器选配到红中玩法配置,再到审核怎么过,一点不藏着。
先说明一点:本文讲的红中房卡麻将纯粹是熟人娱乐的房卡消耗模式,不涉及任何金币兑换、虚拟货币提现,完全合规。想搞擦边球的可以关掉这篇文章了,以下只聊正经技术。
一、为什么选七星房卡平台?我的三个考量
市面做房卡棋牌源码的服务商不少,我对比了几家之后定了七星房卡,主要图这几点:
源码是成套的,不用自己拼。 做麻将游戏,服务器端、客户端、后台管理、数据库脚本,缺一个都跑不起来。七星房卡给的是一整套压缩包,里面server端用Node.js写的,client端是Cocos Creator工程,后台管理是个web面板,数据库SQL脚本直接导入MySQL就能用。最关键的是红中麻将的玩法逻辑已经写好了,包括癞子牌判定、胡牌算法、杠开结算这些,不用我再对着规则书敲代码。
搭建文档跟得上。 有些服务商扔给你一个压缩包和一句“自己研究”就消失了。七星这边提供了一个还算详细的部署文档,从服务器环境安装到客户端打包上传的每一步都写了,虽然有些细节有点旧,但对照着搞基本不会卡死。
后台能直接管房卡和代理。 房卡模式的核心就是房卡生成、销售、消耗、统计,七星的后台这块做得比较成熟。我可以自己建代理账号、设不同比例的充值提成,棋牌室老板自己也能登录后台给熟客充房卡,不用每次都来找我。
二、服务器环境配置:我踩过的两个坑
源码跑起来之前,先把运行环境搭好。我用的是一台腾讯云轻量应用服务器,4核8G内存,CentOS 7.9系统。官方文档建议2核4G起步,但我考虑到后面可能要跑两三个游戏,就稍微配高了一点。
安装基础环境,一条命令把Node.js、MySQL、Redis、Nginx全装了。Node版本注意要跟源码要求的对齐,七星这套要求v14.x,太高了会报crypto库的兼容错误——这个坑我踩了两小时,最后是退回到v14.18.0才跑通。
导入数据库。 源码包里有个db.sql文件,用Navicat连上MySQL,新建一个数据库名字叫qixing_mahjong,字符集选utf8mb4,然后把SQL文件拖进去执行。十几秒表就全建好了,默认会生成一个管理员账号,用户名admin,密码是加密过的,第一次登录后进数据库把密码改成自己的。
配置服务端。 server目录下有个config.js,把数据库连接字符串、Redis密码、服务器公网IP填进去,端口号默认是8001,跟客户端通信用的websocket协议。改完保存后,在server目录下跑node app.js,终端打出“server started on 8001”就说明启动成功了。
这里第二个坑来了:云服务器的安全组规则默认不会放开8001端口,客户端连不上。我一开始在本地调试怎么都连不通,查了半小时才发现是防火墙挡了,去腾讯云控制台把8001和后面客户端websocket用的443端口都开放之后立马搞定。
三、红中麻将客户端打包与微信小程序上传
客户端是Cocos Creator 2.4.x的工程,这个版本对微信小游戏的支持已经很稳了。用Cocos Dashboard打开项目,先别急着构建,把几个关键配置改好:
-
在
project.json里把serverUrl改成你服务器的ws地址,格式是wss://你的域名:443,注意必须用wss,微信要求加密传输。 -
把AppID填进构建面板,选“微信小游戏”平台。
-
在“模块设置”里只勾选2D渲染、Socket、龙骨动画这些麻将用得上的,3D物理之类的全关掉,能减掉差不多300K包体积。
然后点构建,等个一两分钟,输出目录里会生成build/wechatgame文件夹。打开微信开发者工具,导入这个文件夹作为小游戏项目,AppID要和你注册小游戏时填的一致。模拟器里能看到游戏加载画面,但暂时没法真机测试完整流程,因为域名备案和WebSocket还没配好。
域名备案和SSL证书。 微信要求服务器域名必须备案且启用HTTPS。备案我之前就做好了,直接上腾讯云申请一个免费SSL证书,下载Nginx版的,传到服务器的Nginx配置目录,把80端口强制跳转443,并把/wss路径反向代理到本地的8001端口。配完后用在线WebSocket测试工具连一下自己的域名,返回101 Switching Protocols就稳了。
回到微信开发者工具,勾上“不校验合法域名”可以先跳过验证进行真机调试,但最终提交审核前必须把合法域名在后台配好。这里建议用二级域名单独给游戏socket用,比如game.你的域名.com,方便以后扩展。
四、红中麻将游戏界面与核心玩法配置(附三张演示插图)
4.1 游戏大厅
用开发者工具扫码进游戏,首先看到一个竖屏的大厅界面。背景是一张深绿色绒布纹理,大厅顶部是“XX红中麻将”的金色标题,中间排列着三个入口:“好友场”(消耗1张房卡)、“俱乐部场”(由俱乐部管理员开房)、“比赛场”(定时赛,消耗房卡或免费入场)。底部导航条是“大厅”、“战绩”、“商城”、“我的”四个图标。右上角显示房卡余量“36张”,旁边有个“+”号按钮点进去可以直接购买房卡套餐。
这个大厅界面在Cocos工程里对应的场景文件是hall.fire,所有的按钮事件都在对应的hall.js脚本里绑定了。如果要换Logo或替换背景图,找到resources/textures目录下的对应图片文件替换,然后重新构建就行,不需要动代码。
4.2 牌桌对战界面
点“好友场”后,可以选择创建房间或输入房号加入。创建房间时能设置局数(4局/8局)、人数(默认4人)、玩法选项(是否带风牌、是否可碰杠、胡牌方式等)。红中麻将的核心规则——红中作为万能癞子牌——已经在服务端的游戏逻辑里写死了,开局会自动分配癞子,不需要额外配置。
进到牌桌,界面是横屏展示。我自己手牌区域在屏幕下方,13张牌一字排开,摸到新牌会有一个从牌堆飞到我手牌区域的动画。红中牌用烫金红底特别醒目,点击癞子牌会高亮并弹出可变的牌型提示。桌面中央是其他三家的出牌区域,各自出的牌按顺序摆放在头像旁边。轮到我的回合时,倒计时环出现在正上方,右下角浮出“碰”、“杠”、“胡”、“过”四个操作按钮。
游戏过程中,服务端会把每一步操作通过WebSocket广播给房间里的其他客户端,延迟基本在50ms以内,手感和本地打牌几乎没区别。红中的癞子判定是在服务端算的,客户端只负责展示,这样能防止客户端篡改牌型。
4.3 房卡购买与后台管理界面
游戏里的“商城”点进去是房卡购买页面,列出了几个套餐:“18元买18张”、“88元买100张”、“168元买200张”。点击购买会调起微信支付,这需要在七星房卡后台先配置好微信支付商户号。后台管理地址是http://你的IP:端口/admin,用部署时生成的管理员账号登录。
后台主面板会显示今日房卡消耗量、在线房间数、活跃用户数。左侧菜单有“房卡管理”、“代理管理”、“玩家列表”、“游戏记录”、“数据统计”这几个模块。在“房卡管理”里能给指定玩家直接赠送房卡,也能批量导出房卡兑换码让棋牌室老板线下分发。“代理管理”可以创建二级代理账号,设定不同的充值折扣,比如代理拿货价6折,他可以自己加价卖给下面的玩家,差价就是代理的利润。这套机制是房卡模式能跑起来的关键,不需要我自己开发。
五、审核上线时我翻过的两个跟头
第一次提交审核,两天后被打回,原因写了两条:一是“小游戏未在文化行政部门备案”,二是“存在诱导分享嫌疑”。我逐个解决后才顺利通过。
文化备案这件事,很多新手都不知道。微信小游戏除了版号或版号授权之外,还需要在注册地的省文化厅完成“网络文化经营单位”备案,拿到一个备案编号,然后在微信后台的“文化行政部门备案”一栏填上。七星房卡那边给了我一个符合要求的授权文件和备案号模板,我照着把材料补齐,重新提交就过了这一关。
诱导分享的问题出在我的结算界面。原来设计的是“分享到微信群可以免费领一张房卡”,微信审核判定这属于诱导分享行为。我改成“分享战绩给好友”不附带任何奖励,房卡只能通过购买获得,再提交就过了。所以分享功能做可以,但别跟任何利益挂钩,纯展示战绩是安全的。
还有一个小细节:提交审核时,游戏类目必须选“游戏-棋牌”,对应资料里要上传版号或版号授权书。七星房卡的源码包里有一个“资质文件”文件夹,里面有授权协议模板,填上自己公司的信息盖章扫描上传就行。
审核通过后点击“发布”,几分钟后就能在微信里搜到你的红中麻将小程序了,输入名字全称或者部分关键词都能搜到。
六、上线后怎么让更多人进来打牌
麻将类小游戏最有效的拉新手段还是熟人裂变,搜一搜的流量虽然有,但排得靠前不容易。我做了这么几件事:
-
小程序名字改成了“兴旺红中麻将-好友局”,让“红中麻将”这个搜索热词完整出现在标题里。
-
后台关键词设了“红中麻将”、“免费打麻将”、“红中癞子”、“好友麻将”四个,覆盖不同的搜索习惯。
-
让棋牌室老板在他所有的客户群里发了小程序码,配合“新用户送8张房卡体验”的活动(房卡成本很低,一张不到一毛钱),三天拉了三百多个注册。
-
在朋友圈每天晒一张带战绩的结算截图,文案就一句“今晚手气还行”,有不少熟人看见后主动扫码进来开了一局。
到现在稳定运营了两个月,日均在线房间数能保持在15-20个,不算大但足够支撑棋牌室的熟客需求了。那个老板后来又找我帮忙加了一个长沙麻将的玩法扩展,好在七星房卡源码里本身就有长沙麻将的模块,稍微配置一下UI和规则参数就又开了一个新入口。
如果你也有想法搭一套红中麻将小程序,不管是自己运营还是给朋友帮忙,我觉得选对平台能省掉至少一半的踩坑时间。我把这次用的七星房卡部署手册、服务器配置脚本和红中玩法参数表整理成了一份文档,需要的话可以扫描下方二维码,我直接发你。


