QQ 咨询
喝杯饮料
微信交流
wx公众号
432

白鹭游戏引擎网络棋牌搭建步骤
如何文章对你有用的话,就点击左边悬浮按钮,请小编喝杯饮料吧
时间: 2020-12-21 15:00:17  作者:北桥苏  阅读:(1030)

前言:

        项目是一个游客登录型的棋牌联网游戏,前端是白鹭引擎,后端PHP开发。分为登录和获取基本信息的Http层和websocket通信的游戏层。后台需要有一个分布式网关服务器(php游戏网关)。以下为了搭建更快捷,使用宝塔进行操作,前提已经通过宝塔安装完毕了LNMP。

 

资源:

源码地址:  https://gitee.com/scgywx/threecard

作者说明:  https://my.oschina.net/scgywx/blog/757726

Fooking地址: https://gitee.com/scgywx/fooking

 

环境:

  1. CentOS7
  2. PHP7.3,至少要大于5
  3. 宝塔
  4. Nginx

 

步骤:

  1. 下载完源码地址的源码,解压得到以下四个目录,分别的用途见标注。

 

2. EgretWing工具导入client中的代码,web整个文件夹的代码放入服务器(我是本地使用VM搭的centOS虚拟机)。

3. 宝塔中的使用的PHP安装yaf扩展,重启PHP后访问查看phpinfo()可能找不到yaf

 

4. 通过宝塔的创建网站添加web中的代码,使得能通过域名请求到web目录下的api.php就行。主要是三个接口,分别返回登录信息,websocket的地址和端口,图片代理等。

5. 代码client文件中的代码修改src/scene/Login.ts的onLoginTouch方法中请求网络接口为上面web中配置的域名,src/Main.ts中的initGame方法同样修改网络请求地址为上面web配置的域名。接口分别是昵称和登录token,另一个是websocket地址和端口。

6. 下载上面的Fooking的源代码,并将代码放入服务器中,目录结构如下。

 

7. 打开服务器命令面板,cd进入fooking目录(以我的为例,名字可以自定义)。然后make进行编译。Src目录中多出后缀为0的文件,面板也会显示编译结束。

 

8. 打开fooking目录下的router.lua文件。PROT可以自行定义,确定下了这个端口,我的是8015。就需要在centOS防火墙中对其放行,宝塔是直接点击安全添加8015进行放行。

 

9. 依然是同级目录,打开config.lua文件,端口就是游戏中webscket进行连接的端口。

主要配置的有路由服务器地址(上面router设置的端口和地址),后端服务器列表的“BACKEND_SERVER”,以及fastcgi params,配置标注如下。

--监听IP和端口
HOST = "0.0.0.0";
PORT = 9005;

--守护进行
--DAEMONIZE = 1;

--日志文件(为空则不输出日志, stdout-输出到标准输出上, 其它则按文件处理)
LOG_FILE = "stdout";--直接屏幕打印
--LOG_FILE = "/tmp/fooking-gateway.log";--输出到文件

--1: 仅error
--2: error与info
--3: 所有
LOG_LEVEL = 3;

--是否路由服务器(0-否, 1-是)
--如果是路由,ROUTER以下的配置将被忽略)
ROUTER = 0;

--服务器ID
SERVER_ID = 1;

--工作进程
WORKER_NUM = 2;

--最大连接数
MAX_CLIENT_NUM = 10000;

--缓冲区大小
MAX_BUFF_SIZE = 4096;

--路由服务器
ROUTER_HOST = "192.168.234.128";
ROUTER_PORT = 8015;

--SSL配置
--SSL = 1
--SSL_CERT = "/tmp/cert.pem"
--SSL_PKEY = "/tmp/pkey.pem"

--指定时间内连接没有数据包请求,将会踢掉连接(单位秒),为0不处理
IDLE_TIME = 0;

--脚本
SCRIPT_FILE = "../scripts/Websocket.lua";

--后端服务器列表
BACKEND_CONNECT_TIMEOUT = 5;--连接超时时间(单位秒)
BACKEND_READ_TIMEOUT = 10;--数据接收超时间(单位秒)
BACKEND_KEEPALIVE = 10;--最大维持长连接数量
BACKEND_SERVER = {
	["unix:/tmp/php-cgi-73.sock"] = 5,--第一列是socket选项,第二列是权重(跟nginx的upstream差不多一个意思)
};

--新连接是否通知(0-不通知, 1-通知)
--请求头会有EVENT=1
EVENT_CONNECT = 0;

--关闭连接是否通知(0-不通知, 1-通知)
--请求头会有EVENT=2
EVENT_CLOSE = 1;

--fastcgi params
FASTCGI_PREFIX = "";--go下要使用HTTP_作为前缀,否则拿不了SESSIONID和EVENT
FASTCGI_ROOT = "/www/wwwroot/san_zhang_pai/server/";--必须以/结尾
FASTCGI_FILE = "server.php";
FASTCGI_PARAMS = {
	["SERVER_SOFTWARE"] = "fooking",
	["SERVER_PROTOCOL"] = "HTTP/1.1",
	["GATEWAY_INTERFACE"] = "CGI/1.1",
	["REQUEST_METHOD"] = "POST",
	["SCRIPT_FILENAME"] = FASTCGI_ROOT..FASTCGI_FILE,
	["SCRIPT_NAME"] = FASTCGI_FILE,
	["DOCUMENT_ROOT"] = FASTCGI_ROOT,
	["SERVER_NAME"] = "server.yafgame.com/",
	["QUERY_STRING"] = "a=10&b=20",
};

10. 启动router.lua。 Cd src,然后./fooking ../router.lua

11. 查看php-fpm配置文件方法,命令输入, ps -ef | grep fpm。可以看到php-fpm的配置文件。

12. 找到并打开php-fpm.conf文件,可以看到监听的通信方法以及通信的具体地址,还有fpm的错误日志存放地址。宝塔Nginx与fpm默认是以unix socket方法,如果fpm修改成了tcp,那nginx也要修改。

 

13. 查看fpm.conf后与fooking的config设置完毕后,就可以开始启动config了。Cd fooking, 然后./fooking ../config.lua。

如果出现Can't found available backend server, Please check BACKEND_SERVER,多是因为config的后端配置填的通信方式与fpm的不一致。其他的就是FASTCGI_ROOT没填对地址。

 

14. 最后打开EgretWing导入的client中的源码,点击调试,弹出游戏界面,登录后正常的话就会进入游戏界面了。

 

Fooking分布式游戏服务器网关结构图--

15. 启动的config.lua出现“stream_socket_client(): unable to connect to tcp://127.0.0.1:9010”时,修改server的“config”中的router,IP和端口换成router.lua中配置启动的地址和端口。

16. 修改server的redis中的为自己安装的地址和端口,web的api/api/api/include/config.inc.php,修改redis地址和微信公众号APPID等地址。






用户登录


     QQ登录

我的标签


随机文章

  • 淘客分销,订单追踪解决方案(1). 提前创建好pid 1万个插入数据库…… 查看详情
  • 解决easyswoole的swServer_start_check: onTask event callback must be set at报错最近运行了一下之前用easyswoole写的…… 查看详情
  • 新手如何选购配件比价到完成电脑组装升级说明一下北桥苏尽管是和电脑打交道但对电脑硬件…… 查看详情

友情链接





Copyright© 2016-2021 北桥苏 & 版权所有    赣ICP备16002525号-1
如有侵权、不妥之处,请联系站长的客服并出示版权证明以便删除。敬请谅解! 站长客服联系方式:QQ2652364582