ET框架7.2使用目录结构提供的发布脚本进行发布: Publish-linux-x64.ps1
使用VSCode打开
要确保项目编译成功没有报错
点击此文件右键点击使用PowerShell运行
会在ET目录下生成Publish文件夹
如果发布在Windows系统下把 Publish-linux-x64.ps1 中linux全部改为win
阿里云-计算,为了无法计算的价值
登录阿里云官网购买云服务器ECS
购买完后使用本地电脑远程连接云服务器
在本地电脑打开:远程桌面连接
Windows服务器默认远程桌面连接的端口为:3389
如果云服务器拒绝访问则在安全组中开放端口访问权限
输入密码进行连接:
将ET框架下Publish文件夹下发布好的文件进行复制 —— 到远程桌面连接
在远程桌面连接安装dotnet-sdk环境
安装好后双击启动Server.exe
修改Config中的起服配置就可以使外部的玩家访问游戏服务器了
在ET框架代码中打开ConstValue静态类
namespace ET
{
public static class ConstValue
{
public const string RouterHttpHost = "127.0.0.1";
public const int RouterHttpPort = 30300;
public const int SessionTimeoutTime = 30 * 1000;
}
}
把RouterHttpHost改为云服务器的公网IP地址,RouterHttpPort改为云服务器开放的端口
修改[email protected]配置文件
内网地址和外网地址对应云服务器的私网IP和公网IP
重新发布应用程序上传远程桌面部署运行Server.exe
[email protected]配置文件主要用于配置当前要在哪台机器上要启动几个游戏服务器进程,配置文件中所属机器Id字段代表[email protected]配置文件
[email protected]配置文件中记录了在进程中所要创建的一个或多个Scene实体,其中所属区Id来自[email protected]配置文件中的Id
[email protected]配置文件用于配置游戏有多少个游戏区服
StartConfig文件下的目录代表ET框架在不同环境中的不同配置
对Release(代表云服务配置)目录下的配置文件进行修改为多进程配置
作用:用于启动和拉取其他的游戏服务器进程,并且时刻监听其他游戏服务器进程是否处于存活的状态。如果某一个游戏服务器进程挂掉了,守护监听进程就可以监听到游戏进程的崩溃情况,及时给开发者发送邮件报告情况。
重新进行游戏服务器端的发布,复制win-x64到远程桌面
在bin目录中按住Shift右键,点击在此处打开命令窗口
输入Server.exe --AppType=Watcher --StartConfig="StartConfig/Localhost"
多台云服务器需要修改[email protected]配置文件
先将云服务器的Win系统改为Linux系统
通过Xshell远程连接云服务器Linux系统
发布ET框架的Linux版本
一步一步进入bin目录
查看bin目录下文件
在 CentOS Linux 上安装 .NET - .NET | Microsoft Learn
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-7.0
sudo yum install dotnet-runtime-7.0
安装好后执行 ./Server
验证Server的运行,新建一个连接执行Log日志文件
下载开源项目recastnavigation
复制项目中所有的文件夹(是文件夹)到RecastDll文件夹下,然后将整个Libs文件夹放到Linux系统中
安装C 和 C++编译环境:yum -y install gcc gcc-c++ autoconf make
安装其他第三方库:yum install -y openssl openssl-devel
执行cmake目录下的bootstrap文件
执行make命令
编译第三方寻路库
执行cmake编译源代码的命令 :cmake --build build_linux64 --config Release
编译发生报错 ,修改CMakeLists.txt文件: vim CMakeLists.txt
重新执行编译命令:cmake --build build_linux64 --config Release
编译完成
把新生成的库文件libRecastDll.so 复制到 /root/linux-x64/Bin/
cp libRecastDll.so /root/linux-x64/Bin/
同时把 libRecastDll.so 复制到本地电脑中
执行游戏服务器端的应用程序
运行成功,但是关闭远程连接游戏服务器也随之关闭了
进入到Libs目录下的KCP文件
输入编译命令: gcc -fPIC -shared ikcp.c -o libkcp.so
将编译好的动态库文件复制到Bin目录下
执行 ./Server 命令解决报错
云服务器安全组开放端口
执行命令使游戏服务器断开连接在后台运行: nohup ./Server >runtime.log 2>&1 &
日志输出会写入到runtime.log中
执行命令查看游戏服务器端有没有正确执行:ps aux | grep Server
随着时间的推移日志文件会越来越臃肿
ET6.0版本关闭游戏服务端对日志进行一个修改
修改 NLog.config,然后重新上传
删除生成的runtime.log文件:rm -rf runtime.log
在Log中查看日志文件
解决此问题的第二个方法:模拟连接解决,安装一个我也不知道是什么的东西
安装好后在Bin目录下创建模拟连接: screen -S ET (ET是自己起的名字)
Ctrl + A + D退出模拟连接
查看是否被正确执行起来:
screen -ls 查看有哪些模拟连接 screen -r ET 重新回到ET模拟连接,
进入模拟连接后Ctrl +C关闭模拟连接,执行 exit 命令彻底退出模拟连接