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

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

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

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

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

前置准备

首先要解决的一个问题是服务器内存问题,为了支持数百人加入,需要较高的内存配置,但是服务器内存太贵了,启用swap倒是不错的选择。

确认下SWAP设置了多少

  1. free -m

如果足够1GB则跳过这一步直接开始搭建游戏!

删除SWAP分区

  1. swapoff -a

新增SWAP分区

  1. dd if=/dev/zero of=/root/swapfile bs=1M count=1024

格式化交换分区文件:

  1. mkswap /root/swapfile

启用swap分区文件

  1. swapon /root/swapfile

添加开机启动

  1. vi /etc/fstab

在最后一行添加

  1. /root/swapfile swap swap defaults 0 0

重启下是否生效

  1. reboot

重启后输入指令查看下SWAP是否增加

  1. free -m

搭建服务

首先下载需要用到的工具库。

  1. # yum install wget
  2. # yum install screen
  3. # yum install unzip

因为泰拉瑞亚需要用到7777端口,所以我们要让防火墙允许。

  1. # firewall-cmd --permanent --add-port=7777/tcp
  2. success
  3. # firewall-cmd --reload
  4. success

创建一个用来存放泰拉瑞亚服务器的文件夹

  1. # cd /opt/
  2. # mkdir terraria
  3. # mkdir terraria/{bin,downloads}
  4. # chown -R root:root terraria

下载泰拉瑞亚官方提供的服务器包。

  1. $ cd /opt/terraria/downloads
  2. $ wget http://terraria.org/server/terraria-server-1353.zip

解压软件包。

  1. $ unzip terraria-server-1353.zip -d /opt/terraria/bin

然后需要一个配置文件。

  1. $ vi serverconfig.txt

文件内容如下:

  1. world=/opt/terraria/Worlds/世界的名字.wld
  2. autocreate=2
  3. worldname=世界的名字
  4. difficulty=0
  5. maxplayers=4
  6. password=设定一个密码
  7. worldpath=/opt/terraria/Worlds

具体世界的名字和密码自定。

autocreate 是没有发现世界自动生成世界的大小 1、2、3分别对应小、中、大

difficulty 对应的是0为普通,1为专家

maxplayers是最大人数

给运行文件设置权限

  1. $ cd /opt/terraria/bin/1353/Linux
  2. $ chmod 744 TerrariaServer.bin.x86_64

启动服务器

  1. $ ./TerrariaServer.bin.x86_64 -config /opt/terraria/serverconfig.txt

初次运行因为要创建世界需要一定时间当看到

  1. Terraria Server v1.3.5.3
  2. Listening on port 7777
  3. Type 'help' for a list of commands.
  4. :

表示生成成功!

此时可以在游戏的多人模式通过IP进入游戏看看是否成功。

确认成功后退出服务器

  1. : exit

重新编辑配置文件防止重新生成世界

  1. $ cd /opt/terraria
  2. $ cp -p serverconfig.txt serverconfig.txt_yyyymmdd
  3. $ vi serverconfig.txt

将三个配置注释掉

  1. autocreate=2
  2. worldname=世界的名字
  3. difficulty=1

改为

  1. # autocreate=2
  2. # worldname=Terraria
  3. # difficulty=1

再次运行一次看看是否成功。

优化体验

每次启动都要输入这么多文件夹路径很麻烦,所以我们可以制作一个自动启动的脚本:

  1. $ vi terra_script.sh

内容如下:

  1. #!/bin/bash
  2. USERNAME='root'
  3. SCNAME='terraria'
  4. TERA_VER='1353'
  5. BIN_PATH="/opt/terraria/bin/$TERA_VER/Linux/"
  6. SERVICE='TerrariaServer.bin.x86_64'
  7. CONFIG='/opt/terraria/serverconfig.txt'
  8. ME=`whoami`
  9. if [ $ME != $USERNAME ] ; then
  10. echo "Please run the $USERNAME user."
  11. exit
  12. fi
  13. start() {
  14. if pgrep -u $USERNAME -f $SERVICE > /opt/terraria/logs/start.txt ; then
  15. echo "$SERVICE is already running!"
  16. exit
  17. fi
  18. echo "Starting $SERVICE..."
  19. screen -AmdS $SCNAME $BIN_PATH$SERVICE -config $CONFIG
  20. exit
  21. }
  22. stop() {
  23. if pgrep -u $USERNAME -f $SERVICE > /opt/terraria/logs/stop.txt ; then
  24. echo "Stopping $SERVICE "
  25. else
  26. echo "$SERVICE is not running!"
  27. exit
  28. fi
  29. screen -p 0 -S $SCNAME -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. "\015'
  30. sleep 10
  31. screen -p 0 -S $SCNAME -X eval 'stuff "exit"\015'
  32. exit
  33. }
  34. save() {
  35. echo 'World data saving...'
  36. screen -p 0 -S $SCNAME -X eval 'stuff "say World saveing..."\015'
  37. screen -p 0 -S $SCNAME -X eval 'stuff "save"\015'
  38. exit
  39. }
  40. status() {
  41. if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then
  42. echo "$SERVICE is already running!"
  43. exit
  44. else
  45. echo "$SERVICE is not running!"
  46. exit
  47. fi
  48. }
  49. case "$1" in
  50. start)
  51. start
  52. ;;
  53. stop)
  54. stop
  55. ;;
  56. save)
  57. save
  58. ;;
  59. status)
  60. status
  61. ;;
  62. *)
  63. echo $"Usage: $0 {start|stop|status|save}"
  64. esac

这样就分别有了「启动」「关闭」「保存」「重启」了。

分别对应:

  1. 服务器启动
  2. /opt/terraria/terra_script.sh start
  3. 服务器停止
  4. /opt/terraria/terra_script.sh stop
  5. 服务器重启
  6. /opt/terraria/terra_script.sh restart
  7. 确认状态
  8. /opt/terraria/terra_script.sh status
  9. 保存世界存档
  10. /opt/terraria/terra_script.sh save

给文件提升权限

  1. $ chmod 744 terra_script.sh

确认下启动

  1. $ sh -x ./terra_script.sh start

通过「screen -ls」确认下是否开启了窗口

  1. $ screen -ls
  2. There is a screen on:
  3. 883.terraria (Detached)
  4. 1 Socket in /var/run/screen/S-terraria.

确认下关闭

  1. $ sh -x ./terra_script.sh stop

确认关闭是否成功

  1. $ screen -ls
  2. 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. vi几个常用的命令

    1.同时打开多个文件:vi 1.txt 2.txt 3.txt 在多个文件中来回切换,命令行模式输入“:next"表示下一个,输入":previous"代表进入上一个,” ...

  2. rsync+nfs+sersync实战案例

    回顾: 1.rsync 统一备份各个服务器的配置文件或重要文件 系统配置文件 日志文件 系统日志文件 messages.secure.cron 服务日志文件 access_log.access.log ...

  3. binary-heap(二叉堆)原理及C++代码实现

    二叉堆可以看做一个近似的完全二叉树,所以一般用数组来组织. 二叉堆可以分为两种形式:最大堆和最小堆.最大堆顾名思义,它的每个结点的值不能超过其父结点的值,因此堆中最大元素存放在根结点中.最小堆的组织方 ...

  4. 54)PHP,访问修饰符

    类外就是你再实例化成对象的时候  用你类里面的变量 继承的类内,  就是子类里面,但是实例化对象时,不能用 本类内,      只在本类的定义时用,子类不能用.

  5. vue中v-on支持的事件总结

    资源事件 事件名称 何时触发 error 资源加载失败时. abort 正在加载资源已经被中止时. load 资源及其相关资源已完成加载. beforeunload window,document 及 ...

  6. kubectl 命令详解

    使用kubectl来管理Kubernetes集群. kubectl命令的选项: 选项 作用 --alsologtostderr[=false] 同时输出日志到标准错误控制台和文件 --api-vers ...

  7. smooth curve|population|sample

    Distribution Shapes 由直方图到 smooth curve   1.this distribution of heights is bell shaped(or mound shap ...

  8. LinkedList源码剖析

    LinkedList简介 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈.队列和双端队列来使用. LinkedList同样是非线程安全 ...

  9. android形状属性、锁屏密码、动态模糊、kotlin项目、抖音动画、记账app、视频播放器等源码

    Android精选源码 直观了解Android的"形状"属性如何影响Drawable的外观. 一个灵活的视频播放器, 可替换播放器内核. android锁屏输入密码功能源码 背景动 ...

  10. UFT参数化

    1.Resources-Record and Run Settings 2.打开程序进行录制操作 3.对Fly from和Fly to进行参数化 4.选中点击 5.输入名称,点击OK 6.在Data加 ...