梦幻西游H5游戏超详细图文架设教程

前言

想体验经典Q版西游霸服快乐吗?想体验满级VIP的尊贵吗?想体验一招秒杀的爽快吗?各种极品装备、翅膀、宠物通通给你,就在梦幻西游!

本文讲解梦幻西游H5游戏的架设教程,想研究H5游戏如何实现,体验游戏中秒天秒地秒空气的一定不要错过。

封面图

我架设的梦幻西游 H5 链接和源码请关注我的公众号 echeverra 发送“梦幻西游”获取,后台 GM 发送“梦幻西游GM”获取,游戏长期维护,快来体验一下吧。

如果你对H5游戏感兴趣,推荐另外几款我架设的H5游戏:H5游戏整理汇总,欢迎来玩耍~

梦幻西游游戏截图:

登录界面

城镇

回合制

GM工具

架设

1.架设条件

梦幻西游架设需要准备:

  1. linux服务器,推荐centos7/8版本,可以考虑阿里云腾讯云等。
  2. 游戏源码,关注我的公众号 echeverra,发送“梦幻西游”获取。

游戏源码中已去除广告,并修复部分功能。

2.安装宝塔及环境

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

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安装完后,按照提示信息登录宝塔(如果无法访问可能是由于服务器没有开放8888端口,参考第5条开放端口),并在宝塔软件商店中搜索以下软件安装:

  1. web服务器:nginx 1.20
  2. 数据库:mysql 5.6
  3. 编程语言:PHP 5.6
  4. 数据库管理工具:phpMyAdmin 4.9

3.上传源码

拿到源码后解压会得到sql和xyh5两个文件,将xyh5压缩文件通过宝塔上传到根目录(如果宝塔禁止上传到根目录,可上传其他路径后剪切粘贴到根目录)。

上传

上传成功后解压到根目录

解压

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

chmod -R 777 /home/server
chmod -R 777 /www/wwwroot/xy

安装lua脚本

cd /home/soft
tar -zxvf lua-5.1.5.tar.gz
cd lua-5.1.5
make linux test && make install

安装lua相关依赖

yum install readline-dev readline-devel unzip

安装模块管理工具luarocks

cd /home/soft
tar -zxvf luarocks-3.0.4.tar.gz
cd luarocks-3.0.4/
./configure --with-lua=/usr/local --with-lua-include=/usr/local/include
make && make install && make bootstrap
luarocks install luasocket

4.导入数据库

通过宝塔修改数据库root密码:echeverra(涉及到安全问题,建议修改成自己的密码,对应源码中的echeverra也需替换成自己的密码,推荐使用webstorm或vscode IDE全局搜索并替换)。

修改root密码

开放数据库远程权限:

mysql -u root -pecheverra
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'echeverra' WITH GRANT OPTION;
FLUSH   PRIVILEGES;
quit

创建以下数据库:

  1. account
  2. chargeserver
  3. gameserver(字符集UTF-8,排序规则utf8_unicode_ci)
  4. gmserver
  5. oaglobal
  6. operationanalysisserver
  7. worldserver

其中operationanalysisserver名称过长,在宝塔界面会创建数据库失败,可以在phpMyadmin中创建。

建议所有数据库都按照字符集UTF-8,排序规则utf8_unicode_ci创建,否则会出现游戏创建角色失败的错误。

上传sql文件夹下的数据库文件并导入,以account为例(用户名密码默认即可,代码中使用root账户)。

创建account数据库

导入数据库

5.开放端口

需要开放的端口:

  1. 宝塔:8888
  2. phpmyadmin:888
  3. mysql:3306
  4. 游戏相关端口:80、10001、11001、12001 、8001、8004

服务器开放端口,以阿里云开放10001端口为例,其他端口按照同样方式添加,其他服务器也在安全里设置。

服务器开放10001端口

宝塔开放端口,同样以10001端口为例:

宝塔开放10001端口

如果不开放端口,服务会无法访问,如果对安全没什么要求,可以直接开放1-65535端口。

6.修改IP

源码中的IP是我自己虚拟机的,需要替换成你自己的服务器IP。

需要修改IP的文件:

/www/wwwroot/xy/cdn/preload.js
/www/wwwroot/xy/cdn/index.min.html
/www/wwwroot/xy/cdn/serverlist.php
/www/wwwroot/xy/cdn/serverlist.json

举例修改preload.js文件,其他文件修改方式相同。

找到preload.js双击打开编辑模式,按Ctrl+F搜索39.105.134.68,找到后替换成你的服务器IP并保存。

修改IP

7.创建游戏网站

添加游戏网站才能访问游戏,网站域名写你的IP,根目录为/www/wwwroot/xy/,PHP选择5.6版本。

游戏网站

8.开启游戏

以上都执行完毕,那么就到了激动人心的启动游戏啦,启动命令:

cd /home/server
sh start.sh

启动游戏

启动成功后查看下端口10001、11001、12001 、8001、8004是否监听中,少任何一个都无法成功启动游戏。

netstat -lntp

监听端口

访问游戏链接:http://IP/cdn/,使用你服务器的IP。

游戏登录界面

输入用户名密码,点击一键注册或登录,等待资源加载完成,选择分区(只有一个区),进入游戏,Nice~

如果加载到95%一段时间不动,说明10001端口没有在监听中。

9.GM工具

游戏GM工具访问链接:http://IP/gm/gm.php,账号admin,密码123456,可以给游戏玩家授权GM功能,同样也可以给玩家充值发送物品。

GM工具

刷新游戏后邮件查收。

元宝

10.关闭游戏

关闭游戏执行命令:

cd /home/server
sh stop.sh

关闭游戏

后续

1.修改GM账号

修改GM用户名密码需要修改文件/www/wwwroot/xy/gm/config.php

修改GM账号

修改$admin$gmcode即可修改GM的账号和密码,需要注意的是$key不可随意修改,如果修改需对应调整gmkey的值才能通过验证,而gmkey的值则是通过md5($key)得到。

2.授权源码分析

GM工具可以对游戏玩家进行GM授权,授权有两种,vip1充值只能进行元宝充值,vip2充值邮件可进行元宝充值和物品发送。那么在代码中它是如何实现的呢?我们打开/gm/adminquery.php文件。

授权code

首先会通过$uid.$pwd.$key三个字段拼接后用md5加密,然后将用户$uid作用key,$pwd$vip$qu作value以数组形式保存到文件中来储存vip用户的信息。

打开vip1.json可以看到保存的数据:

vip数据

同样,被授权玩家通过http://IP/gm/打开玩家GM登录同样会读取vip1.json文件进行校验该用户是否为vip用户,所以玩家登录GM的密码和GM账号的密码一致为123456,并非玩家账号的密码。

3.使用域名访问

有好奇的小伙伴会发现我架设的游戏链接是http://game.echeverra.cn,并不是IP,这是因为之前的搭建的大天使之剑使用的就是IP形式,宝塔提示重复,所以使用的域名形式,而且域名看起来更加专业嘛~

改成域名访问也很简单,需要修改以下几处:

修改文件:

/www/wwwroot/xy/cdn/preload.js
/www/wwwroot/xy/cdn/index.min.html

域名访问

域名访问

需要注意的是,使用域名路径后的/cdn/也省略掉。

接下来修改游戏网站,填写域名,根目录为/www/wwwroot/xy/cdn/

游戏网站

因为游戏路径到/cdn/无法通过该域名访问上一级目录/gm/,所以我们还需要建一个GM的域名gm.echeverra.cn创建GM网站,目录为/www/wwwroot/xy/gm/,访问链接:http://gm.echeverra.cn

GM网站

4.清空角色背包

游戏中难免会出现GM工具发送物品过多甚至爆号的情况,这时候可以通过数据库清空角色背包物品来解决。

  • 首先要清空背包的角色,退出游戏。

  • 通过宝塔,打开菜单数据库中的phpMyAdmin工具,并登陆。

  • 找到库gameserver,点击上方SQL菜单,输入sql语句,其中账号替换为你的即可。

    `
    SELECT characterid,account FROM character WHERE account = '账号'
    `


    点击执行后,记下查询到的characterid字段值。

  • 再输入sql语句,其中characterid替换为你上一步查询到的即可。

    DELETE FROM item WHERE characterid = characterid

    点击执行,就成功删除了该角色的背包物品。

再次登陆游戏,你就会发现,角色的背包就空空如也啦~

5.关于游戏BUG

梦幻西游H5游戏已经试玩一段时间,发现存在战力溢出重大BUG,总战力超过42.9亿就会溢出,战力又会重置变为很小的值,我首先想到的就是数据库战力字段设置的是int类型,因为int类型的上限正好是4294967295,超过42.9亿多就无法正常存储,查看数据表果然是int类型。所以我将所有int(10)类型的字段都改为了bigint(19),但经过测试,bug还在,应该不只是数据库的问题。

于是我开始研究源码,因为后台核心部分的代码进行了加密,所以我只能修改配置xml文件,首先我想修改各属性对应的战力系数,对应文件zhandouli.xml ,将各属性对应战力系数减少5倍,测试发现,激活神兵神甲宠物的战力依然提升之前的总战力,只是自身战力值变低,存在bug。

既然不能修改战力系数,那索性就修改各模块的级数上限,通过研究游戏中战力的分布,我发现宠物和星图的战力占比最大,其他战力比较高的部分也一同调整:

  • 修复等级上限 role.xml
  • 修改属性丹数量上限 eduitem.xml
  • 修改宠物阶级等级、宠物升级等级上限 pet.xml
  • 修改星盘等级上限 chart.xml
  • 修改图鉴等级上限 picture.xml
  • 修改神兵神甲属性值,阶级上限 equip.xml
  • 修改注灵等级上限 eduNote.xml
  • 修改丹药使用数量上限 danyao.xml

修改完测试以上模块的战力确实小了,战力总和应该能控制在20亿多,但是又出现另一个bug,连续快速点击升级会超出修改的等级上限,游戏crash掉...就,很崩溃...

crash

求助各大论坛,还有某宝上该游戏架设的商家,同样存在该bug,并未修复。

后来也想过,西游类H5游戏那么多换一个就好了,架设了好几个都没有启动端口服务失败了,后来发现原来centOs 8不行,只能centOs 7版本服务器,这里还是要吐槽下游戏架设,环境真的很重要,php版本、Linux版本不一致就很有可能是架设失败的元凶,自己吃亏了很多回。再说回架设的其他西游类H5游戏,明显自己的服务器很吃力,负载CPU都是满的,游戏体验很差,所以只能放弃了。

很遗憾花了很长时间也没能修复好这个游戏,奈何工作生活精力有限,我不能再这上消耗太多的精力,如果身为大佬的你修复了这个bug,请一定一定联系我...

6.游戏BUG修复

喜大普奔,不知道奋战了多少个日日夜夜,我终于把BUG修复了,当然,其实就是换了个思路,游戏做了阉割版,但是并不影响游戏体验,Nice~

修改内容:

  • 调整星盘等级;
  • 调整图鉴等级;
  • 调整宠物进阶等级;
  • 调整神兵神甲等级;
  • 调整结婚姻缘等级;
  • 调整属性丹数量上限;
  • 调整妖王副本等级限制;
  • 调整西游之路等级限制;
  • 其他游戏相关数据优化;

虽然还在测试中,但是就目前的阶段来看,战力上限大概控制在20亿左右,欢迎来我搭建的游戏中体验。由于修复该BUG花费了很大的心血,修复版我暂时不公开,先在手里捂一会,哈哈,有需要请单独联系我。

7.游戏再次优化

我又又又又对游戏进行了优化和修复,对这个游戏情有独钟吧。本次优化了人物等级(180->300)、装备等级(180->250)、锻造等级(180->200)以及宠物等级(180->200),优化了物品数量上限,修复了一些概率性的报错,游戏基本已经很稳定了,欢迎大家来玩哦~

这个游戏我会一直一直维护下去的~

以上就是梦幻西游所有的图文架设教程,希望对你有所帮助,如有问题可通过我的博客https://echeverra.cn或微信公众号echeverra联系我。

你学“废”了么?

(完)

(文章今日已有 8 人访问 ::>_<::)
文章首发于我的博客 https://echeverra.cn/xyh5,原创文章,转载请注明出处。
欢迎关注我的微信公众号 echeverra,一起学习进步!不定时会有资源和福利相送哦!

评论

  1. lll
    Macintosh Chrome
    河南省洛阳市 联通
    1 月前
    2024-10-10 1:32:36

    你分享的东西都不全,解压梦幻西游后,只有数据库文件,别的都没有!配置了一半发现缺这少那的

    • 博主
      lll
      Windows Chrome
      天津市 移动
      1 月前
      2024-10-10 9:40:00

      重新下载一下试试,应该是都有的

  2. chaoren113
    Windows Chrome
    越南
    4 月前
    2024-7-30 13:52:08

    梦幻西游GM

    • 博主
      chaoren113
      Windows Chrome
      天津市 电信
      4 月前
      2024-7-31 8:46:11

      回复到公众号哈

  3. mhxyH5
    Windows Chrome
    山东省临沂市 电信
    4 月前
    2024-7-22 21:13:57

    架设后系统邮件一切正常,就是后台充值邮件时间显示NaN-NaN-NaN,邮件内容正常,可以领取。哪个环节出问题了?

    • 博主
      mhxyH5
      Windows Chrome
      天津市 电信
      4 月前
      2024-7-23 8:59:53

      那个问题可以无视了,不影响什么

  4. locco
    Windows Edge
    贵州省贵阳市 联通
    4 月前
    2024-7-21 18:28:08

    10001、11001我这两个端口一直启动不上呢

    • 博主
      locco
      Windows Chrome
      天津市 电信
      4 月前
      2024-7-22 9:35:41

      检查下端口是否放开,检查下环境是否一致,centos8不行

    • 热心群众
      locco
      Windows Edge
      四川省泸州市 电信
      已编辑
      6 天前
      2024-11-15 12:43:25

      1、检查数据库是否将数据导入进去了。不要用宝塔页面那个导入。
      2、进入phpMyadmin页面,检查每一个数据库是否有表,没有表就在页面导入SQL,然后操作修改排序为utf8_unicode_ci,
      3、防火墙关闭使用命令:
      systemctl stop firewalld.service
      systemctl disable firewalld.service
      关闭全部防火墙,免端口被拦截。
      4、全部完成后关闭服务器然后启动再进入。

  5. atopx
    Linux Edge
    河南省郑州市 联通
    6 月前
    2024-5-21 23:28:19

    送个SQL脚本:

    #!/bin/bash
    
    HOST="192.168.0.20"
    PORT="53306"
    USER="root"
    PWD="123456"
    
    DB1="account"
    DB2="chargeserver"
    DB3="gameserver"
    DB4="gmserver"
    DB5="oaglobal"
    DB6="operationanalysisserver"
    DB7="worldserver"
    
    DROP1="drop database if exists ${DB1};"
    DROP2="drop database if exists ${DB2};"
    DROP3="drop database if exists ${DB3};"
    DROP4="drop database if exists ${DB4};"
    DROP5="drop database if exists ${DB5};"
    DROP6="drop database if exists ${DB6};"
    DROP7="drop database if exists ${DB7};"
    
    CREATE1="create database ${DB1} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
    CREATE2="create database ${DB2} DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
    CREATE3="create database ${DB3} DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
    CREATE4="create database ${DB4} DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
    CREATE5="create database ${DB5} DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
    CREATE6="create database ${DB6} DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
    CREATE7="create database ${DB7} DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
    
    echo "开始删除数据库..."
    mysql -h${HOST} -P${PORT} -u${USER} -p${PWD} -e "${DROP1}
    ${DROP2}
    ${DROP3}
    ${DROP4}
    ${DROP5}
    ${DROP6}
    ${DROP7}"
    echo "删除数据库完成!"
    
    echo "开始创建数据库..."
    mysql -h${HOST} -P${PORT} -u${USER} -p${PWD} -e "${CREATE1}
    ${CREATE2}
    ${CREATE3}
    ${CREATE4}
    ${CREATE5}
    ${CREATE6}
    ${CREATE7}"
    echo "创建数据库完成!"
    
    echo "开始导入数据..."
    mysql -h${HOST} -P${PORT} -u${USER} -p${PWD} ${DB1} < ./${DB1}.sql
    mysql -h${HOST} -P${PORT} -u${USER} -p${PWD} ${DB2} < ./${DB2}.sql
    mysql -h${HOST} -P${PORT} -u${USER} -p${PWD} ${DB3} < ./${DB3}.sql
    mysql -h${HOST} -P${PORT} -u${USER} -p${PWD} ${DB4} < ./${DB4}.sql
    mysql -h${HOST} -P${PORT} -u${USER} -p${PWD} ${DB5} < ./${DB5}.sql
    mysql -h${HOST} -P${PORT} -u${USER} -p${PWD} ${DB6} < ./${DB6}.sql
    mysql -h${HOST} -P${PORT} -u${USER} -p${PWD} ${DB7} < ./${DB7}.sql
    echo "导入数据完成!"
    • 博主
      atopx
      Windows Chrome
      天津市 联通
      6 月前
      2024-5-22 9:08:28

      给你点个赞

  6. 626966309
    Windows Chrome
    四川省成都市 电信
    已编辑
    7 月前
    2024-4-22 13:13:16

    感谢老板分享—

    • 博主
      626966309
      iPhone AppleWebKit
      中国 移动
      7 月前
      2024-4-22 22:42:54

      不客气~

  7. 小小咸鱼
    Windows Chrome
    中国 移动
    7 月前
    2024-4-11 21:04:40

    我想问下。。H5 怎么转成APP 。 出个教程呗

    • 博主
      小小咸鱼
      Windows Chrome
      天津市 联通
      7 月前
      2024-4-12 9:02:57

      这种转成app,也基本还是要下载各种资源的

      • 小小咸鱼
        echeverra
        Windows Chrome
        中国 移动
        7 月前
        2024-4-14 23:59:58

        重新搞了 现在提示注册的网络繁忙请稍后再试 一直都是

        • 博主
          小小咸鱼
          Windows Chrome
          天津市 电信
          7 月前
          2024-4-15 9:14:19

          再试下,应该可以了

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇