泰拉瑞亞Linux主機打造指南

image.png

最近玩了泰拉瑞亞,一個2D版的個人世界,但苦於steam的聯機太過不靠譜,常常會出現和朋友之間聯機失敗的問題,因此我把服務器放到了部署我博客的服務器,這樣就能夠經過IP直接讓好友加入遊戲了!html

首先是購買服務器,由於咱們須要一個你們都能訪問的公網IP,因此...bash

Vultr最近服務器在作活動,衝10美圓送50美圓,並且服務器你除了用來放泰拉瑞亞的服務,還能夠給本身搭建Vxx。服務器

新用戶註冊纔有的福利,隨便搞一個郵箱註冊就能夠了。tcp

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

前置準備

首先要解決的一個問題是服務器內存問題,爲了支持數百人加入,須要較高的內存配置,可是服務器內存太貴了,啓用swap卻是不錯的選擇。優化

確認下SWAP設置了多少spa

free -m

若是足夠1GB則跳過這一步直接開始搭建遊戲!rest

刪除SWAP分區code

swapoff -a

新增SWAP分區server

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 是沒有發現世界自動生成世界的大小 一、二、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這種支持文件傳輸的工具鏈接服務器,能夠直接把遊戲存檔拉出來保存到你本身電腦上,還能夠上傳你本身單機玩的存檔。

image.png

原文出處:https://www.cnblogs.com/LexMoon/p/taila.html

相關文章
相關標籤/搜索