在你的Linux上开服运行加上Mod的泰拉瑞亚

在Centos上运行泰拉瑞亚mod服务器

考虑到朋友之间存在着游玩时间不一致的情况,想到曾经在Centos上运行泰拉瑞亚mod服务器,方便在非同时游玩的事情,在此笔记。本文的阅读相较适合具有一定Linux能力,但也可以按照笔者的手把手步骤操作完成搭建。

根据实际测试,运行Terraria(以及tModloader)默认情况下使用32位架构而不是64位运行,因此最多只能使用4GB RAM。但目前64位版本处于测试阶段,仅限于Windows版本,对于需要开大量大型Mod可能需要4GB RAM以上的Windows服务器,但是大量大型Mod会对服务器稳定造成很大影响。在使用大型Mod的情况下,推荐使用2核心CPU,4GB RAM配置的服务器,网络情况至少每个玩家能分配到接近1Mbps的带宽,可以保证同时运行1~2个大型mod,例如:Calamity 和 Thorium。

下文主要以Centos7为例介绍,受服务器性能限制,建议本地安装Mod后可以先在本地生成地图。

因为太懒,没想到从4月一拖再拖,最近泰拉瑞亚最后一次更新都实装了(笑),连tModLoader也作为了官方正统DLC登陆了Steam平台,终于还是痛下决心写完了这篇不太专业的教程。值得吐槽的是,新的1.4.0.2版本的泰拉瑞亚新内容甚至没有进行中文化(lll¬ω¬),这摸鱼态度堪称世界楷模。

先通过命令确认现有SWAP内存设置

$ free -m

在此处引用redhat推荐的官方建议SWAP空间配置

Amount of RAM in the system 物理内存Recommended swap space建议的交换空间大小Recommended swap space if allowing for hibernation如果开启休眠功能建议的交换空间大小
⩽ 2GB2 times the amount of RAM3 times the amount of RAM
> 2GB – 8GBEqual to the amount of RAM2 times the amount of RAM
> 8GB – 64GBAt least 4 GB1.5 times the amount of RAM
> 64GBAt least 4 GBHibernation not recommended


作为游戏服务器用途,只需保持SWAP空间与实际物理内存大小持平即可,出于硬盘I/O性能限制,再继续增大SWAP空间也无法流畅运行Mod。

若空间不符合则进行下面的对现有SWAP内存进行删除并重新分配。

删除现有SWAP空间:

$ swapoff -a

SWAP空间新增分区:

$ dd if=/dev/zero of=/home/swap bs=1024 count=1024000

格式化交换分区文件:

$ mkswap /home/swapfile

用swapon命令把这个文件分区挂载swap分区

$ swapon /home/swapfile

添加开机启动

$ vi /etc/fstab

于文末添加

/home/swap swap swap default 0 0

这样就算重启系统,SWAP分区依旧会挂载

下载Mod服务端以及Mod

造访terraria官方网站下载最新版本服务端文件,即该页面底部的“PC Dedicated Server”。

造访terraria论坛下载最新版本的适用于Linux的tModLoader,已经用于游玩的Windows Mod程序。

在本地将Linux Mod服务端程序复制到刚刚下载的官方服务端文件夹里的Linux文件夹下,并且全部覆盖,然后将Linux文件夹上传到服务器,不懂Linux的可以直接上传到根目录。

把Windows Mod程序覆盖到你的Steam/GOG版本泰拉瑞亚文件夹下,并运行,下载你需要的Mod,Mod文件夹可以在游戏里点击打开文件夹找到,把他们上传到服务器的默认Mod文件夹/root/.local/share/Terraria/ModLoader/Mods

Mod服务端运行

按照上面的步骤,你的Mod服务端应该位于服务器root路径下的Linux文件夹内。输入以下命令:

$ cd Linux
$ chmod 744 tModLoaderServer
$ chmod 744 tModLoaderServer.bin.x86_64

 

接着输入命令运行服务端程序

$ ./tModLoaderServer

根据界面提示,输入m并回车进入Mod管理界面,之后输入e并回车启用全部Mod。

启用Mod成功后输入r并回车返回上一页,如果未在本地生成地图则输入n并回车,根据你的个人需求开始创建新地图。(如果装有大型Mod可能会自带一些特殊新环境,在服务器上运行可能需要花上较长时间)

生成地图后会自动返回主菜单,之后可以退出服务端程序。

之后可以在自己的电脑上新建一个serverconfig.txt文档,并进行编辑,输入以下内容:

world=/root/.local/share/Terraria/ModLoader/Worlds/你创建的世界的名字.wld

maxplayers=设定最大游玩人数(同时游玩人数过高对带宽和内存要求较大)

password=设定房间密码

worldpath=/opt/terraria/Worlds

然后再新建一个Shell脚本,内容过长不在此处赘述,未按照上面操作的可以自行修改。

点击下载

修改脚本文件名为 terraria.sh

然后可以把它们上传到你的Linux文件夹内,并赋予脚本运行权限。

$ chmod 744 terraria.sh

之后为服务器添加服务项实现开机启动。

$ cd /etc/systemd/system
$ vi terraria.service

在里面输入以下内容

[Unit]
Description=tModLoader Server
After=network.target local-fs.target
[Service]
Type=forking
User=root
ExecStart=/root/Linux/terraria.sh start
ExecStop=/root/Linux/terraria.sh stop
[Install]
WantedBy=multi-user.target

保存后运行命令:

$ systemctl enable terraria

然后重启检测tModLoader是否正常运行,运行命令

$ /root/Linux/terraria.sh status

tModLoader如果依旧运行那么就成功了。

同时不建议使用root用户运行。

Mod服务端自动保存的配置

如果服务器没有安装crontabs则运行

$ yum install crontabs
$ systemctl enable crond
$ systemctl start crond

编辑启动项

$ vi /etc/crontab

在文末添加

*/15 * * * * root /root/Linux/terraria.sh save
0 6 * * * root /root/Linux/terraria.sh save
5 6 * * * root reboot

详细的crontab教程与配置说明可以自行Google。

为什么在此处添加重启项,可以在一定程度上方便第二天的游玩,在文末的幽灵会话中会进行介绍。

到此tModLoader的配置就完成了。

为什么我的泰拉瑞亚经常一直连接中

这是在泰拉瑞亚服务器运行中常见的会出现的一个幽灵会话问题。

笔者在尝试过Steam PC版本程序(原版和tModLoader版)直接开服,或者Linux服务器,都会出现幽灵会话问题,即创建游戏后,非主机玩家退出,之后就无法再次加入到游戏中,需要创建者重启游戏。

据結び判断这是Terraria一个一直有的bug,多年间都没有被修复(截止至1.3.5.3版本的游玩记录)。玩家已经退出了服务器,然而服务器没有及时kill他的会话,导致了幽灵会话的问题。目前发现的唯一的解决方案就是重启游戏服务端。外网上也有玩家遇到过这个问题,一直没被解决。

来源

Leave a Reply

召唤伊斯特瓦尔