万灵齐聚,山海相遇,万灵山海手游详细图文架设教程

架设

1. 架设条件

万灵山海架设需要准备:

  1. linux 服务器,建议 CentOs 7.6 版本,推荐腾讯云轻量应用服务器,性价比高。
  2. 游戏源码下载:https://xiaoangyu.com/1205/.html

游戏会占大概 3G 左右的运行内存,客户端游戏会下载 3G 左右的资源!非常大,建议最低使用 2 核 4G 配置的服务器。

2. 安装宝塔及环境

宝塔是一个服务器运维管理软件,安装命令:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
安装完后,按照提示信息登录宝塔,并在宝塔软件商店中搜索以下软件安装:

web 服务器:Nginx 1.24
数据库:Mysql 5.7
编程语言:PHP 7.2
数据库管理工具:phpMyAdmin 4.4
工具:Linux 工具箱 2.4

3. 开放端口

我们直接开放所有端口 1-65535,阿里云服务器在安全组中配置规则

图片[1]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

腾讯云服务器在防火墙中配置规则。

图片[2]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

然后在宝塔菜单安全中开放所有端口。

图片[3]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

4. 关闭防火墙

通过宝塔菜单终端,执行关闭防火墙命令:

systemctl stop firewalld.service
systemctl disable firewalld.service

5. 上传源码

拿到源码后,将 wlsh.zip 压缩文件通过宝塔上传到根目录,由于最新的宝塔禁止直接上传到根目录,可以先上传到任一目录下,在剪切粘贴到 / 根目录。图片[4]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

上传成功后,剪切粘贴到根目录,并解压到根目录。

cd /
unzip wlsh.zip

解压完成后,命令授予 777 权限:

chmod -R 777 /data/

6. 配置环境

设置虚拟内存,Linux 工具箱添加 Swap。图片[5]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

配置动态链接器的缓存:

ldconfig

7. 修改源码 IP

源码中的 IP(82.156.126.171),需要替换成你自己的服务器 IP。

  1. \data\WL_BIGCROSS\release\serverconfig.xml
  2. \data\WL_S1\release\serverconfig.xml
  3. \data\WL_CROSS\release\serverconfig.xml
  4. \data\www\agent\public\bnb\api.php

在宝塔中找到对应文件,Ctrl+F 批量替换 IP 即可。以第一个 serverconfig.xml 为例。图片[6]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

8. 导入数据库

宝塔数据库中,修改 root 密码:521gmcn图片[7]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

通过命令导入数据库:

cd /data
./sk

同步数据库会看到创建 4 个数据库,说明导入成功~(更新了资源,数据库 aygm 改为了 ruankor,图片未更新请知悉,下同)

图片[8]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

9. 创建网站

万灵山海需要创建一个站点,域名为 127.0.0.1:81,根目录为 /data/www/agent,PHP 选择 7.2 版本。

图片[9]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

点击创建好网站,在网站目录中将运行目录设置为 /public,记得点击后面的保存按钮。

图片[10]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

再设置伪静态为 thinkphp,点击保存。

图片[11]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

10. 启动游戏

以上步骤都操作完毕,就到了激动人心的启动游戏啦!

启动游戏服务:

cd /data/WL_BIGCROSS/release
./start.sh
 
cd /data/WL_CROSS/release
./start.sh
 
cd /data/WL_S1/release
./start.sh

查看下服务端口:

netstat -lntp

图片[12]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

11. 客户端修改

11.1 安卓客户端

首先修改安卓端,需要修改两个个文件:

  1. \assets\bin\Data\Managed\Metadata\global-metadata.dat
  2. \assets\AssetBundle\lua\preload-7516A9877653F4EDF42A2EA1A5C38FE9.ab

找到万灵山海.apk 安卓客户端,用好压软件打开,将这两个文件拖出来。

这两个文件修改较复杂,我会尽量说的详细些哈。

首先修改 global-metadata.dat 文件,需要使用工具文件夹中的 global-metadata编辑器,打开 MetaDataStringEditor.exe,点击加载,选择 global-metadata.dat 文件,在上方输入 82.156.126.171,点击后面的下一个,找到搜到的那一行,点击出现编辑,点击编辑出现弹窗,弹窗中修改为自己的 IP,最后点击保存。图片[13]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库然后在点击窗口上面的另存为,保存文件为 1.dat,将原来的文件 global-metadata.dat 删除,将 1.dat 文件名改为 global-metadata.dat,再将 global-metadata.dat 文件拖回万灵山海.apk 安卓客户端原文件目录下,替换掉原来的文件。图片[14]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库再来修改 preload-7516A9877653F4EDF42A2EA1A5C38FE9.ab 文件,需使用工具文件夹下的客户端修改工具,解压找到 \AssetsBundleExtractor中文汉化版\32bit\AssetBundleExtractor.exe 双击打开,选择文件 – 打开,选择 preload-7516A9877653F4EDF42A2EA1A5C38FE9.ab 文件,点击是。图片[15]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

此刻会让另存文件,我们填写 1,点击保存。

图片[16]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

点击信息按钮。

图片[17]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

信息弹窗中选择 global_config.lua,点击右侧的导出转存,然后保存下来,会生成一个 txt 文件。

图片[18]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

打开这个 txt 文件,将里面的 IP (82.156.126.171),替换成你的 IP,然后保存。

图片[19]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

回到信息弹窗界面,点击右侧的导入转存,选择刚修改的 txt 文件,点击下方的确定,然后弹窗点击是。

图片[20]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

再选择文件 – 保存。

图片[21]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

保存文件填写 2,点击保存。

图片[22]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

再选择文件 – 压缩,选择刚保存的文件 2。

图片[23]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

弹窗点击确定。

图片[24]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

然后会让另存文件,填写 3,保存。

图片[25]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库最后我们需要把 preload-7516A9877653F4EDF42A2EA1A5C38FE9.ab 删除,将文件 3 重命名为 preload-7516A9877653F4EDF42A2EA1A5C38FE9.ab。将该文件拖回万灵山海.apk 安卓客户端原文件目录下,替换掉原来的文件。图片[26]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

呼… 是不是步骤有点多,后面多操作几次就熟练了 – -。

全部替换后使用签名工具 ApkTool 选择修改好的万灵山海.apk 文件进行签名。图片[27]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

然后就可以安装到模拟器或者安卓手机启动啦,游戏启动会有 16M 多的热更,游戏默认注册码:123

11.2 苹果客户端

苹果端同样需要修改两个文件:

  1. \Payload\bnb.app\Data\Managed\Metadata\global-metadata.dat
  2. \Payload\bnb.app\Data\Raw\AssetBundle\lua\preload-4CFE5EECF63CB00AD90FD3937C929740.ab

同样用好压打开苹果客户端万灵山海.ipa,将两个文件拖出,使用和安卓客户端一样的方法修改文件的 IP,最后在替换掉客户端的原文件即可,和安卓的修改方法一模一样,这里我就不赘述了哈。

全部替换后,需要进行签名,建议使用爱思助手签名。图片[28]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

同样苹果启动游戏也会有 9M 多的热更新,默认注册码:123

12. 游戏后台

游戏有两个后台,一个运营后台,一个 GM 后台。

运营后台链接:http://ip:81/guanli.php,默认账号:admin,默认密码:123456,功能很强大,可以查看玩家列表、发送邮件、设置公告等等。图片[29]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

如果自己开服玩建议修改默认密码,右上角点击 Admin,查看个人资料界面,即可修改密码。

图片[30]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

还有一个 GM 后台,其中 GM 总后台链接:http://ip:81/gmht/gm.php,默认 GM 码:123456,可以授权玩家,也可以直接充值和发送物品。如果想修改默认 GM 码,只需要修改文件 /data/www/agent/public/gmht/user/config.php 中 $gmcodeb 字段值即可。

图片[31]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

玩家后台链接:http://ip:81/gmht,授权过的玩家就可以充值和发送物品啦。

13. 关闭游戏

关闭游戏服务很简单,只需要输入以下命令:

cd /data/WL_BIGCROSS/release
./stop.sh
 
cd /data/WL_CROSS/release
./stop.sh
 
cd /data/WL_S1/release
./stop.sh

后续

免责声明

我架设的所有游戏资源均搜集于互联网,如有侵权,请联系我,我会马上删除。

游戏都是禁止内充的,只限于技术研究使用,禁止商用,请于下载后 24 小时内删除,或购买正版。

根据二○○二年一月一日《计算机软件保护条例》规定:为了学习和
研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软
件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬
鉴于此,也希望大家按此说明研究软件。

游戏监控

担心游戏掉线或者服务器重启,我们可以宝塔创建一个定时任务来监控游戏,异常时自动重新启动游戏:

图片[32]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

#!/bin/sh
XYTCPListeningnum=`netstat -an | egrep "0.0.0.0:40000" | awk '$1 == "tcp"'|wc -l`
if [ $XYTCPListeningnum -eq 0 ];
    then
 
cd /data/WL_BIGCROSS/release
./start.sh
 
cd /data/WL_CROSS/release
./start.sh
 
cd /data/WL_S1/release
./start.sh
 
fi

日志清理

游戏运行会产生大量的日志文件占用磁盘空间,我们同样可以用宝塔定时任务,每天清除日志文件,防止磁盘被占满,命令如下:

rm -rf  /data/WL_S1/release/log/*
rm -rf  /data/WL_CROSS/release/log/*

游戏公告

游戏公告修改都在数据库 ruankor 表 ay_gameconfig,登录界面公告需要修改 id 为 34 的 content 值,游戏内的公告需要修改 id 为 49 的 content 值。图片[33]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

游戏热更

这款游戏和其他游戏最大的不同就是,游戏资源需要单独下载,而不是集成到客户端中的,游戏到 30 级游戏内会下载 2G 左右的游戏资源,还有一些过程中加载资源,总共大概 3G 左右的资源要下载…图片[34]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

可想而知一般的服务器根本扛不住,哪怕几个人玩也会卡的不要不要,所以我花了好长时间来攻克这个问题…

最开始我想到的是购买 123 网盘的直链流量包 80 元 1T,大概能够 300 个玩家使用,但是资源包上传网盘后竟然无法成功解压,如果不解压上传一次只能上传 1000 个文件,而实际文件个数要远远大于这个数,不解压上传根本不现实且很容易遗漏,所以只得放弃。图片[35]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

最后求教了糊涂鳄大佬,推荐我使用单独的服务器作为游戏热更使用,就是这款轻量锐驰型服务器!

图片[36]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库2 核 2G 宽带 200M 无限量,每月 40 元,由于只作为热更,所以内存 2G 足矣,200M 宽带经过本人测试好的时候能达到 5000K 左右,不好的时候几百 K 也是常有的事儿,并不稳定,但胜在省心啊,价格也还可以接受,这样我还可以架设其他热更大的游戏,简直不要太 Nice~图片[37]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库下面说下万灵山海如何使用三方服务器作为游戏热更资源,首先将三方服务器安装好宝塔,新建目录 /www/wwwroot/wl,在本地找到游戏热更目录 \data\www\agent\public\bnb_up,将 bnb_up 压缩,上传到三方服务器 /www/wwwroot/wl 目录下,上传好后解压。图片[38]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

在创建站点,域名填写 IP:81,端口号随意,别占用其他已用的端口就好,根目录选择 /www/wwwroot/wl

图片[39]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

最后需要修改游戏服务器文件 /data/www/agent/public/bnb/api.php,Android 热更修改这两行。

图片[40]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

IOS 热更修改这两行。

图片[41]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

将 IP 替换为你三方服务器的 IP 即可,这样游戏内的游戏资源下载就只会使用三方服务器的宽带啦,Nice~

每日签到

游戏玩半个月后,玩家反馈有一些道具物品难度获得极大,或者根本无法获取,比如星辰技能书和精灵球上古异兽,所以我准备通过每日签到,每天送给大家。

首先在 PhpMyadmin 中找到数据库 ruankor 表 ay_gameconfig,执行 sql 语句:

INSERT INTO `ay_gameconfig` VALUES
(62,'qiandao_item2','qiandao','Qiandao item','','string','','56368','value1|title1\r\nvalue2|title2','','','{\"table\":\"\",\"conditions\":\"\",\"key\":\"\",\"value\":\"\"}'),
(63,'qiandao_num2','qiandao','Qiandao num','','string','','1','value1|title1\r\nvalue2|title2','','','{\"table\":\"\",\"conditions\":\"\",\"key\":\"\",\"value\":\"\"}'),
(64,'qiandao_item3','qiandao','Qiandao item','','string','','33011','value1|title1\r\nvalue2|title2','','','{\"table\":\"\",\"conditions\":\"\",\"key\":\"\",\"value\":\"\"}'),
(65,'qiandao_num3','qiandao','Qiandao num','','string','','1','value1|title1\r\nvalue2|title2','','','{\"table\":\"\",\"conditions\":\"\",\"key\":\"\",\"value\":\"\"}')

图片[42]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

增加签到道具 qiandao_item2 和 qiandao_item3,物品代码分别是 56368 和 33011,大家可以通过文件 /data/www/agent/public/gmht/user/item_gm.txt 找到物品代码,数量分别设置为 1 个。

然后修改后台文件 /data/www/agent/application/api/controller/Bnb.php,幸好我找的这个版本后台不是加密的,所以可以自行更改。图片[43]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

代码如下:

public function player_qiandao()
    {
        ...
        $params11 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_money")->find();
        $params12 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_item")->find();
        $params13 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_num")->find();
        // 增加签到物品
        $params14 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_item2")->find();
        $params15 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_num2")->find();
        $params16 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_item3")->find();
        $params17 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_num3")->find();
        $user = explode("_", $request["user_id"])[1];
        $params = \think\Db::name("qiandao")->where("user", $user)->find();
        $usermoney = \think\Db::name("user")->where("username", $user)->find();
        $param = $params11["value"];
        $newmoney = $usermoney["money"] + $param;
        if (!$params) {
            $dataA = ["server_id" => $request["server_id"], "user" => $user, "role_id" => $request["role_id"], "role_name" => $request["role_name"], "time" => time(), "ip" => $ip, "result" => "1"];
            $datab = \think\Db::name("qiandao")->insert($dataA, true);
            if ($datab) {
                $dataa = \think\Db::name("user")->where("username", $user)->update(["money" => $newmoney]);
                $this->GMmail($request["server_id"], $request["role_id"], $params12["value"], $params13["value"]);
                // 增加签到物品
                $this->GMmail($request["server_id"], $request["role_id"], $params14["value"], $params15["value"]);
                $this->GMmail($request["server_id"], $request["role_id"], $params16["value"], $params17["value"]);
                $data = "签到成功,获得 归元币*1388,其余奖励请到邮箱查收。";
            }
        } else {
            $lastSignInDate = date("Y-m-d", $params["time"]);
            $currentDate = date("Y-m-d");
            if ($lastSignInDate == $currentDate) {
                $data = "今日已签到";
                $init_info = ["ret" => 0, "data" => $data];
                return json_encode($init_info);
            } else {
                $dataa = \think\Db::name("qiandao")->where("user", $user)->update(["time" => time()]);
                $dataa = \think\Db::name("user")->where("username", $user)->update(["money" => $newmoney]);
                $this->GMmail($request["server_id"], $request["role_id"], $params12["value"], $params13["value"]);
                // 增加签到物品
                $this->GMmail($request["server_id"], $request["role_id"], $params14["value"], $params15["value"]);
                $this->GMmail($request["server_id"], $request["role_id"], $params16["value"], $params17["value"]);
                $data = "签到成功,获得 归元币*1388,其余奖励请到邮箱查收。";
            }
        }
        $init_info = ["ret" => 0, "data" => $data];
        return json_encode($init_info);
    }

如果当天已经签到的,想重新今日签到,可以清空数据库 ruankor 表 ay_qiandao,无需重启,登录游戏进个人中心,点击今日签到,就可以邮箱领取新增的签到物品啦!Nice~

图片[44]-万灵齐聚,山海相遇,万灵山海手游详细图文架设教程-小昂裕的百宝库

关于游戏

这款万灵山海我关注了很久,是难得精品,还是以仙侠神话为背景的游戏,值得长时间养成,BUG 基本没有,现在唯一的热更问题我也解决了,不出意外肯定是一直开服啦,为了保障游戏的可玩性,暂时我只会开充值后台,可以无限消费,物品道具后台等大家玩一段时间后我再考虑要不要开放~

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容