《僵尸毁灭工程》(Project Zomboid)专用服务器(Dedicated Server)支持多人离线常驻世界。由于游戏深度依赖物理同步、大量僵尸寻路和海量地图物品交互,服务端对内存分配、网络端口与 MOD 挂载顺序有明确规范。本文提供专用服务器的基础搭建、版本分支选择与运行调优指南。
一、硬件与分支架构选择
1. 稳定版与测试分支
Stable 和 Unstable 是发布通道,不是 B41 与 B42 的固定别名。官方 42.21 发布说明已确认 B42 进入稳定通道。安装前核对具体构建,客户端保持同版本。
| 分支类型 | SteamCMD 参数 | 适用场景 | 切换前检查 |
|---|---|---|---|
| 默认稳定通道 | 不附加 beta 参数 | 小队长期世界 | 确认存档与模组适配该构建 |
| Unstable 测试通道 | -beta unstable |
验证可用的预发布更新 | 使用独立实例与存档副本,不假定可以安全降级 |
2. 硬件资源基准
- CPU:4 核 3.5GHz+ 推荐;僵尸集群寻路高度依赖单核与多核物理算力。
- 内存 (RAM):基础占用约 6 GB;每增加一名活跃玩家及加载大型地图模组,建议预留 500MB~1GB 内存。
- 存储:强烈建议安装于 SSD,防止大车队跨区域移动(Chunk 动态加载)时出现磁盘读写瓶颈引发的瞬时回弹。
二、通过 SteamCMD 部署服务端
1. 匿名拉取服务端
专服 AppID 为 380870。
- 安装默认稳定版:
Shell steamcmd +login anonymous +app_update 380870 validate +quit - 安装 Unstable 测试分支:
Shell steamcmd +login anonymous +app_update 380870 -beta unstable validate +quit
2. 内存堆上限配置(JVM Heap Size)
使用服务端随附的启动脚本与 Java,修改其现有 JVM 参数;不要用下面的片段覆盖启动器 JSON。以 4 GB 初始堆、12 GB 最大堆为例:
-Xms4096m -Xmx12288m
-Xmx 限制的是 Java 堆,不是进程总内存或物理内存上限;原生内存、线程栈和系统也需要余量。根据实际占用调整,参数定义见 Java 启动器文档。
三、网络通信与端口配置
现代 PZ 服务端已简化网络通信栈,不再使用早期的逐玩家 TCP 端口映射机制:
| 端口号 | 协议 | 作用说明 | 是否需端口转发 |
|---|---|---|---|
| 16261 | UDP | 主连接握手端口与 Master 状态广播 | 公网入口时映射 |
| 16262 | UDP | Steam 客户端网络直连与游戏数据同步 | 公网入口时映射 |
防火墙与路由器检查清单:
- 确保 Windows 防火墙已为
ProjectZomboid64.exe放行 UDP 入站流量; - 家用网络需在路由器中将外部
16261-16262UDP 映射到服务器内网静态 IP; - 同局域网玩家直接输入内网 IP(如
192.168.1.5:16261)加入,外网玩家输入公网 IP。
四、配置文件与 MOD 挂载规范
服务端数据默认存放在用户主目录下:
- Windows:
C:\Users\<用户名>\Zomboid\Server\ - Linux:
~/Zomboid/Server/
1. 核心配置文件
<服务器名>.ini:管理连接、端口、密码、MOD 挂载与白名单规则。<服务器名>_SandboxVars.lua:管理僵尸刷新率、停水断电时间、物资刷新与感染机制。<服务器名>_spawnregions.lua:管理出生点区域划分。
2. 正确挂载创意工坊 MOD
下面仅示范字段格式,示例模组需先确认与所选版本兼容。在 <服务器名>.ini 中,分别配置 WorkshopItems 下载列表与 Mods 激活列表,并按作者要求设置模组依赖和加载顺序:
WorkshopItems=2688809240;2392709985
Mods=Arsenal(26)GunFighter;Brita's Weapon Pack
WorkshopItems:模组在 Steam 创意工坊的纯数字 ID(服务端据此自动下载);Mods:模组文件夹的 Mod-ID(游戏据此在世界中激活代码)。一个 Workshop 项目可能包含多个 Mod ID,不要假定两列总是一一对应;客户端和服务端应启用兼容版本。
五、用 LGSM 管理日常维护
僵毁换版本时,分支、模组与旧世界兼容性需要一起检查。LGSM 可以集中管理实例配置、运行日志与备份,但分支升级前仍应先验证当前存档和模组组合。
- 记录客户端与服务端的具体版本,避免把稳定版或测试版名称当作固定的 B41/B42 对应关系。
- 分别核对 Workshop ID 与 Mod ID,再检查各模组的依赖和加载顺序。
- 迁移前保留世界、玩家数据和 INI/Lua 配置;崩溃时先读日志,避免直接清空缓存掩盖原因。
六、长期运维高频故障处置
1. 报错:Server has terminated with code 1
- 排查:退出码 1 本身不能定位原因;先读退出前日志,区分 Java 启动失败、内存分配、配置和模组错误。
- 解决:日志若明确指向内存不足,检查可用资源并调整堆大小;否则按具体错误处理,不先扩大分页文件。
2. 玩家连接提示“文件与服务器不匹配 (File doesn't match the server)”
- 原因:服务端与客户端的模组版本不一致,或服务端自动下载了新补丁而客户端未完成更新。
- 解决:记录不匹配的文件与模组 ID,先让两端完成对应模组更新并重启;仍失败时保留日志与配置副本,再针对该模组修复下载,不直接清空整个 Workshop 目录。