指南:建立泰拉瑞亞伺服器
此頁面將引導你在局域網或互聯網上調試並運行自己的泰拉瑞亞多人伺服器。
對於 1.3.0.1 及後續版本,玩家還可以從 Steam 上建立多人遊戲。更多信息詳見指南:建立 Steam 多人遊戲。
為便於參考,本指南按作業系統細分:Windows 和 Linux/MacOS
準備網絡
在設置伺服器之前,如果伺服器是在家庭網絡里,需要考慮可能要改變網絡。
- 為運行伺服器的計算機分配靜態 IP 地址。這不太可能,但是如果你不這樣做,那麼路由器可能會在使用伺服器時重新分配計算機的 IP 地址,這會干擾你與它的連接。想知道如何這樣操作路由器,請參見你的路由器手冊,或搜索「如何在<你的路由器型號>上設置靜態 IP」。
- 如果某人要從本地網絡以外的地方(又名「互聯網上」)連接伺服器,就需要轉發伺服器的端口。另外,確保在路由器上為伺服器計算機分配了靜態 IP。請參閱下文,了解如何轉發端口。
打開可通過公共 IP 訪問的端口:
- 要看到自己的對外 IP 的話,一個簡單的網站就可以顯示你的公共 IP 地址,不會顯示任何不必要的細節,例如 whatsmyip.com 或 ipify(ipify.org/ 功能更多)。
- 需要轉發泰拉瑞亞的端口(默認是 7777 端口,注意這是與《方舟:生存進化(ARK: Survival Evolved)》、《血腥劍斗(Mordhau)》、《正當防衛2(Just Cause 2)》的多人遊戲模組以及《俠盜獵車手:聖安地列斯(San Andreas)》的多人遊戲相同的端口)。(轉發端口指南)。
Windows
局域網(LAN):
- 從開始按鈕里,前往 Program Files>Accessories>Command Prompt。會顯示一個名為命令提示符的新窗口。
- 鍵入「ipconfig」去掉引號,按下回車。會顯示類似這裏截圖的某些信息。
- 找到 'Ethernet Adapter Local Area Connection' 或 'Wireless LAN adapter Wireless Network Connection 2',找到 'IPv4 Address',這就是本地網絡上你電腦的 IP 地址。這個窗口還會顯示其他信息,包括默認網關。需要默認網關來在火狐或谷歌瀏覽器里設置路由器。
建立伺服器
首先,決定是想要開始「開服並開始遊戲」多人遊戲,還是使用已有的伺服器遊戲。見多人模式以了解其中的差異。
建立「開服並開始遊戲」伺服器
這是多人遊戲最簡單的方法,在家庭局域網下或簡短的在線合作遊戲下效果很好。啟動泰拉瑞亞,在主菜單里,選擇「多人遊戲」,然後是「開服並開始遊戲」。選擇要玩的世界(或者新建一個),然後輸入密碼(或留空,如果不想要密碼)。
首次啟動專用伺服器
要首次啟動伺服器,我們不用擔心配置文件,因為泰拉瑞亞伺服器文件有個很好的多步嚮導,可以讓它快速運行。
專用伺服器的文件與泰拉瑞亞文件位於同一個文件夾中。
- GOG Galaxy:C:\GOG Galaxy\Games\Terraria
- Steam:C:\Program Files (x86)\Steam\steamapps\common\Terraria
也可以直接從 terraria.org 下載專用伺服器文件,點擊頁面底部的「專用伺服器」連結即可。
首先,嘗試不用設置文件來設置伺服器。這樣做要搜索泰拉瑞亞下載的那個文件夾,找到 TerrariaServer.exe 並運行。會打開一個窗口,顯示伺服器控件界面。可以在此處輸入命令或查看信息。運行時,需要選擇一個世界,列出現存在電腦里的所有世界。窗口還會給出創造或刪除世界的選項。創造新世界時,可以按照窗口中的說明更改世界生成時的設置。
註: 默認下,泰拉瑞亞會將所有世界保存在「C:\Users\UserName\Documents\MyGames\Terraria\Worlds」里。
使用配置文件建立專用伺服器
要使用預先配置的文件運行伺服器,要搜索泰拉瑞亞下載的那個文件夾,然後運行「TerrariaServer.exe -config <serverconfigfile>」,而<serverconfigfile>就是配置文件。
- 使用 cmd 進入泰拉瑞亞文件夾,鍵入「TerrariaServer.exe -config <serverconfigfile>」,不帶引號,然後↵ Enter。
- 做個「TerrariaServer.exe」的快捷方式,右鍵點擊,點擊「屬性」,編輯頁面「目標:」(本來是:「<...>\TerrariaServer.exe」),在"TerrariaServer.exe"之後的最後鍵入:「 -config <serverconfigfile>」,不帶引號(重要,在「.exe」和「-config」之間要留個空格)。看上去就會是這樣:「『<...>\TerrariaServer.exe’ -config <serverconfigurationfile>」然後應用它。從現在開始,此快捷方式將使用給定的配置文件啟動伺服器。
- 如果想的話,批處理文件也可以,功能上與快捷方式相同。首先,要新建文本文檔(.txt),然後在任何類型的簡單編輯器中編輯它(Office 不行,要 Notepad 那種的),然後鍵入這樣的指令:
- @echo off
- cls
- TerrariaServer.exe -config <serverconfigurationfile>
然後保存文本文檔(.txt)為批處理文件(.bat)。要把這個批處理文件放進泰拉瑞亞文件夾里才能生效,配置文件也要在同一文件夾里。另外,如果輸入了「TerrariaServer.exe」和<serverconfigurationfile>的完整路徑,那就可以在任何地方作為快捷方式生效。完整路徑範例:
「C:\Games\Terraria\TerrariaServer.exe -config D:\TerrariaCon\example.txt」
可以從一台計算機運行多個伺服器!但要做到這一點,有三件重要的事情:
- 確保每個伺服器使用不同的配置文件!
- 確保每個伺服器使用不同的世界!
- 確保每個伺服器使用不同的端口號!
註:推薦給每個伺服器做個分開的快捷方式/批處理文件。
配置文件和遊戲數據保存的位置
配置文件將位於泰拉瑞亞所在的目錄中。
- Steam:C:\Program Files (x86)\Steam\steamapps\common\Terraria
- GOG Galaxy:C:\GOG Galaxy\Games\Terraria
- 世界位置:C:\Users\Defaults\My Documents\My Games\Terraria\Worlds\
Linux / macOS
幾乎所有 Linux 和 MacOS 上的設定都在終端完成了。如果對命令行缺乏經驗,你可能會被嚇到或擔心會破壞某些東西。只需慢慢來,完全按照這裏寫的命令輸入。我們鼓勵你研究每個命令,以便準確了解它的作用(例如 man ip
或chmod --help
)。如果需要學習基本終端命令的幫助,可以考慮閱讀這個指南:HowToGeek(Geek 教程)。
局域網(LAN):
- 在 GNU/Linux、FreeBSD 和 MacOS中,終端的
ip addr
可以看到本地 IP 地址。會顯示類似這裏的截圖。
找到 BROADCAST
和 state UP
。在這個範例中,你的本地 IP 地址是從 192.168.1.44
到 inet 192.168.1.44/24
。
或者,如果系統沒有安裝 ip,可以以 root 身份運行 ifconfig 以獲得類似的輸出。
建立伺服器
首先,決定是想要開始「開服並開始遊戲」多人遊戲,還是使用已有的伺服器遊戲。見多人模式以了解其中的差異。
建立「開服並開始遊戲」伺服器
這是多人遊戲最簡單的方法,在家庭局域網下或簡短的在線合作遊戲下效果很好。啟動泰拉瑞亞,在主菜單里,選擇「多人遊戲」,然後是「開服並開始遊戲」。選擇要玩的世界(或者新建一個),然後輸入密碼(或留空,如果不想要密碼)。
首次啟動專用伺服器
要首次啟動伺服器,我們不用擔心配置文件,因為泰拉瑞亞伺服器文件有個很好的多步嚮導,可以讓它快速運行。
在 Linux 和 MacOS中,二進制文件在 $STEAM_ROOTDIR/steam/steamapps/common/Terraria 里。也可以直接從 terraria.org 下載專用伺服器文件,點擊頁面底部的「專用伺服器」連結即可。
運行 TerrariaServer 腳本將使系統啟動正確版本的伺服器。使用這個命令確保腳本和程序文件具有執行權限 chmod u+x TerrariaServer*
。如果沒有看到此腳本,請仔細檢查是否使用了最新版本的伺服器。
由於終端會話結束後伺服器將停止,可以使用 tmux
或 screen
之類的程序 ,在註銷時也能保持會話運行。
與其他遊戲伺服器一樣,通常建議創建一個專用於運行遊戲伺服器的用戶(帶有主目錄)。這可確保伺服器無權更改它們不應該更改的文件。
若 $TERM 沒有被設置為 xterm,那麼伺服器將無法啟動。在這種情況下,伺服器會生成一份名為「client-crashlog.txt」的文件,其中將會包含錯誤「System.Exception: Magic number is wrong: 542」。此時,只需運行命令「export TERM=xterm」,並重啟伺服器即可。
註:默認下,Linux 中泰拉瑞亞會將所有世界保存在「~/.local/share/Terraria」中,而 MacOS 是「~/Library/Application Support/Terraria/Worlds」。
使用配置文件建立專用伺服器
要使用預先配置的文件運行伺服器,要搜索泰拉瑞亞下載的那個文件夾,然後運行「TerrariaServer.exe -config <serverconfigfile>」,而 <serverconfigfile> 就是配置文件。按照以下步驟創建一個 shell 腳本,以使用配置文件自動運行伺服器。
- 使用文本編輯器,在泰拉瑞亞伺服器的同一個目錄下創建一個叫做 startserver.sh 的文件
- 在文檔里複製以下文本:
- #!/bin/sh
- ./TerrariaServer -config <serverconfigfile>
- 保存文檔,通過運行
chmod +x startserver.sh
確保它具有執行權限,然後運行。
還可以輸入「TerrariaServer.exe」和 <serverconfigurationfile> 的完整路徑,那就可以在任何地方作為快捷方式生效。完整路徑範例:
「~/TerrariaServer/TerrariaServer -config ~/.config/TerrariaServer/serverconfig.txt」
正如這個範例,配置文檔可以不放在泰拉瑞亞文件夾內。
可以從一台計算機運行多個伺服器!但要做到這一點,有三件重要的事情:
- 確保每個伺服器使用不同的配置文件!
- 確保每個伺服器使用不同的世界!
- 確保每個伺服器使用不同的端口號!
註:推薦給每個伺服器做個分開的 shell 腳本。
保存本地遊戲數據
macOS
~/Library/Application Support/Terraria/Worlds
Linux
~/.local/share/Terraria/Worlds
註:如果在安裝期間更改了默認安裝目錄,那麼會生成一個名為「~」的文件夾,用於保存存檔數據,這與用戶的主目錄並不相同。
製作配置文件
在任何作業系統上,配置文件選項和語法都是相同的。 下面是一個配置文件的範例,這個文件位於泰拉瑞亞文件夾里。如果用 Notepad 或 Notepad++ 之類的文本編輯器打開,看上去會是這樣。 如果看不到,可以把這段文本複製進一個新的文檔。
#这是一个 TerrariaServer.exe 配置文档的范例 #use the command 'TerrariaServer.exe -config serverconfig.txt' to use this configuration or run start-server.bat
- (使用命令 'TerrariaServer.exe -config serverconfig.txt' 可以使用這個配置,或運行 run start-server.bat)
#please report crashes by emailing crashlog.txt to [email protected]
- (請發送電子郵件到 [email protected] 報告 crashlog.txt 的崩潰)
#the following is a list of available command line parameters:
- (以下是可用命令行參數的列表:)
#-config <config file> 指定要使用的配置文件。 #-port <port number> 指定要侦听的端口。 #-players <number> / -maxplayers <number> 设置最大玩家数量。 #-pass <password> / -password <password> 设置服务器密码。 #-world <world file> 载入世界并自动启动服务器。 #-autocreate <#> 如果在 -world 指定的路径中找不到任何世界,则创建一个世界。世界大小由下式指定:1(小型)、2(中型)和 3(大型)。 #-banlist <path> 指定 banlist(封禁列表)的位置。默认在工作目录中的“banlist.txt”。 #-worldname <world name> 使用 -autocreate 时,设定世界名称。 #-secure 为服务器添加额外的作弊保护。 #-noupnp 禁用自动端口转发 #-steam 启用对 Steam 的支持 #-lobby <friends> or <private> 如果启用了对 Steam 的支持,那么允许朋友加入服务器抑或将其设置为私人 #-ip <ip address> 设置服务器要侦听的 IP 地址 #-forcepriority <priority> 设置此任务的进程优先级。如果使用此选项,则将忽略下面的“优先级”设置。 #-disableannouncementbox 禁用广播盒收到信号时发出的广播。 #-announcementboxrange <number> 设置广播盒文字讯息的作用范围,单位为像素。-1 代表在整个服务器内进行广播。 #-seed <seed> 使用 -autocreate 时,设定世界种子。
#移除命令前的 # 以启用它们。
#载入世界并自动启动服务器。 #world=C:\Users\YOUR_USERNAME_HERE\My Documents\My Games\Terraria\Worlds\world1.wld
#如果找不到任何世界,则创建一个新世界。世界大小由下式指定:1(小型)、2(中型)和 3(大型)。 #autocreate=1
#使用 -autocreate 时,设定世界种子。 #seed=AwesomeSeed
#使用 -autocreate 时,设定世界名称。 #worldname=Terraria
#使用 -autocreate 时,设定世界难度:0(经典),1(专家),2(大师),3(旅行) #difficulty=0
#设置服务器上允许的最大玩家数。数字须在 1 到 255 之间 #maxplayers=8
#设置端口 #port=7777
#设置服务器密码 #password=p@55w0rd
#设置白天讯息 #motd=请不要砍掉紫色的树!
#设置世界文件储存的文件夹 #worldpath=C:\Users\Defaults\My Documents\My Games\Terraria\Worlds\
#指定 banlist(封禁列表)的位置。默认在工作目录中的“banlist.txt”。 #banlist=banlist.txt
#加额外的作弊保护。 #secure=1
#使用语言对应的编码设置服务器语言。 #English = en-US, German = de-DE, Italian = it-IT, French = fr-FR, Spanish = es-ES, Russian = ru-RU, Chinese = zh-Hans, Portuguese = pt-BR, Polish = pl-PL, #language=en-US
#使用 uPNP 自动转发端口 #upnp=1
#减少敌怪的跳过,但增加带宽使用。数字越低,跳过的次数就越少,但发送的数据越多。0 代表关闭。 #npcstream=60
#默认系统优先级。0:实时;1:高;2:高于通常;3:普通;4:低于通常;5:静默 priority=1
#每项旅行模式能力的许可设置:0:对所有人禁用;1:只能由服主进行更改;2:可被所有人更改 #journeypermission_time_setfrozen=2 #journeypermission_time_setdawn=2 #journeypermission_time_setnoon=2 #journeypermission_time_setdusk=2 #journeypermission_time_setmidnight=2 #journeypermission_godmode=2 #journeypermission_wind_setstrength=2 #journeypermission_rain_setstrength=2 #journeypermission_time_setspeed=2 #journeypermission_rain_setfrozen=2 #journeypermission_wind_setfrozen=2 #journeypermission_increaseplacementrange=2 #journeypermission_setdifficulty=2 #journeypermission_biomespread_setfrozen=2 #journeypermission_setspawnrate=2
:可以看到,每一行都以「#」符號開頭。這個符號會移除這一行並阻止伺服器使用它。這對於在文件中進行注釋很有用,如下所示:
#设置白天讯息
- 因為此語句是對下面命令的說明。這對于禁用命令來說也很有用。
#motd=请不要砍掉紫色的树!
- 這樣,伺服器就不會有「白天訊息」,因為它有 #,被移除了。所以,如果你想使用命令,你只需要刪除行開頭的「#」。可以根據自己的喜好編輯此文件。每個命令都在文件中有解釋。如果已準備就緒,則只需保存文件並將其用作配置文件即可。
- 強烈建議保留原始配置文件,製作一份副本並編輯副本,或者打開源文件然後換一個名字「另存為……」另一個文件。
客戶端和伺服器生成的配置和世界文件的默認位置因平台而異。
連接到伺服器
在泰拉瑞亞遊戲中,進入多人遊戲->通過 IP 加入->選擇角色->鍵入伺服器的 IP。可以是伺服器使用的內部 IP 或外部 IP。
從開服電腦上
可以使用 localhost 作為 IP,或使用本地主機 IP(127.0.0.1)。
從局域網上
對於本地網絡上的其他電腦(直接連接到路由器上),在'IPv4'里鍵入運行伺服器的電腦地址(見局域網)。連接到網絡的每台設備都有自己的路由器分配的 IP 地址。如果路由器使用動態 IP 尋址,則 IPv4 地址可以隨時更改每個設備(大多數路由器默認使用動態 IP)。動態意味着 IP 地址可以改變。
從互聯網上
對於「網上」連接的朋友,需要鍵入你的外部 IP(也就是路由器 IP),但是在路由器上設置上述端口轉發之前,這是無效的(見轉發端口)。
在 FreeBSD 上
去監獄(jail,即 FreeBSD 上的軟件系統),創建一個泰拉瑞亞用戶,安裝 screen、mono 和 sqlite3。運行此命令一次以正確初始化所有內容:(命令詳見如何在Ubuntu上運行專用的泰拉瑞亞伺服器/cir0qna)
mono --server --gc=sgen -O=all TerrariaServer.exe
創建一個世界再退出(^C)
生成世界後,添加以下代碼:http://ix.io/iHD 到 /usr/local/etc/rc.d/terraria 並根據自己的喜好進行編輯。
編輯監獄的 rc.conf,terraria_enable="YES",然後重啟監獄。
伺服器列表
一旦網絡伺服器正常運行,請考慮將其發佈到一個公共伺服器列表,以便網絡用戶可以找到它並加入:
- 官方泰拉瑞亞論壇上的伺服器論壇
- https://www.tserverweb.com
- https://topg.org/terraria-servers/
- http://terraria-servers.com
- https://terraria.21yunbox.com
故障排除
有些原因會使這個方法失效。可以將許多問題分成這些主要類別。
「伺服器無法啟動」
這是很常見的,原因是拼寫錯誤。要再次檢查所有內容(特別是如果使用的是配置文件),並確保所有內容都輸入正確。如果仍然無法正常工作,可以瀏覽論壇,看看是否有其他人遇到了同樣的問題。如果依然沒有解決,建議嘗試重新安裝遊戲。
其他人無法連接至伺服器
這通常是與網絡相關的問題。
- 確保連接到了正確的 IP 地址。這是聯網計算機的伺服器計算機的 IP 地址(IPv4),或者是網絡玩家的路由器的全局 IP 地址。有關如何查找這些內容的信息,請參閱第一部分。
- 確保防火牆沒有封鎖「TerrariaServer.exe」或伺服器端口(默認是「7777」)。
- 確保其他人進入的是正確的端口(在不是默認的「7777」的情況下更加重要)。
- 如果在使用路由器,則必須確保它打開了伺服器端口。有關如何執行此操作的信息,請參閱第一部分。
- 如果你的 IP 地址是動態(不是靜態或保留),它有可能隨時間而變化,要再次檢查一遍 IP 地址。另外,如果你使用動態 DNS 來解決此問題,就要告訴其他玩家始終要輸入你的域名加入,並且不要使用遊戲提供的已保存的連接列表(遊戲只保存 IP 地址,而不是域名,因此如果 IP 改了,它是不會讀到的)。
關閉伺服器後世界沒有保存/箱子內的物品消失
泰拉瑞亞伺服器只會在每天黎明自動存儲世界(每隔 24 分鐘)。
如果關閉伺服器而未通過控制台發出保存並退出命令(或者如果你是開服並開始遊戲),世界可能沒有存儲最後幾分鐘的變化。 在箱子之間移動裝備並立即關閉伺服器,而不明確指定保存並退出命令,可能導致這些物品消失。
確保這個問題消失:始終使用專用伺服器,並記住輸入「save」/「exit」命令,而不是簡單地通過紅色 X 按鈕關閉控制台窗口。