CentOS 搭建 YGOPro 服务端 SRVPro

CentOS 搭建 YGOPro 服务端 SRVPro

安装 Node.JS,Mono,gcc 等依赖环境

任务时间:20min ~ 30min

SRVPro 采用 CoffeeScript 编写,其 YGOPro 主程序部分与原版 YGOPro 基本相同,采用 C++ 编写。其 AI 部分 WindBot 采用 C# 编写,在 CentOS 环境下需要使用 Mono 来编译与运行。这一部分将带领大家安装这些依赖环境。

配置 Mono 的 yum 源

运行下面的命令:

sudo -E yum install epel-release yum-utils -y
sudo -E rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
curl https://download.mono-project.com/repo/centos7-stable.repo | sudo -E tee /etc/yum.repos.d/mono-centos7-stable.repo

配置 Node.JS 的 yum 源

运行下面的命令:

curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo -E bash -

安装 Mono、Node.JS、Git 等 yum 包

SRVPro 与 YGOPro 的源代码托管在 GitHub ,所以安装的同时建议将 Git 一并安装好,以便于日后 YGOPro 与 SRVPro 的更新。 运行下面的命令来安装这些 yum 包:

sudo -E yum install -y nodejs git gcc gcc-c++ sqlite-devel readline-devel openssl-devel wget mono-complete

安装PM2

SRVPro 作为 Node.JS 应用,采用 pm2 作为进程管理工具。 pm2 可以使用 Node.JS 包管理工具 npm 进行安装。运行下面的命令安装 pm2 :

sudo -E npm install pm2 -g

安装 YGOPro 以及 SRVPro 的其他依赖

任务时间:30min ~ 45min

安装 Redis 数据库

SRVPro 的云录像功能采用 Redis 数据库来工作,我们需要安装 Redis 来保证 SRVPro 云录像功能正常工作。使用以下命令编译安装 Redis :

wget http://download.redis.io/releases/redis-stable.tar.gz --no-check-certificate
tar xzfv redis-stable.tar.gz
cd redis-stable
make
sudo -E make install
sudo -E cp -rf src/redis-server /usr/bin/
cd ..

然后使用以下命令用 pm2 启动Redis 数据库:

pm2 start redis-server

安装 Lua 5.3.5

YGOPro的卡片效果采用 Lua 语言编写, Lua 自然也是 YGOPro 的依赖的一部分。目前 YGOPro 采用的 Lua 版本为 Lua 5.3.5 。使用以下命令安装 Lua 5.3.5 :

wget 'http://www.lua.org/ftp/lua-5.3.5.tar.gz' --no-check-certificate
tar zxf lua-5.3.5.tar.gz
cd lua-5.3.5
sudo -E make linux test install
cd ..

安装 premake5

YGOPro的项目工程文件采用 premake5 生成。我们需要安装 premake5 才能完成 YGOPro 的编译操作。 YGOPro 采用的 premake5 版本是 5.0.0-alpha12 。使用以下命令安装premake5:

wget -O - https://github.com/premake/premake-core/releases/download/v5.0.0-alpha12/premake-5.0.0-alpha12-linux.tar.gz | tar zfx -
sudo -E cp -rf premake5 /usr/bin/

除了直接使用预编译的包以外,也可以从源码编译安装。这里不再详细叙述。

安装 libevent

YGOPro 的网络模块采用 libevent。libevent 虽然也可以用过 yum 安装,但是由于版本和稳定性问题还是建议使用源码编译安装。使用以下命令编译安装 libevent 2.0.22 :

wget 'https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz' -O libevent-2.0.22-stable.tar.gz --no-check-certificate
tar xf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable/
./configure
make
sudo -E make install
cd ..

然后创建 libevent 的符号链接。这4条命令根据系统不同只需要运行其中2条即可,不过建议全部运行以防万一。

sudo -E ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
sudo -E ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5
sudo -E ln -s /usr/local/lib/libevent_pthreads-2.0.so.5 /usr/lib/libevent_pthreads-2.0.so.5
sudo -E ln -s /usr/local/lib/libevent_pthreads-2.0.so.5 /usr/lib64/libevent_pthreads-2.0.so.5

至此, YGOPro 和 SRVPro 的依赖环境的配置已完成。

安装 YGOPro 和 SRVPro 部分

任务时间:30min ~ 45min

经过上面的环境搭建, SRVPro 已经可以准备安装。我们开始吧。

安装 SRVPro

SRVPro 的源代码托管在 GitHub 。 使用以下命令从 GitHub 克隆 SRVPro 的代码仓库,并安装 npm 的依赖包。

git clone https://github.com/moecube/srvpro ygopro-server
cd ygopro-server
npm install

注意 npm install 运行的时候有一个 sqlite3 库,由于二进制文件国内无法下载,只能从源码编译安装。安装的时候大家忽略产生的 warning 信息即可。 若不希望等待太长时间,可以打开 package.json 文件,将以下条目删除即可。

    "sqlite3": "latest",

安装 YGOPro 服务端

每次 SRVPro 创建房间的时候, SRVPro 都会启动一个 YGOPro 的子进程来处理整个对战流程。按照以下步骤安装适用于服务端的 YGOPro 修改版。

  • YGOPro 源码的获取

YGOPro 的源码托管在 GitHub ,其地址为https://github.com/moecube/ygopro 。不过考虑到国内访问 GitHub 的速度,以及拥有众多分支和提交历史 YGOPro 的下载量,本次教程我们采用码云的 YGOPro 的镜像来进行服务端的安装。不过为了保证用到最新的 YGOPro 版本,建议大家在实际操作中,还是采用上述 GitHub 地址来进行安装。 在 ygopro-server 目录下运行以下命令从码云获取 YGOPro 的源码:

git clone https://gitee.com/purerosefallen/ygopro --branch=server --recursive

YGOPro 的 Git 仓库有2个子模块, ocgcore 和 script 。 ocgcore 负责游戏王对战逻辑的处理,而 script 则存放 YGOPro 的所有正式发售的卡片的脚本文件。

  • 进入 ygopro 目录,并更新 YGOPro 的子模块到最新版本。
cd ygopro
git submodule foreach git checkout master
  • 生成 YGOPro 的 Makefile 文件。

产生的 os.ishost 的警告可以忽略。

premake5 gmake
  • 进行 YGOPro 的编译操作。

编译产生的 warning 信息也可以忽略。

cd build/
make config=release
cd ..
  • 创建 YGOPro 的符号链接,便于 SRVPro 进行调用。同时用 strip 命令对编译的文件进行处理。
ln -s bin/release/ygopro ./
strip ygopro
  • 至此, YGOPro 的编译操作已经完成。返回上一级目录 ygopro-server ,来继续接下来的操作。
cd ..

安装 WindBot

WindBot 是IceYGO的一个 YGOPro 的衍生项目,为 YGOPro 和 SRVPro 提供 AI 对战的功能。在 ygopro-server 目录下使用以下命令安装 WindBot 。

git clone https://github.com/moecube/windbot
cd windbot
xbuild /property:Configuration=Release /property:TargetFrameworkVersion="v4.5"

然后创建 WindBot.exe 的符号链接,并将 YGOPro 的卡片数据库文件链接过来。

ln -s bin/Release/WindBot.exe .
ln -s ../ygopro/cards.cdb .
cd ..

至此, YGOPro 和 SRVPro 的安装已经完成,马上可以投入使用。下一个任务将带领大家完成 SRVPro 的配置。

SRVPro 的配置工作

任务时间:10min ~ 20min

通过以上的任务, YGOPro 和 SRVPro 已经安装完成。但是在正式开服之前,还是需要做一些服务器的配置,来保证服务器正常运行。

复制配置文件

./data/default_config.json 为 SRVPro 的默认配置文件,我们需要复制这个文件来进行配置。 在 ygopro-server 目录下执行以下命令。

mkdir config
cp -rf ./data/default_config.json ./config/config.json

编辑配置文件

我们需要对上一步骤复制的配置文件进行编辑

在这里可以编辑的内容很多,如 settings.port 为服务器端口, settings.modules.welcome 为服务器欢迎提示语等,具体不再一一叙述。

但是我们需要编辑的内容是 settings.modules.cloud_replay ,把其中 enabled 字段设置为 true 来开启云录像功能。

同时把 settings.modules.random_duel.enabled 设置为 true 来打开随机对战功能。

把 settings.modules.windbot.enabled 设置为 true 来打开AI对战功能。同时把 settings.modules.windbot.spawn 设置为 true 来让 SRVPro 启动时自动启动 WindBot 。

开启服务器

配置文件配置好了之后,就可以开启服务器了。使用以下命令来开启服务器。

pm2 start ygopro-server.js

开启之后,在YGOPro客户端内使用 IP <您的 CVM IP 地址> ,刚刚在 config.json 设置的服务器端口(默认为 7911 ),输入相同的密码(例如 M#123 )即可连接到服务器,和你的朋友进行对战。具体操作方法和 YGOPro 233服 相同。

另外,还可以使用以下命令设置 SRVPro 开机启动。

pm2 save
sudo -E pm2 startup

另外,为了保证服务器稳定性,建议编辑 crontab ,即使用命令 crontab -e 加入以下条目,设置每天凌晨4点让SRVPro重新启动。

0 4 * * * pm2 restart all

结语

SRVPro 已经搭建完毕,在 YGOPro 233服 比较卡的时候,你可以和你的朋友在这台你自己的服务器上面进行对战了。

如果你有 DIY 卡片希望加入服务器,可以把DIY卡片数据放入 ygopro-server/ygopro/expansions 目录来在服务器上使用。但是切忌覆盖入 ygopro-server/ygopro/script 目录和写入 ygopro-server/ygopro/cards.cdb 文件,否则在 YGOPro 版本更新时引起合并冲突。

另外, SRVPro 需要的内存并不多,4G的内存够200个人左右同时进行游戏,1G的内存也够50个人了,看个人需求。 CPU 需要的也不多,1核 CPU 下100人同时在线也只占用了 6% 左右。但是为了稳定还是建议使用双核 CPU 。如果有空余的资金,建议优先升级服务器带宽。

但是, SRVPro 搭建容易,维护难。上面的教程还是比较基础的,但是涉及到 YGOPro 版本更新,需要把 YGOPro 和 SRVPro 的 Git 版本库全部 git pull 到最新版本。并重新编译 YGOPro,最后重启服务器 。这里不再叙述步骤。

感谢完成本次 SRVPro 的搭建教程,祝愿你们运营的服务器越来越好!

點閱: 16

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料