ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Terraria开服指南:原版服与tModLoader模组服配置、联机与备份

Terraria开服指南:原版服与tModLoader模组服配置、联机与备份 几个朋友凑在一起想打 Terraria第一件要定下来的事往往不是谁当坦克、谁刷装备而是谁来开服、开哪种服。原版 Terraria 和装了 tModLoader 的模组服看起来只差一个启动器实际从下载的文件、生成的世界后缀到客户端要不要装同样的模组全是两套逻辑。这篇就把我自己开过的原版服和 tModLoader 服完整走一遍服务端包怎么下载、serverconfig.txt里每一项是什么意思、控制台敲什么命令、端口怎么放、朋友怎么连进来以及挂了一两个月之后备份和排错的经验。刚入坑、只想周末和朋友联机的新手能照着抄已经开过服但总在连不上模组不匹配上翻车的也能在对应章节里找到原因。1. 开服前先分清原版服和 tModLoader 服不是同一件事很多人第一次开服的顺序是反的——先急着找开服包下完才发现客户端版本对不上、朋友装了模组进不来。正确的顺序是先决定玩原版还是玩模组再决定用哪套服务端最后才谈网络。因为这两种服的整个生态是分开的原版客户端能连原版服装了 tModLoader 的客户端能连 tModLoader 服而两边混着来基本连不上连上了也会出现物品消失、地图错位这类更麻烦的问题。1.1 原版服与模组服的核心差别原版 Terraria 的多人玩法由官方提供的专用服务端承担服务端本身不带 UI只有个控制台窗口所有配置都靠文本文件。tModLoader 则是一个基于 Terraria 的模组加载器它自己是一套客户端同时提供同名的服务端程序模组服的世界里会有新物品、新 NPC、新 Boss这些东西客户端必须有对应的模组文件才能显示否则一进世界就是一堆问号方块和报错。对比项原版服tModLoader 服服务端来源官网下载的专用服务端压缩包tModLoader 客户端目录或官方单独发布的服务器包世界文件后缀.wld.twld玩家数据后缀.plr.tplr客户端要求任意同大版本的原版客户端必须装 tModLoader且模组列表要对齐配置复杂度低一个文本文件搞定中高多一层模组版本与依赖典型用途稳定长期挂机、轻量联机玩内容包、灾厄之类的大型模组1.2.wld和.twld不能互相通用这是我见过最多的新手事故把模组服玩出来的世界文件丢进原版服务端或者反过来结果服务端报错读不出来有的甚至直接把文件里的数据截断。记住后缀就行——原版是.wld模组版是.twld同时旁边还会有一个.wld.bak或.twld.bak的自动备份。服务端每次正常保存时会把上一次的世界写成.bak这个.bak在存档崩了的时候就是救命稻草所以备份的时候别只复制主文件.bak一起带走。另外玩家数据也一样原版是.plr模组服是.tplr。换服的时候把玩家的.plr直接挪到模组服人物的模组物品栏会不匹配轻则物品丢失重则人物读不出来。跨模式搬人物最稳的办法是让玩家把装备存进箱子人物重新建。1.3 先想清楚挂在哪、能带几个人家用机器开服最大的错觉是我这台电脑很强。Terraria 服务端本身对 CPU 和显卡要求极低真正的瓶颈是两条上行带宽和内存。原版服一个玩家占用很小家用宽带上行三四十兆带七八个人是够的但模组服尤其是内容量大的整合包服务端内存吃到 4 到 8 GB 很常见世界越大、模组越多、掉落的物品堆在地上越多内存就越紧张。还有一个很容易忽略的点Windows 的电源计划。默认的平衡或节能会让机器在没人操作时进入睡眠人一睡服务端进程就被挂起朋友那边直接掉线。开服之前把电源计划改成从不睡眠、关闭硬盘休眠这一步不花一分钟能省掉一整晚的排查。如果家里网络不方便长期开着用一台云主机也完全可行Linux 环境跑服务端反而更稳后面的章节里我会把 Linux 上的做法一起写上。选配置的时候别只看 CPU 核心数模组服优先看单核性能和内存容量Terraria 服务端本质上是单线程跑主循环的。2. 原版 Terraria 服务端从下载到第一条 MOTD原版服是最好上手的全程不用碰命令行以外的任何东西。它没有图形界面所有操作都在一个黑色窗口里敲命令第一次看会觉得简陋但用习惯了会发现这种服务端特别省资源挂着几个月都不用管。2.1 服务端程序和游戏本体分开放服务端压缩包建议解压到一个独立目录比如D:\TerrariaServer不要塞进 Steam 的游戏安装目录。原因有两个一是 Steam 校验文件或更新客户端的时候可能会碰到你放在里面的服务端文件二是独立目录方便整体打包迁移换机器的时候直接把文件夹拷走就行。解压后你会看到类似这些内容Windows 下是TerrariaServer.exeLinux 下是TerrariaServer.bin.x86_64还有一个serverconfig.txt。Linux 上记得先给它加执行权限不然双击或者./运行会报权限不够chmod x TerrariaServer.bin.x86_64另外注意服务端和客户端的大版本号要一致。Terraria 每个大版本更新都会调整网络协议1.4 的服务端配 1.3 的客户端是连不上的。服务端包里一般会带版本说明下载时对照一下客户端版本别下到旧包。2.2serverconfig.txt逐项拆开看这个文件是原版服的核心绝大多数问题都能在这里解决。它是一个纯文本文件#开头的是注释。用记事本打开把关键项改一遍再启动比启动之后在控制台里一项项设要省事得多。配置项作用怎么填更省心world直接指定要加载的世界文件路径只想挂已有存档时填这里填了就不会问你新建世界worldname自动生成世界时用的名字建议纯英文或拼音中文名在部分版本上会出乱码worldpath世界文件存放目录单独指到一个盘方便整目录备份autocreate没有指定世界时自动生成的大小1 小、2 中、3 大第一次开服建议先 1 试水seed世界种子想和朋友玩同一张图就填留空则随机difficulty世界难度0 普通、1 专家、2 大师、3 旅行按团队水平选maxplayers最大玩家数默认 8家用机器别贪多超出上行带宽会集体卡顿port监听端口默认 7777改成别的要同步通知朋友password进服密码只要不是纯局域网一定填一个motd进服时显示的欢迎语可以写规则和联系方式替代公告板secure服务端防护相关开关面向不特定人群的公开服建议开启upnp自动端口映射路由器支持 UPnP 时填 1能省掉手动映射npcstreamNPC 同步的刷新范围0 到 60网络吃紧时调到 30 以下priority服务端进程优先级保持默认即可拉到最高反而可能拖慢整机一个常见的取舍是npcstream。它决定了服务端把多远处的 NPC 和怪物同步给客户端值高画面流畅但吃带宽值低省带宽但远处的敌人会瞬移出现。家里上行紧张、朋友又分散在不同城市的时候把它调到 30 左右观感下降不大掉线率却明显下降。还有一点必须说明不同版本的serverconfig.txt支持的键会有差别比如某些版本多出世界回滚存档保留数量之类的选项。最好的习惯是打开官方给的那份文件先把它自带的注释读一遍上面写的就是这个版本真正认的键。网上抄来的配置如果报unknown key别慌删掉那一行就行。2.3 第一次生成世界控制台会问你什么如果serverconfig.txt里没有写world服务端启动后会进入交互式提问流程大概是这样先让你选世界大小1 小 2 中 3 大再选世界难度然后询问是新建世界还是从列表里挑一个已有的新建的话给它起个名字。这里有两个细节值得注意。第一生成大世界要等一会儿控制台会停在一行不动那不是卡死了是在跑地形生成小世界几十秒大世界一两分钟都正常中途千万别关窗口关掉会留下一个残缺的世界文件。第二世界名字带上世界大小和难度比如SmallClassic01以后备份目录里堆了十几个文件的时候你会感谢当初这个命名习惯。世界跑起来之后控制台会打印出端口、最大玩家数、MOTD然后显示Listening on port 7777之类的信息这时候服务端就在等了。想验证的话在同一台机器上开客户端多人模式里选通过 IP 连接输127.0.0.1加端口能进就说明服务端本身没问题剩下的就是网络的事。2.4 控制台命令与关服的正确姿势原版服务端的控制台命令不多记住常用的那几个就够日常用了。敲help能看到完整列表常用的是下面这些playing或list看当前在线的玩家save立即保存世界say 内容向所有玩家广播一条消息kick 玩家名踢人ban 玩家名和ban list封禁和查看封禁列表password 新密码中途改密码motd 新欢迎语中途改 MOTDmaxplayers 数字中途改人数上限time、dawn、noon、dusk、midnight查时间、切时间settle强制液体沉降exit和exit-nosave保存退出、不保存退出直接点窗口右上角的叉是关服里最危险的操作。那样服务端没有走保存流程世界文件可能停在写入一半的状态运气不好整个存档读不出来。正确顺序永远是先在控制台敲一次save确认提示保存完成再敲exit。多花五秒钟省掉一次回档。settle这个命令值得单独说一句。世界刚生成或者被人挖开大片液体之后水会一直流动服务端要不停计算液体扩散这是原版服卡顿最常见的隐形原因。找个没人的时间敲一次settle让它把液体一次性算完之后 TPS 会稳很多。3. tModLoader 服务端模组服真正麻烦的地方模组服的流程和原版相似但多出来一层模组而这一层才是绝大多数事故的来源。原版服只要能连上就能玩模组服即使连上了也可能因为某个模组的版本不一致出现 Boss 打不死、合成表对不上、玩家一靠近某片区域就掉线这类诡异现象。3.1 三处版本必须对齐开模组服之前先确认三个版本号一致客户端 tModLoader 版本、服务端 tModLoader 版本、以及所有模组本身的版本。tModLoader 的服务端和客户端必须是同一版本这一点和原版一样严格模组更细同一个模组的 1.2.0 和 1.2.1 在有网络交互的场景下也可能不兼容。实操上最省事的办法是在客户端里把模组全部装好、确认能单人进图不出问题然后再把整个模组环境复制到服务端而不是两边分别下载。这样版本天然一致省掉一轮对版本号的折磨。顺带提一下运行环境比较新的 tModLoader 需要机器上装有对应的 .NET 运行时缺了的话启动脚本会闪一下就退或者提示找不到框架。这类报错很直白按提示装对应版本的运行时就行不用去猜。3.2 Mods 目录、enabled.json和客户端模组的划分tModLoader 的模组文件是一个个.tmod文件放在 Mods 目录里同目录下还有一个enabled.json记录着哪些模组处于启用状态。这两样东西要一起搬只复制.tmod不同步enabled.json服务端和客户端的启用列表就对不上。模组要不要装到服务端可以按这个逻辑判断模组类型例子方向服务端是否需要添加物品、NPC、Boss、地形大型内容包必须装且版本一致修改游戏机制、数值平衡类调整必须装否则判定不一致纯客户端界面类信息显示、配方查询一般只需客户端装工具类、快捷操作快捷键增强通常客户端装即可这个划分不是拍脑袋定的原理在于影响世界数据的模组服务端必须知道只影响本机显示和操作的模组服务端不知道也没关系。但要注意少数声称客户端可用的模组实际会改到玩家数据这类模组装在客户端而服务端没装联机时就会出问题。遇到单人正常、联机异常的怪现象第一个排查方向就是模组列表两边不一致。tModLoader 支持客户端从服务端自动下载缺失的模组听起来很方便但实际体验取决于服务端的上行带宽几个模组还好几十上百兆的整合包让每个人挨个下载朋友等到心态爆炸。稳妥做法是把 Mods 目录和enabled.json一起打包发给大家解压到各自的 Mods 目录进服前先确认模组列表和服务端一模一样。3.3 启动脚本、内存参数与日志怎么读新版 tModLoader 的服务端一般是通过启动脚本拉起Windows 下是start-tModLoaderServer.batLinux 下是start-tModLoaderServer.sh。这些脚本本质上就是设好环境变量再调用服务端主程序看懂它有助于排查问题——比如某些脚本里会预留内存相关的参数位置整合包比较大的时候把内存上限提上去能明显减少卡顿和随机崩溃。启动过程会打印大量日志别被吓到重点看几类信息加载了多少个模组、有没有模组加载失败、世界加载是否正常、最后有没有出现监听端口的信息。模组加载失败通常会把模组名和错误内容一起打出来看到某个模组名反复出现基本可以确定是它的问题先禁用它再启动能排除就说明是那个模组的锅去找它的适配版本或者替代品。还有个容易被忽略的点模组加载失败不一定会让服务端退出。有时候服务端照常起来了但少加载了一个模组玩家进去发现某些物品变成未定义或者某个 BOSS 召唤不出来。所以每次改完模组之后养成习惯看一眼日志开头那段模组统计确认数量和你预期一致。3.4 动模组列表之前先备份.twld模组服有一条铁律只要增删模组之前先复制一份世界文件。原因很实在——模组在世界数据里留下痕迹去掉模组之后这些痕迹就成了未知数据服务端可能直接拒绝加载世界或者加载了但某些区块异常。加了模组再回去玩原版基本等于放弃这个存档。我的做法是给世界文件建一个版本快照目录命名格式是世界名_日期_模组版本比如CalamityRun_20240518_v1。改模组之前复制一份进去出问题直接回滚成本是几十秒的复制时间收益是不用重开一个玩了两百小时的世界。备份的时候顺手把enabled.json也复制一份这样连当时的模组列表都能还原。4. 让外面的朋友连进来端口、防火墙与连接方式服务端能在本机进说明游戏层面已经通了问题就转移到网络。这一段是新手最容易卡住的地方因为报错信息往往只有一句无法连接具体卡在哪一环全靠自己排查。我习惯按从内到外的顺序逐层验证哪一层断了就修哪一层。4.1 先在局域网里验证别一上来就折腾外网正确的排查顺序是这样的同一台机器上用127.0.0.1连一次通了说明服务端本身没问题然后让同一路由器下的另一台设备用主机的内网地址连一次比如192.168.1.100:7777通了说明端口监听和系统防火墙都没问题。只有这两步都通过再去处理外网映射否则你会在一个本来就有问题的服务端上反复折腾路由器纯属浪费时间。内网这一关最常卡在系统防火墙上。Windows 第一次运行服务端程序时会弹窗问是否允许访问网络很多人随手点了取消之后就一直是内网也连不上的状态。补救办法是去防火墙的入站规则里手动加一条允许该程序通过专用和公用网络协议按游戏实际使用的来Terraria 的多人协议以 TCP 为主端口填你在配置里写的那个日志里通常会明确提到是 TCP 还是 UDP以日志为准。4.2 端口映射与 UPnP两条路各有什么坑外网访问的本质是把公网上的某个端口转到你内网这台机器上的服务端端口。有两条路手动在路由器后台做端口映射或者靠 UPnP 自动完成。手动映射的入口一般在路由器管理页的端口转发虚拟服务器之类的菜单里需要填四样东西外部端口、内部 IP、内部端口、协议。外部和内部端口建议填一样的省得记内部 IP 要填主机在局域网里的固定地址这里有个大坑——主机的内网 IP 是靠 DHCP 分配的重启路由器之后可能变映射规则就指向了一台不存在的机器。解决办法是在路由器里给主机绑定静态地址或者在系统里手动设一个局域网内的固定 IP。UPnP 那条路更省事serverconfig.txt里把upnp打开路由器如果支持并且开了这个功能服务端会自动申请一条映射日志里会显示映射成功。它的缺点是不同路由器实现差异大有些家用路由器默认关闭 UPnP有些映射会在重启后失效。所以我的习惯是先用 UPnP 试一次成了就用不成再老老实实手动配别把时间耗在猜路由器行为上。还有一种情况值得说清楚如果服务端跑在云主机上你根本不需要做端口映射只需要在云服务商的安全组里放行对应端口就行。安全组是云平台自己的防火墙和系统防火墙是两回事两个都要放行少一个就连不上。这个坑我踩过当时在两个地方反复确认了好几遍才反应过来。4.3 密码、白名单与防破坏服务端一旦暴露在公网就会有人扫端口。Terraria 的服务端本身防护手段有限能做的其实就几件事但每一件都很有效。第一一定要设密码。serverconfig.txt里的password填上玩家进服需要输入。密码别用123456这种端口扫描的机器人会尝试常见弱口令。第二关掉不必要的信息暴露。MOTD 里不要写你的联系方式或者真实信息服务端的say广播也注意分寸公开发言所有人都能看到。第三用封禁列表管人。控制台的ban命令会把玩家加进封禁列表列表文件就在世界文件所在的目录旁边可以手动编辑。对于不请自来的玩家先踢再封别犹豫。第四定期看日志。注意日志里异常的连接尝试、频繁的进出记录这些是有人在试探的信号。公开服还可以考虑只在朋友在线的时间段开服其余时间直接关掉暴露时间越短越安全。4.4 想更省事的话还有别的连接方式不是所有场景都需要把服务端暴露到公网。如果只是一两个朋友一起玩用游戏内置的主机并游玩模式通过平台的好友邀请直接进入完全不用碰端口和映射这是最省心的方案代价是主机玩家的电脑必须一直开着游戏而且自己不能退出。专用服务端的优势在于可以挂机、可以多人同时在线、主机玩家不玩的时候世界也还在。两者不是替代关系是两种场景临时开一晚上用内置联机想长期经营一个世界用专用服务端。想清楚这一点能省掉很多不必要的折腾。5. 长期挂服的运维习惯服务端跑起来只是开始真正决定体验的是后面这些琐碎习惯。我挂过最长的一个模组服连续开了三个多月中间经历过停电、内存爆掉、模组更新导致世界加载失败最后能救回来全靠备份和日志。这部分内容不炫技但每一条都是花时间换来的。5.1 备份脚本和一次真实的还原演练手动复制世界文件这件事坚持三天容易坚持三个月很难。用一个脚本定时打包才靠谱。Linux 上可以这样先让服务端保存一次再打包整个世界目录并自动清理两周前的旧备份#!/bin/bash # 世界自动备份建议每天凌晨人少的时候跑一次 STAMP$(date %Y%m%d_%H%M) tar -czf /home/terraria/backup/world_$STAMP.tar.gz -C /home/terraria/server Worlds # 只保留最近 14 份避免把磁盘塞满 find /home/terraria/backup -name world_*.tar.gz -mtime 14 -delete关键在于执行时机打包之前一定要让服务端完成一次保存否则可能拷到正在写入的文件。最稳的做法是在控制台敲save确认保存提示出现之后再执行脚本。如果要用计划任务自动跑就把它安排在凌晨没人的时间段并且接受可能拷到上一次自动保存的状态这个现实——比没有备份好得多。备份做完之后至少演练一次还原。很多人备份了一堆文件真出事的时候才发现不知道文件该放哪、要改哪个配置。还原流程其实很简单停服务端把备份的世界文件解压回世界目录覆盖同名文件启动服务端加载。整个流程自己走一遍真出事的时候就不会手忙脚乱。5.2 定时重启、液体沉降和内存占用服务端长期运行会遇到内存缓慢增长的问题尤其是模组服跑几天之后内存占用比刚启动时高不少表现是越来越卡、偶尔卡住几秒。这不是玄学是长时间运行积累的对象没被及时回收。应对办法很朴素固定时间重启一次比如每天凌晨重启重启前先save。重启之后顺手做两件事一是敲一次settle把积累的液体流动一次性算完二是看一眼日志开头的模组加载信息确认没有模组加载失败。这两个动作加起来不到一分钟但能避开很多莫名其妙的卡顿。如果家里是经常停电的环境配个不间断电源是最实在的投资。一次突然断电就可能留下损坏的世界文件而恢复一个几周前的备份损失的是所有人这几周的进度。5.3 Linux 上怎么让服务端关掉终端也不停用 SSH 连到云主机启动服务端有个新手必踩的坑终端一关服务端跟着退出。因为服务端进程挂在当前会话下会话结束进程就被终止了。解决办法是用会话保持工具比如screen# 新建一个叫 terraria 的会话 screen -S terraria # 在会话里启动服务端 cd /home/terraria/server ./start-tModLoaderServer.sh -config serverconfig.txt # 按 CtrlA 再按 D脱离会话服务端继续在后台跑 # 下次想进控制台执行 screen -r terraria这套操作的好处是你既可以让服务端长期在后台运行又能随时回到控制台敲save、say、exit和坐在机器前面操作是一回事。想再规范一点可以写成系统服务交给系统管理开机自启、崩溃自动拉起云主机重启之后也不用人工干预。5.4 几个高频故障的对照排查下面这张表是我自己遇到过的典型问题按可能性从高到低排遇到的时候可以直接照着查现象优先怀疑处理办法内网都连不上系统防火墙未放行检查入站规则重新允许程序联网内网通、外网不通端口映射未生效或公网 IP 变了确认映射规则指向的 IP 和主机当前内网地址一致云主机上内网通、外网不通云平台安全组未放行在平台控制台放行对应端口和系统防火墙是两回事模组客户端进服报错模组列表或版本不一致两边的 Mods 目录和enabled.json完全同步世界加载失败世界文件损坏或模组被移除用.bak回滚或恢复改动前的备份玩一会儿集体卡顿液体流动、内存增长settle一次安排定时重启深夜突然掉线主机进入睡眠电源计划改为从不睡眠关闭硬盘休眠控制台窗口关掉后世界异常没有走保存流程养成save再exit的习惯排查的核心思路是分层定位游戏层、系统层、网络层、平台层一层一层往里收不要在没验证过前一层的情况下跳到下一层去改配置。绝大多数连不上最后都能归到上面这张表里的某一行。我个人在开服这件事上最深的体会是能自动的绝不手动能备份的绝不信运气。世界文件是所有人几个月的进度值得你多花十分钟写个脚本模组环境是版本的地雷阵值得你养成改之前先备份、改之后先看日志的条件反射。至于配置参数不用一开始就追求完美先把服跑起来进游戏玩两把卡了再回来调npcstream、加内存、换世界大小——先跑通再调优比对着文档纠结一晚上实在得多。
返回列表