星力10电玩城-Java服务端+Unity客户端全套源码/水浒传捕鱼王幸运六狮等11款/可二开
摘要: 这是一套星力(miracle9)电玩城的全套源码,服务端是十几个 Java 进程,客户端是 Unity 工程,数据库、控制后台、打好的安卓苹果包都在包里。文中先放大厅界面,再按“一个游戏一个进程”的思路拆开讲:包里实际有哪些游戏、怎么跑起来、能改到什么程度。
先说这包东西的来头
星力是电玩城圈子里的老牌子,水浒传、幸运六狮、李逵劈鱼、明星97 这几款几乎是线下机台搬到手机上的标配。这套源码的包名统一是 com.miracle9.game,安卓包名 com.xingli.hall,属于星力体系的原版代码线,不是换皮仿品。
版本上,文件夹标的是"星力10"。大厅服务配置文件里自带一段更新日志,写到 V8.0.2(2017 年 11 月),记录了千炮专版、欢乐牛牛、保险柜开关这些功能是哪天加进来的;李逵劈鱼的加载界面上则写着 V9.0.1、"9代"。可以理解为 8 代到 9 代之间持续迭代出来的一套运营版,打包者整理后称作 10 代。
整包 6.7G、9 万多个文件,主要分量在 Unity 工程(光大厅工程就 1.7G,含 Library 缓存)。
架构:一个大厅,加一排各管各的游戏进程
这套系统最值得一看的地方是拆法。它没有做成一个大服务端加载所有游戏,而是:
game:大厅服务,Java Web 工程,跑在 Tomcat 上,管登录注册、账户、充值、推广员、公告邮件、桌子分配。
每款游戏一个独立 Java 进程:各自一个文件夹,里面是
src源码、lib依赖、config配置和一个server.sh启停脚本,用java -jar拉起,各占一个端口。
这样做的好处很实在:某个游戏出问题只重启它自己,不影响大厅和其他游戏;想下架一款游戏,停掉对应进程、大厅配置里去掉编号就行。大厅配置里有一行 games=0,1,2,3,4,5,6,7,8,9,11,就是当前开放的游戏编号。
各游戏服务端与端口对照如下:
游戏 | 服务端代号 | 端口 |
|---|---|---|
水浒传 | WaterMargin | 10016 |
幸运六狮 | luck | 10010 |
美人鱼 | QQMermaid | 10013 |
欢乐牛牛 | JoyBullFighting | 10015 |
明星97 | starNineSeven | 10018 |
单挑 | GuessCard | 10020 |
李逵劈鱼 | likuiFish | 10017 |
捕鱼王 | fishking | 10100 |
金蟾捕鱼 | GoldenCicadaFish | 10012 |
通用捕鱼(千炮专版等场次) | fish、OverFish | OverFish 为 10012 |
另外客户端还有一个独立的 摇钱树(MoneyFish)工程。按类型归一下:拉霸类是水浒传、明星97;百人押注类是幸运六狮、美人鱼;牌类是欢乐牛牛和单挑;剩下都是捕鱼。
注意 OverFish 和金蟾捕鱼的脚本里端口都写的 10012,两个同时开会撞端口,部署时改掉其中一个,客户端对应的连接地址一起改。
每个游戏进程除了对外端口,还在 conf.properties 里配了一个 manage-port(8885、8887、8900、8903、8905……),这是大厅和后台下发控制指令、读取运行状态用的内部管理口,部署时防火墙别对外开放。
客户端:Unity 工程,大厅和子游戏分开放
先看大厅跑起来的样子。游戏以图标卡片排列,未下载的子游戏点开再拉资源,底部一排是设置、公告、排行、保险柜、活动、邮件、客服,和后面功能点梳理里的模块一一对得上:

需要说明的是,这张图是同系列大厅的运行效果,图上的水浒传、幸运六狮在本包里有完整源码,牛魔王、红包扫雷、金鲨银鲨、糖果派对、百人牛牛这几款本包没有带源码(大厅工程里只留了空的 DemonKing、DreamPark 目录),实际包含的游戏以上面的端口表为准。
客户端的组织方式和服务端对应:
Hall_大厅:主工程,Unity 2018.2.7f1,1365 个 C# 脚本。
Assets里除了大厅本身(NEWHall),水浒传、幸运六狮、美人鱼、摇钱树、金蟾捕鱼、李逵劈鱼的资源也都在,打包时子游戏是并进大厅一起出的。UI 用 NGUI,动画用 Spine 和 DOTween/HOTween,网络请求用 Best HTTP Pro,图集用 TexturePacker。独立子游戏工程:DanTiao(单挑)、FishKing(捕鱼王)、MoneyFish(摇钱树)、ToadFishing(金蟾捕鱼)、likuiFish(李逵劈鱼)各是一个完整 Unity 工程,方便单独改单独测。其中捕鱼王和李逵劈鱼是 Unity 5.6.2f1,其余是 2018.2.7f1。捕鱼王工程最重,870 个脚本,光鱼种预制就有大白鲨、灯笼鱼、虎鲸、章鱼等几十种。
Hall:Unity 导出的 Android Studio 工程,带 gradle 配置、签名文件
key.jks和三个已经打好的 APK,改个服务器地址重新打包比从 Unity 走一遍快得多。run:现成的成品包,星光娱乐城的 APK 和 IPA、年年有余 APK、皇家娱乐 APK,可以直接装到手机上看效果。
客户端全部合计 2600 多个 C# 脚本,是明文工程,不是反编译出来的 dll。
服务端技术栈
所有 Java 服务端用的是同一套底子,看过一个就能看懂其他:
层 | 用的什么 |
|---|---|
网络通信 | Apache Mina 2.0.7(长连接) |
容器 / 依赖注入 | Spring 3.2.2 |
持久层 | Hibernate 3.6.10 + Druid 连接池 |
数据库 | MySQL(驱动 5.1.20) |
大厅 Web | Tomcat 6.0.36(配置里写死的 backup 路径能看出来) |
代码分层很规整,以大厅服务为例,com.miracle9.game 下面分 server/message(协议消息)、biz/manage(后台业务)、service、dao、entity、bean、thread(定时任务)、util/encryptionalgorithm(加密),241 个 Java 文件。各游戏服务端 70 到 100 个 Java 文件不等,整个 星力server 加金蟾捕鱼一共 1139 个 Java 源文件,bin 目录里同时附带编译好的 class,可以对照着看。
数据库 game.sql 15.4MB,导出自 MySQL 5.7.18,共 79 张表。每款游戏都有一组 xxx_room / xxx_desk / xxx_desk_result 三件套(房间、桌子、每局结果),加上用户、商家、推广员、充值、活动、邮件、排行、预警这些平台表。
点控后台:ThinkPHP 5 写的一个小后台
除了 Java 大厅自带的管理接口,包里还有一个 PHP 写的控制后台(admin,wwwroot/admin 是同一套的另一份配置),框架是 ThinkPHP 5.0.24,直连同一个 MySQL 库。功能不多但都是运营要用的:
用户列表、等级设置、排行榜清理
桌子参数调整(李逵控制、狮子控制、金蝉控制、单挑控制)
投注记录查询、账目报表、日志导出
一个控制器 458 行就写完了,界面是 layer 模板,想加别的游戏的控制页照着抄一个就行。
目录截图




包里几处重复和杂物,先认清楚
这包东西是从运营现场整理出来的,有几处容易让人看晕:
SERver 和 后端源码星力 是同一份,逐文件比对只差两个说明文件。真正最全的是 星力server,比它们多出 likuiFish、starNineSeven、fish 三个游戏服务端,部署以它为准。
Hall 和 Hall_大厅 不是重复:前者是导出的安卓工程,后者是 Unity 源工程。
wwwroot/GameInfoWorker 是一个 Workerman 推送小服务,查的是
xy_前缀的表,主库里没有这些表,和这套星力不是一回事,部署时可以不管。有几个游戏目录下有
hs_err_pid崩溃日志、JoyBullFighting.jar11这类残留文件,是原环境留下的,删掉不影响。
服务器要求
项目 | 建议 |
|---|---|
系统 | Linux(启停脚本用的 |
Java | JDK 7 或 8(脚本里带 |
Web 容器 | Tomcat 6/7,跑大厅 game |
数据库 | MySQL 5.7 |
PHP | PHP 7.x + Nginx,跑 ThinkPHP 控制后台 |
配置 | 4 核 8G 起步,每个游戏进程默认 |
开发机 | Windows + Unity 2018.2.7f1 和 5.6.2f1 两个版本,Android Studio 打包 |
部署步骤
熟悉 Java 和 Unity 的人,服务端跑通大约半天,客户端改地址重新出包再加半天,整体 1 到 2 天。没碰过 Mina 这类老项目的,留 3 天左右比较稳妥。
建库导数据:MySQL 新建库,导入
game.sql。注意各游戏jdbc.properties里写的库名是game_old,PHP 后台写的是game,导入时统一一个名字,再把所有配置改成一致。改各游戏配置:逐个进入
星力server/*/config,改jdbc.properties的库名、账号、密码(默认 root / 123456),conf.properties的manage-ip改成本机或内网地址。部署大厅:
星力server/game是 Eclipse 动态 Web 工程,WebContent加build/classes打成 war 放进 Tomcat。server.properties里的serverIp、download、backup三项要填成自己的地址和路径。打包并起游戏进程:包里每个游戏目录只有源码、
bin里的 class 和lib依赖,没有现成的可执行 jar,要先在 Eclipse 里逐个导出成 Runnable JAR(主类是AppRun或GameRunning),文件名和server.sh里的JAR_NAME对上,再sh server.sh start。fish 目录没带server.sh,照别的游戏抄一份改名改端口即可。启动后用netstat -tln核对端口都起来了。部署控制后台:
admin放到 Nginx 站点,运行目录指向public,开 ThinkPHP 伪静态,application/database.php改库连接。客户端改地址出包:Unity 打开 Hall_大厅,找到网络配置里的服务器地址改成自己的,导出安卓工程或直接出 APK;苹果包需要 Mac 上用 Xcode 签名。
联调:先用
run里的成品包确认登录流程,再装自己打的包逐个进游戏测试。
能二开到什么程度
放得开的部分:
Java 服务端全部是
.java源码,大厅和每个游戏都能改,加活动、改结算、改协议都没障碍。代码风格统一,看懂一个游戏服就能照着改其他的。Unity 客户端是明文工程,场景、预制、脚本全在,换皮、改 UI、加游戏都能做。
PHP 后台代码量很小,想扩功能基本是重写的成本也不高。
要留意的部分:
水浒传和幸运六狮的核心算法单独打成了 jar(
AlgorithemShuiHu.jar、LuckLionAlgorithm.jar),只有 class 没有源码。不过这两个包很小,水浒传那个只有两个类、不到 2KB,反编译回来几分钟的事,不构成障碍。技术栈偏老:Spring 3、Hibernate 3、Tomcat 6、Unity 2018 和 5.6。改代码没问题,但如果想升级到新版本 Unity 或新版 JDK,会遇到一批 API 兼容问题,这部分工作量要算进去。
两个 Unity 版本并存,开发机要装两套编辑器,不能用一个高版本统一打开,否则捕鱼王和李逵劈鱼的工程会被强制升级。
整体来说,这是一套前后端都能动的源码,二开空间足够大,难点在环境搭建而不在代码本身。
功能点梳理
玩家端
账号注册登录、注册码注册、修改密码
大厅分练习厅(体验币)和竞技厅,桌子列表选座
11 款游戏:拉霸、百人押注、牌类、捕鱼四大类
保险柜、邮件、公告滚动、排行榜、等级、活动领奖
运营端
商家体系(busine)和推广员体系(promoter),推广员 APP 可解封玩家
充值申请审核、充值统计、日账、每日活跃、在线人数统计
每款游戏独立的房间和桌子配置,可增删桌、调排序、清零桌子
玩家预警(user_warning)、禁言、特殊用户标记
每 10 分钟玩家得分记录、单局结果全量落库,方便查账
PHP 后台的桌子控制参数(李逵、狮子、金蝉、单挑),投注记录查询
运维端
每款游戏独立进程、独立端口、独立启停脚本
大厅自动锁定异常账号(
auto_lock系列配置)版本表控制客户端更新,大厅支持国内版、国际版、合作运营版、直营版几种客户端区分登录
中英双语语言包(
language_zh_CN/language_en_US)
下载地址
全员付费本资源为付费内容,登录后可下载

