星力10电玩城-Java服务端+Unity客户端全套源码/水浒传捕鱼王幸运六狮等11款/可二开

金币源码2026-10-15452 阅读
约 3,128 字 · 大约 10 分钟

摘要: 这是一套星力(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 模板,想加别的游戏的控制页照着抄一个就行。

目录截图

星力 源码根目录
星力 Java服务端星力server目录
星力 大厅服务Java源码分层
星力 Unity大厅工程Assets

包里几处重复和杂物,先认清楚

这包东西是从运营现场整理出来的,有几处容易让人看晕:

  • SERver 和 后端源码星力 是同一份,逐文件比对只差两个说明文件。真正最全的是 星力server,比它们多出 likuiFish、starNineSeven、fish 三个游戏服务端,部署以它为准。

  • Hall 和 Hall_大厅 不是重复:前者是导出的安卓工程,后者是 Unity 源工程。

  • wwwroot/GameInfoWorker 是一个 Workerman 推送小服务,查的是 xy_ 前缀的表,主库里没有这些表,和这套星力不是一回事,部署时可以不管。

  • 有几个游戏目录下有 hs_err_pid 崩溃日志、JoyBullFighting.jar11 这类残留文件,是原环境留下的,删掉不影响。

服务器要求

项目

建议

系统

Linux(启停脚本用的 ps --no-heading、netstat,是 Linux 写法),CentOS 7 / Ubuntu 均可

Java

JDK 7 或 8(脚本里带 -XX:MaxPermSize,JDK 8 只会警告,JDK 9 以上会报错)

Web 容器

Tomcat 6/7,跑大厅 game

数据库

MySQL 5.7

PHP

PHP 7.x + Nginx,跑 ThinkPHP 控制后台

配置

4 核 8G 起步,每个游戏进程默认 -Xmx2048m,十几个进程全开要么加内存要么把这个值调小

开发机

Windows + Unity 2018.2.7f1 和 5.6.2f1 两个版本,Android Studio 打包

部署步骤

熟悉 Java 和 Unity 的人,服务端跑通大约半天,客户端改地址重新出包再加半天,整体 1 到 2 天。没碰过 Mina 这类老项目的,留 3 天左右比较稳妥。

  1. 建库导数据:MySQL 新建库,导入 game.sql。注意各游戏 jdbc.properties 里写的库名是 game_old,PHP 后台写的是 game,导入时统一一个名字,再把所有配置改成一致。

  2. 改各游戏配置:逐个进入 星力server/*/config,改 jdbc.properties 的库名、账号、密码(默认 root / 123456),conf.properties 的 manage-ip 改成本机或内网地址。

  3. 部署大厅:星力server/game 是 Eclipse 动态 Web 工程,WebContent 加 build/classes 打成 war 放进 Tomcat。server.properties 里的 serverIp、download、backup 三项要填成自己的地址和路径。

  4. 打包并起游戏进程:包里每个游戏目录只有源码、bin 里的 class 和 lib 依赖,没有现成的可执行 jar,要先在 Eclipse 里逐个导出成 Runnable JAR(主类是 AppRun 或 GameRunning),文件名和 server.sh 里的 JAR_NAME 对上,再 sh server.sh start。fish 目录没带 server.sh,照别的游戏抄一份改名改端口即可。启动后用 netstat -tln 核对端口都起来了。

  5. 部署控制后台:admin 放到 Nginx 站点,运行目录指向 public,开 ThinkPHP 伪静态,application/database.php 改库连接。

  6. 客户端改地址出包:Unity 打开 Hall_大厅,找到网络配置里的服务器地址改成自己的,导出安卓工程或直接出 APK;苹果包需要 Mac 上用 Xcode 签名。

  7. 联调:先用 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)

下载地址

本资源为付费内容,登录后可下载