考虑到朋友之间存在着游玩时间不一致的情况,想到曾经在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¬ω¬),这摸鱼态度堪称世界楷模。
因Mod大量内存占用,进行SWAP内存配置
先通过命令确认现有SWAP内存设置
$ free -m
在此处引用redhat推荐的官方建议SWAP空间配置
Amount of RAM in the system 物理内存 | Recommended swap space建议的交换空间大小 | Recommended swap space if allowing for hibernation如果开启休眠功能建议的交换空间大小 |
---|---|---|
⩽ 2GB | 2 times the amount of RAM | 3 times the amount of RAM |
> 2GB – 8GB | Equal to the amount of RAM | 2 times the amount of RAM |
> 8GB – 64GB | At least 4 GB | 1.5 times the amount of RAM |
> 64GB | At least 4 GB | Hibernation 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他的会话,导致了幽灵会话的问题。目前发现的唯一的解决方案就是重启游戏服务端。外网上也有玩家遇到过这个问题,一直没被解决。
来源
[1] 参考 手把手从零开始搭建《泰拉瑞亚》(Terraria)服务器 广树