最近玩了泰拉瑞亚,一个2D版的我的世界,但苦于steam的联机太过不靠谱,经常会出现和朋友之间联机失败的问题,所以我把服务器放到了部署我博客的服务器,这样就可以通过IP直接让好友加入游戏了!

首先是购买服务器,因为我们需要一个大家都能访问的公网IP,所以...

Vultr最近服务器在做活动,冲10美元送50美元,而且服务器你除了用来放泰拉瑞亚的服务,还可以给自己搭建Vxx。

新用户注册才有的福利,随便搞一个邮箱注册就可以了。

http://bwg.yiqimaila.com/vt/

前置准备

首先要解决的一个问题是服务器内存问题,为了支持数百人加入,需要较高的内存配置,但是服务器内存太贵了,启用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这种支持文件传输的工具连接服务器,可以直接把游戏存档拉出来保存到你自己电脑上,还可以上传你自己单机玩的存档。

泰拉瑞亚Linux主机打造指南的更多相关文章

  1. Terraria(泰拉瑞亚)存档覆盖(Linux)

    这是一篇关于游戏的不正经博客 ~ 游戏介绍: <泰拉瑞亚>是由Re-Logic公司开发的一款高自由度的沙盒游戏,于2011年5月16日在PC上发行. 玩家可以在游戏中做很多事情:制造武器战 ...

  2. Linux 桌面玩家指南:02. 以最简洁的方式打造实用的 Vim 环境

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  3. Linux 桌面玩家指南:18. 使用 Docker 隔离自己的开发环境和部署环境

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  4. Linux 桌面玩家指南:17. 在 Ubuntu 中使用 deepin-wine,解决一些依赖 Windows 的痛点问题

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  5. Linux 桌面玩家指南:18. 我对 Docker 的使用的学习心得

    原文:Linux 桌面玩家指南:18. 我对 Docker 的使用的学习心得 特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记 ...

  6. linux内核调试指南

    linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 ...

  7. Linux 桌面玩家指南:16. 使用 CUDA 发挥显卡的计算性能

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  8. Linux 桌面玩家指南:15. 深度学习可以这样玩

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  9. Linux 桌面玩家指南:14. 数值计算和符号计算

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

随机推荐

  1. MFC的sendmessage和postmessage 以及sendmessagetimeout

    PostMessage只负责将消息放到消息队列中,不确定何时及是否处理,相当于异步操作,执行后马上返回SendMessage要等到受到消息处理的返回码(DWord类型)后才继续,相当于同步操作,一直在 ...

  2. Linux之seq命令

    作用:seq命令用于以指定增量从首数开始打印数字到尾数,即产生从某个数到另外一个数之间的所有整数,并且可以对整数的格式.宽度.分割符号进行控制 语法: [1]  seq [选项]    尾数 [2]  ...

  3. 大道至简伪代码读后感java为代码形式

    //愚公移山 import.java.大道至简.*; import.java.愚公移山.*; public class yishan //定义一个名为yishan的类 {//类定义的开始 public ...

  4. NOIP 2004 T3 合唱队形(DP、最长上升/下降子序列)

    链接:https://ac.nowcoder.com/acm/contest/1082/C来源:牛客网 题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队 ...

  5. poj-3259 Wormholes(无向、负权、最短路之负环判断)

    http://poj.org/problem?id=3259 Description While exploring his many farms, Farmer John has discovere ...

  6. E. Alice and the Unfair Game(推导线段树)

    题:https://codeforces.com/contest/1236/problem/E 粗自:https://www.cnblogs.com/YSFAC/p/11715522.html #in ...

  7. Elasticsearch-URL查询实例解析

    ES(elasticsearch),以下简称ES ES的查询有query.URL两种方式,而URL是比较简洁的一种,本文主要以实例探讨和总结URL的查询方式 1.语法 curl [ -s][ -g][ ...

  8. day16-封装(私有静态属性、私有属性、私有方法、类方法、静态方法)

    # 一: class P: __age = 30 #私有静态属性 def __init__(self,name): self.__name = name #私有属性:属性名前面加上双下划线是私有属性. ...

  9. 系统学习javaweb重点难点2--.JavaScript中的正则对象简述和正则对象使用注意事项。

    注意:只是简述,对正则对象的了解目前还不是很深刻,日后详细了解了再来修改. 正文: 正则对象 首先,我们要了解一下什么是正则对象: 正则表达式,又称规则表达式.(英语:Regular Expressi ...

  10. Rearrangement

    In a two dimensional array of integers of size 2×n2 \times n2×n, is it possible to rearrange integer ...