指南:建立泰拉瑞亚服务器
此页面将引导你在局域网或互联网上调试并运行自己的泰拉瑞亚多人服务器。
对于 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 按钮关闭控制台窗口。