最近玩了泰拉瑞亞,一個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這種支持文件傳輸的工具鏈接服務器,能夠直接把遊戲存檔拉出來保存到你本身電腦上,還能夠上傳你本身單機玩的存檔。
原文出處:https://www.cnblogs.com/LexMoon/p/taila.html