泰拉瑞亚Linux主机打造指南
最近玩了泰拉瑞亚,一个2D版的我的世界
,但苦于steam的联机太过不靠谱,经常会出现和朋友之间联机失败的问题,所以我把服务器放到了部署我博客的服务器,这样就可以通过IP直接让好友加入游戏了!
首先是购买服务器,因为我们需要一个大家都能访问的公网IP,所以...
Vultr最近服务器在做活动,冲10美元送50美元,而且服务器你除了用来放泰拉瑞亚的服务,还可以给自己搭建Vxx。
新用户注册才有的福利,随便搞一个邮箱注册就可以了。
前置准备
首先要解决的一个问题是服务器内存问题,为了支持数百人加入,需要较高的内存配置,但是服务器内存太贵了,启用swap倒是不错的选择。
确认下SWAP设置了多少
free -m
如果足够1GB则跳过这一步直接开始搭建游戏!
删除SWAP分区
swapoff -a
新增SWAP分区
dd if=/dev/zero of=/root/swapfile bs=1M count=1024
格式化交换分区文件:
mkswap /root/swapfile
启用swap分区文件
swapon /root/swapfile
添加开机启动
vi /etc/fstab
在最后一行添加
/root/swapfile swap swap defaults 0 0
重启下是否生效
reboot
重启后输入指令查看下SWAP是否增加
free -m
搭建服务
首先下载需要用到的工具库。
# yum install wget # yum install screen # yum install unzip
因为泰拉瑞亚需要用到7777端口,所以我们要让防火墙允许。
# firewall-cmd --permanent --add-port=7777/tcp success # firewall-cmd --reload success
创建一个用来存放泰拉瑞亚服务器的文件夹
# cd /opt/ # mkdir terraria # mkdir terraria/{bin,downloads} # chown -R root:root terraria
下载泰拉瑞亚官方提供的服务器包。
$ cd /opt/terraria/downloads $ wget http://terraria.org/server/terraria-server-1353.zip
解压软件包。
$ unzip terraria-server-1353.zip -d /opt/terraria/bin
然后需要一个配置文件。
$ vi serverconfig.txt
文件内容如下:
world=/opt/terraria/Worlds/世界的名字.wld autocreate=2 worldname=世界的名字 difficulty=0 maxplayers=4 password=设定一个密码 worldpath=/opt/terraria/Worlds
具体世界的名字和密码自定。
autocreate 是没有发现世界自动生成世界的大小 1、2、3分别对应小、中、大
difficulty 对应的是0为普通,1为专家
maxplayers是最大人数
给运行文件设置权限
$ cd /opt/terraria/bin/1353/Linux $ chmod 744 TerrariaServer.bin.x86_64
启动服务器
$ ./TerrariaServer.bin.x86_64 -config /opt/terraria/serverconfig.txt
初次运行因为要创建世界需要一定时间当看到
Terraria Server v1.3.5.3 Listening on port 7777 Type 'help' for a list of commands. :
表示生成成功!
此时可以在游戏的多人模式通过IP进入游戏看看是否成功。
确认成功后退出服务器
: exit
重新编辑配置文件防止重新生成世界
$ cd /opt/terraria $ cp -p serverconfig.txt serverconfig.txt_yyyymmdd $ vi serverconfig.txt
将三个配置注释掉
autocreate=2 worldname=世界的名字 difficulty=1
改为
# autocreate=2 # worldname=Terraria # difficulty=1
再次运行一次看看是否成功。
优化体验
每次启动都要输入这么多文件夹路径很麻烦,所以我们可以制作一个自动启动的脚本:
$ vi terra_script.sh
内容如下:
#!/bin/bash USERNAME='root' SCNAME='terraria' TERA_VER='1353' BIN_PATH="/opt/terraria/bin/$TERA_VER/Linux/" SERVICE='TerrariaServer.bin.x86_64' CONFIG='/opt/terraria/serverconfig.txt' ME=`whoami` if [ $ME != $USERNAME ] ; then echo "Please run the $USERNAME user." exit fi start() { if pgrep -u $USERNAME -f $SERVICE > /opt/terraria/logs/start.txt ; then echo "$SERVICE is already running!" exit fi echo "Starting $SERVICE..." screen -AmdS $SCNAME $BIN_PATH$SERVICE -config $CONFIG exit } stop() { if pgrep -u $USERNAME -f $SERVICE > /opt/terraria/logs/stop.txt ; then echo "Stopping $SERVICE " else echo "$SERVICE is not running!" exit fi screen -p 0 -S $SCNAME -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. "\015' sleep 10 screen -p 0 -S $SCNAME -X eval 'stuff "exit"\015' exit } save() { echo 'World data saving...' screen -p 0 -S $SCNAME -X eval 'stuff "say World saveing..."\015' screen -p 0 -S $SCNAME -X eval 'stuff "save"\015' exit } status() { if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then echo "$SERVICE is already running!" exit else echo "$SERVICE is not running!" exit fi } case "$1" in start) start ;; stop) stop ;; save) save ;; status) status ;; *) echo $"Usage: $0 {start|stop|status|save}" esac
这样就分别有了「启动」「关闭」「保存」「重启」了。
分别对应:
服务器启动 /opt/terraria/terra_script.sh start 服务器停止 /opt/terraria/terra_script.sh stop 服务器重启 /opt/terraria/terra_script.sh restart 确认状态 /opt/terraria/terra_script.sh status 保存世界存档 /opt/terraria/terra_script.sh save
给文件提升权限
$ chmod 744 terra_script.sh
确认下启动
$ sh -x ./terra_script.sh start
通过「screen -ls」确认下是否开启了窗口
$ screen -ls There is a screen on: 883.terraria (Detached) 1 Socket in /var/run/screen/S-terraria.
确认下关闭
$ sh -x ./terra_script.sh stop
确认关闭是否成功
$ screen -ls No Sockets found in /var/run/screen/S-terraria.
这样就算是完成了,世界的存档就在Worlds目录中,如果你用了MobaXterm这种支持文件传输的工具连接服务器,可以直接把游戏存档拉出来保存到你自己电脑上,还可以上传你自己单机玩的存档。