想体验传奇游戏霸服的快乐吗?想体验满级 VIP 的尊贵吗?想体验一刀 99999 的爽快吗?各种极品装备、翅膀、宠物通通给你,就在大天使之剑!
本文讲解大天使之剑 H5 游戏的架设教程,想研究 H5 游戏如何实现,体验游戏中秒天秒地秒空气的一定不要错过。
我架设的大天使之剑游戏链接:http://101.43.194.154:83,电脑和手机上都可完美运行,快来体验一下吧。
如果你对 H5 游戏感兴趣,推荐另外几款我架设的 H5 游戏:H5 游戏整理汇总,欢迎来玩耍~
大天使之剑游戏截图:
大天使之剑架设需要准备:
linux 服务器,推荐 centos7/8 版本,可以考虑阿里云腾讯云等。
游戏源码,关注我的公众号 echeverra,发送 “大天使之剑” 获取。
游戏源码中我已去除掉广告,并修复了 GM、关闭游戏等功能。
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
宝塔是一个服务器运维管理软件,我从最开始的 LAMP 到 PHPstudy 再到宝塔,发现宝塔真香!图形化界面用起来是真的省心。安装完后,会给出访问的 url、用户名和密码,记得保存下来,访问宝塔界面,如果无法访问可能是由于服务器没有开放 8888 端口,参考第 7 条开放端口。
宝塔安装完后,我们需要安装一下游戏的运行环境:
web 服务器:nginx 1.20
数据库:mysql 5.6
编程语言:PHP 5.6、PHP 7.4
数据库管理工具:phpMyAdmin 4.9
游戏建站使用的是 PHP 5.6,PHP 7.4 是安装 phpMyAdmin 的前置条件。
通过宝塔软件商店进行安装:
除了通过宝塔安装的环境,还有需要通过命令安装的环境。
安装支持浮点运算的语言 bc 和库文件 libnsl:
yum install bcyum install libnsl
后续步骤中的执行命令均从终端菜单中进入执行,不再截图展示。
拿到游戏源码后,解压压缩文件大天使之剑,会得到 angel 和 sql 两个压缩文件,将 angel 压缩文件上传到服务器根目录。
上传完后,选择压缩文件 angel 并解压到根目录。
解压完成后,需要对解压的目录 /data
和 /www/wwwroot/angel
赋予完整 777 权限。
或者通过命令授权:
chmod -R 777 /datachmod -R 777 /www/wwwroot/angel
执行命令可能会提示.user.ini
文件权限无法更改,跳过即可,不影响架设。
先通过宝塔修改数据库 root 密码:0987abc123
创建 h5 和 actor 两个数据库,h5 存储了用户相关数据,actor 存储了游戏相关数据。
密码不用修改,因为源码中使用的是 root 管理员账号。
将游戏源码文件中的压缩文件 sql 解压,得到两个 sql 文件,上传并导入对应数据库。
导入后,使 root 用户可以从任何主机连接到 mysql 服务器,执行命令:
mysql -uroot -p0987abc123GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '0987abc123' WITH GRANT OPTION;GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '0987abc123' WITH GRANT OPTION;flush privileges;exit
需要开放的端口:
宝塔:8888
phpmyadmin:888
mysql:3306
游戏相关端口:81、5007、6007、7007、9007
服务器开放端口,以阿里云开放 81 端口为例,其他端口按照同样方式添加,其他服务器也在安全里设置。
宝塔开放端口,同样以 81 端口为例:
如果不开放端口,服务会无法访问,如果对安全没什么要求,可以直接开放 1-65535 端口。
源码中的 IP 是我自己虚拟机的,需要替换成你自己的服务器 IP。
需要修改 IP 的文件:
/www/wwwroot/angel/app1.php/www/wwwroot/angel/login.php/www/wwwroot/angel/config.php/www/wwwroot/angel/game.php/www/wwwroot/angel/login/cqlb/server.php/www/wwwroot/angel/resource/main.min.js/www/wwwroot/angel/login_bt.json
举例修改 angel/app1.php
文件,其他文件修改方式相同。
找到 app1.php
双击打开编辑模式,按 Ctrl+F 搜索 39.105.134.68,找到后替换成你的服务器 IP 并保存。
除了需要修改文件的 IP,还需修改数据库 h5 中表 server 的 IP 字段。
打开 phpmyadmin 管理工具:
双击字段修改 IP,回车保存:
添加游戏网站才能访问 H5 游戏,通过网站菜单添加站点,域名写你的 IP:81,根目录为 /www/wwwroot/angel/
,PHP 选择 5.6 版本。
以上都执行完毕,那么到了激动人心的启动游戏啦,启动命令:
cd /data/sh start_server.sh
正常启动后会提示 success,查看监听端口可看到 5007、6007、7007、9007 处在监听中,那么恭喜你可以开始游戏啦。
netstat -lntp
访问游戏链接:http://IP:81
,使用你服务器的 IP。
可以打开游戏登录界面,恭喜你已经成功了第一步,然后注册个账号登录游戏,点击开始游戏,此时会停留在一个界面 2-3 分钟时间,如下图,这是由于一直在加载一个 10MB + 的文件,耐心等待即可,第二次开始游戏会读取浏览器缓存数据,无需等待。
填写游戏名称,选择职业,目前有三个职业,剑士、魔法师和弓箭手,游戏中最后你将拥有三个职业,所以选择哪个都可以。
最后,进入游戏界面,恭喜你已经成功完成游戏架设!
游戏自带 GM 工具,也就是 Game Master 游戏管理员,可以对游戏进行充值,发送装备,经验材料等功能,游戏内置的充值已屏蔽了支付配置。点击左侧 GM 悬浮按钮,打开 GM 界面。账号填写登录的账号,不是游戏人物名称,元宝 280 代表充值月卡,满级 VIP10 需充值 200000 元宝。
邮件收取 GM 邮件
直接满级 VIP,也就是 2 万 RMB 的充值!
同样你也可以单独打开 GM 界面进行操作,链接:http://IP:81/gm
。
啊!无敌是多么寂寞...
关闭游戏执行命令:
cd /data/sh stop_server.sh
执行后没有提示,即代表关闭成功。为什么没有提示,因为没有结果就是最好的结果。
架设中使用的数据库是 root 账户,密码 0987abc123,这就相当于把数据库暴漏了,知道 IP 就可以直接登录操作数据库了,所以存在着很大的安全问题。
首先我想到的解决办法就是修改 root 账户的密码,将源码中所有 0987abc123 替换成自己的密码,但是游戏没有运行成功,研究源码发现后台的核心文件 gameworld_24_5
是加密的,会读取 GameWorld.txt
文件中的配置:
--数据库连接配置SQL ={Host = "127.0.0.1",Port = 3306,DBName = "actor",DBUser = "root",DBPass = "jdusVRPm8XI+vYJb5gNZiw=="}, --0987abc123
后台使用的数据库密码 DBPass 是 0987abc123 通过加密算法得到的,不知道加密方式和加密 key 无法设置新的密码,所以修改密码这种方法是行不通的。
所以我们可以在 phpMyadmin 中创建一个新的数据库管理员,拥有和 root 一样的权限,密码仍旧设置为 0987abc123,只要不泄露该用户名,数据库还是安全的,而且不会影响到 root 下的其他数据库。对应修改源码中的数据库配置,将数据库用户 root 修改为新管理员用户名,推荐使用 webstorm 或 vscode IDE 可全局搜索并替换。
还需要执行架设第 6 条导入数据库中的命令,使该管理员账户可以从任何主机连接到 mysql 服务器。
重新导入文件,运行游戏成功,这样就解决了数据库的安全问题。
修改区名需要修改两处。
修改 /data/gameworld/GameWorld.txt
文件
修改数据库 h5 中 server 表 name 字段
关闭游戏,重新启动游戏,否则有可能会报 “不存在这个服务器” 错误。
大天使之剑 H5 游戏使用的是 ajax 和 websocket 通信方式传输游戏中的数据,主要使用 shell 命令、PHP、Lua、JavaScript 等编程语言实现,可惜后台核心文件 dbserver_24_5
、gameworld_24_5
、gateway_qiji_24_5
、loggerserver_24_5
都进行了加密处理,没法进一步研究,但是其他的功能,特别是前台对游戏界面渲染的实现还是很有研究价值的。
游戏已经运行了近 4 个月,没有 bug,而且很稳定,占用服务器内存也比较小,真的很完美,截止 2021 年 12 月底已经有近 200 名玩家,有的玩家更是把战力发育到极致,也有很多人通过这篇文章成功架设了游戏并在群里分享。这也是我成功架设的第一个游戏,只要服务器还在我就会一直运行这个游戏,不会关服。
------本文转载自echeverra网站,如侵权请联系站长删除------