Project Zomboid服务器搭建

注:基于win2012搭建

Music🎶

<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=1357582780&auto=1&height=66"></iframe>

Steamcmd

steamcmd(Windows版本)

下载完成后解压

建立1.bat文件写入

--javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

steamcmd +login anonymous +app_update 380870 +quit

启动bat文件进行steam和Project Zomboid文件下载

如果没有下载成功,重新启动bat下载

Project Zomboid启动器及配置文件

内存分配及ZGC收集器

打开Project Zomboid Dedicated Server文件夹

image-20230123152906106

可以看见一共有三个启动服务器的bat,分别是StartServer32.batStartServer64.bat以及StartServer64_nosteam.bat,如果你服务器是32位就编辑32位的,64位就编辑64位的,那个nosteam不用管,可能是用来局域网服务器测试的。云服务器应该都是64位的,这里就编辑64位。

编辑StartServer64.bat

分配内存很重要!除非你的云服务器端内存是16G往上(不含16G),否则一定要分配内存!

StartServer64.bat里可以看到在下图红线所划位置,云服务器端默认分配内存是16G,但咱们整的2核4G服务器一共才4G,分配16G自然启动不起来,所以需要把这两个16G改成合适的内存,拿4G服务器来说,分配个3G没什么太大问题。

(不能把内存全部分配,比如4G的服务器不能分配4G,毕竟服务器的Windows系统本身运行也需要内存,需要给系统预留一些空余内存,虚拟内存有没有用没有测试过。)

如果你想节省Windows系统占用的内存而使用Windows server 2012R2,并且明确没有大型多人服务器的需求,可以把下图划线部分删除,这样就不会出现ZGC requires Windows version 1803 or later的报错了。

不一定要高版本window,1803以下的只需要把--XX:+UseZGC去掉就行。ZGC只是个java自带的低延迟垃圾收集器,不支持低版本winapi使用。不是那种打算开大型多人服务器的,不用完全不影响。

服务器配置

建议在游戏中创建服务器写配置,然后在C:/user/用户名/Zomboid/Server中,将servertest.ini文件及其他两个servertest的.lua文件拷出来,放入服务端同样的路径中。

注:服务端刚刚下载完成之后,C:/user/用户名/Zomboid/Server/路径不存在的,所以建议自己创建路径,将上文中的三个文件拷贝到此目录下,再启动StartServer64.bat

servertest.ini文件配置指南

--javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

# 玩家可以攻击其他玩家.
PVP=true

# 服务器没有玩家时,自动暂停服务器
PauseEmpty=true

# 打开或关闭全局聊天.
GlobalChat=true

ChatStreams=s,r,a,w,y,sh,f,all

# 玩家可以在白名单中没有帐户的情况下加入.
# 如果设置为 false,管理员必须手动创建用户名/密码组合
Open=true

# 在聊天面板中可见的第一条欢迎信息.
# 这将在玩家登录后立即显示.
# 你可以使用 RGB 颜色来决定欢迎信息的颜色.你也可以使用 <LINE> 来在你的文本中创建一个单独的行.使用: <RGB:1,0,0> 这条信息将显示为红色!
ServerWelcomeMessage=欢迎来到LuckyCat的僵尸毁灭工程!  <LINE> <LINE> 要与聊天面板交互:按Tab、T或Enter。  <LINE> <LINE>  Tab键将更改消息的目标流。 <LINE> <LINE> Global Streams: /all <LINE> Local Streams: /say, /yell <LINE> Special Steams: /whisper, /safehouse, /faction. <LINE> <LINE> 按向上箭头循环浏览您的消息历史记录。单击Gear图标自定义聊天  <LINE> <LINE> Happy surviving!(文本翻译来自百度翻译)

# 自动添加新玩家至白名单列表,仅在 Open 项设置为 true 时生效.
AutoCreateUserInWhiteList=true

# 在玩家头顶显示玩家的ID.
DisplayUserName=true

# 在玩家头上显示姓名而不是用户名.
ShowFirstAndLastName=false

# 固定服务器出生点,0,0,0为服务器默认设置.
SpawnPoint=0,0,0

# 玩家可以自行开启PVP攻击其他玩家.SafetySystem设置为false则随时可以攻击玩家.
SafetySystem=true

# 如果玩家开启了PVP,则在玩家头顶显示一个骷髅头图标.
ShowSafety=true

# 设置开关PVP的切换时间.\n最小值=0 最大值=1000 默认=2
SafetyToggleTimer=2

# 设置开关PVP的冷却时间.\n最小值=0 最大值=1000 默认=3
SafetyCooldownTimer=3

# 给予新玩家物品.\n 可使用逗号分隔多个物品.\n 例如:Base.Axe,Base.Bag_BigHikingBag
SpawnItems=

# 玩家数据的默认起始端口.如果是 UDP ,这是使用的两个端口之一.\n最小值=0 最大值=65535 默认=16261
DefaultPort=16261

# 最小值=0 最大值=65535 默认=16262
UDPPort=16262

# 重启 ID 决定了服务器是否已经进行了软复位.
# 如果这个数字确实与客户端匹配,客户端必须创建一个新的角色.
# 与 玩家服务器ID 一起使用.
# 强烈建议你把这些ID备份到某个地方\n最小值=0 最大值=2147483647 默认=521367703
ResetID=281662866

# 在此处输入模组加载 ID.可在 \Steam\steamapps\workshop\modID\mods\modName\info.txt 中找到
Mods=

# 输入在 \Steam\steamapps\workshop\modID\mods\modName\media\maps\中找到的模组的文件夹名
Map=Muldraugh, KY

# 踢出和服务器文件不匹配的玩家.
DoLuaChecksum=true

DenyLoginOnOverloadedServer=true

# 在游戏内浏览器中显示服务器.(注意:启用 Steam 的服务器在 Steam 服务器浏览器中始终可见).
Public=true

# 在游戏内浏览器和Steam浏览器(如果适用)中显示的服务器名称
PublicName=LuckyCat的僵尸毁灭工程

# 游戏内公共服务器浏览器中显示的描述.输入 \n 将在你的描述中创建一个新行.
PublicDescription=LuckyCat的服务器,有问题请QQ联系

# 设置服务器的人数上限,不含管理员.警告:服务器超过32人将可能导致地图错乱和不同步现象,请控制人员数量!\n最小值=1 最大值=100 默认=32
MaxPlayers=8

# 玩家被踢出服务器之前的 Ping 限制,以毫秒为单位,(设置为 100 以禁用)\n最小值=100 最大值=2147483647 默认=400
PingLimit=400

# 当一个容器第一次被拿取后,它必须在其战利品被刷新前经过这个设定的小时数.
# 战利品的刷新不受可见度或后续拿取的影响.
# 在X小时之后,战利品将一直刷新,所有的容器将在同一时间刷新战利品.\n最小值=0 最大值=2147483647 默认=0
HoursForLootRespawn=0

# 物品数量大于或等于此设置的容器将不会刷新.\n最小值=1 最大值=2147483647 默认=4
MaxItemsForLootRespawn=4

# 物品是否可以刷新在玩家建立的容器中.
ConstructionPreventsLootRespawn=true

# 玩家死亡后自动从服务器的白名单中移除,防止玩家在死亡后创建新的角色.
DropOffWhiteListAfterDeath=false

# 除篝火外,所有形式的火源均禁用.
NoFire=false

# 如果选中,每次玩家死亡时都会在聊天中显示一条全局消息
AnnounceDeath=false

# 设置阅读书籍所需的时间.\n最小值=0.00 最大值=60.00 默认=1.00
MinutesPerPage=1.0

# 地图的加载部分在经过设定的现实分钟数后保存.(地图通常仅在客户端离开加载区域后保存).\n最小值=0 最大值=2147483647 默认=0
SaveWorldEveryMinutes=0

# 管理员和玩家都可以申请安全屋.
PlayerSafehouse=false

# 只有管理员可以申请安全屋.
AdminSafehouse=false

# 允许玩家可以随意出入其他玩家的安全屋.
SafehouseAllowTrepass=true

# 允许玩家的安全屋是否免疫火焰.
SafehouseAllowFire=true

# 允许玩家可以拿取其他玩家安全屋内的物品.
SafehouseAllowLoot=true

# 设置玩家死亡后是否在已设定的安全屋内重生.
SafehouseAllowRespawn=false

# 设置玩家存活几天后才可设置安全屋.\n最小值=0 最大值=2147483647 默认=0
SafehouseDaySurvivedToClaim=0

# 自动移除超过设置时间(现实世界)没有上线玩家的安全屋.\n最小值=0 最大值=2147483647 默认=144
SafeHouseRemovalTime=144

# 管理玩家是否可以占有非住宅建筑.
SafehouseAllowNonResidential=false

# 允许玩家使用大锤摧毁世界物体.
AllowDestructionBySledgehammer=true

# 允许玩家只在他们的安全屋内摧毁世界物体(要求允许使用大锤破坏).
SledgehammerOnlyInSafehouse=false

# 速度自动检测机制.自动踢出移动速度过快的玩家(推荐关闭).
KickFastPlayers=false

# 玩家服务器ID 决定一个角色是来自另一个服务器,还是来自单个玩家,这个值可能会被软重置改变.
# 如果这个数字与客户端匹配,客户端必须创建一个新角色.
# 这与 重置ID 一起使用.
# 强烈建议你在某处备份这些 ID
ServerPlayerID=1789017149

# RCON (远程控制台)的端口\n最小值=0 最大值=65535 默认=27015
RCONPort=27015

# RCON 密码(请使用高强度密码)
RCONPassword=luckycat

# 启用全局文字聊天与 Discord 频道的整合
DiscordEnable=false

# Discord 机器人访问令牌
DiscordToken=

# Discord 频道名称.(如果遇到困难,请尝试单独的频道 ID 选项)
DiscordChannel=

# Discord 频道ID.(在使用 Discord 频道名称选项有困难时使用)
DiscordChannelID=

# 玩家必须知道密码才能加入服务器.(通过主机按钮托管服务器时忽略)
Password=luckycat

# 限制一个Steam用户的账户数量,当使用'主机'按钮时被忽略.\n最小值=0 最大值=2147483647 默认=0
MaxAccountsPerUser=0

# 允许合作/分屏玩家
AllowCoop=true

# 玩家可以睡觉.
SleepAllowed=false

# 玩家会有疲劳状态.如果SleepAllowed设置为false则禁用
SleepNeeded=false

KnockedDownAllowed=true

SneakModeHideFromOtherPlayers=true

# 列出供服务器下载的创意工坊模组 ID.每个必须用分号分隔.示例:创意工坊项目=514427485;513111049
WorkshopItems=

# 在玩家列表中显示Steam用户名和头像,可设置为true(全可见),false(全不可见),admin(仅管理员可见)
SteamScoreboard=true

# 启用VAC封禁系统
SteamVAC=true

# 启用UPnP网关,并自动配置端口转发规则.
# 如果失败,服务器将退回到默认端口
UPnP=false

# 选中后,VOIP功能被启用.
VoiceEnable=true

# 可以听到 VOIP 声音的最小距离.\n最小值=0.00 最大值=100000.00 默认=10.00
VoiceMinDistance=10.0

# 可以听到 VOIP 声音的最大距离.\n最小值=0.00 最大值=100000.00 默认=100.00
VoiceMaxDistance=100.0

# 切换 VOIP 的定向音频. 
Voice3D=true

# 最小值=10.00 最大值=150.00 默认=70.00
SpeedLimit=70.0

LoginQueueEnabled=false

# 最小值=20 最大值=1200 默认=60
LoginQueueConnectTimeout=60

# 设置广播服务器的IP,这适用于具有多个 IP 地址的网络配置,例如服务器群
server_browser_announced_ip=

# 玩家可以在死亡的位置重生.
PlayerRespawnWithSelf=false

# 玩家可以在死亡的位置重生[分屏].
PlayerRespawnWithOther=false

# 控制玩家睡眠时时间流逝的速度.数值乘以睡眠时的时间流逝速度\n最小值=1.00 最大值=100.00 默认=40.00
FastForwardMultiplier=40.0

# 会让安全屋表现得像一个普通的房子,如果这个安全屋里的人有在线的话.
DisableSafehouseWhenPlayerConnected=false

# 允许玩家创建派系.
Faction=true

# 生存X天后才能创建派系.\n最小值=0 最大值=2147483647 默认=0
FactionDaySurvivedToCreate=0

# 派系所有者创建标记需要派系中有多少玩家.\n最小值=1 最大值=2147483647 默认=1
FactionPlayersRequiredForTag=1

# 禁用具有任何访问级别的玩家的无线电传输.
DisableRadioStaff=false

# 禁用具有[admin]访问级别的玩家的无线电传输.
DisableRadioAdmin=true

# 禁用具有[GM]访问级别的玩家的无线电传输.
DisableRadioGM=true

# 禁用具有[overseer]访问级别的玩家的无线电传输.
DisableRadioOverseer=false

# 禁用具有[moderator]访问级别的玩家的无线电传输.
DisableRadioModerator=false

# 禁用隐形玩家的无线电传输.
DisableRadioInvisible=true

# 不会写入 cmd.txt 服务器日志的以分号分隔的命令列表.
# 例如:\n-车辆.
# 输入 * 表示不写任何车辆命令.
# 输入:\n+vehicle.installPart 表示 DO 编写该命令
ClientCommandFilter=-vehicle.*;+vehicle.damageWindow;+vehicle.fixPart;+vehicle.installPart;+vehicle.uninstallPart

# 分号分隔的行动列表,将被写入ClientActionLogs.txt服务器日志
ClientActionLogs=ISEnterVehicle;ISExitVehicle;ISTakeEngineParts;

# 在 PerkLog.txt 服务器日志中跟踪玩家特权等级的变化
PerkLogs=true

# 可以放入容器的最大物品数,0表示没有限制.(请注意:这包括个别小物品,如钉子.一个50的限制将意味着只能储存50个钉子)\n最小值=0 最大值=9000 默认=0
ItemNumbersLimitPerContainer=0

# 移除旧血迹之前的天数.
# 加载地图块时删除.
# 0表示永远不会删除.\n最小值=0 最大值=365 默认=0
BloodSplatLifespanDays=0

# 禁用/启用玩家昵称中使用非Ascii(西里尔文...)字符
AllowNonAsciiUsername=false

BanKickGlobalSound=true

# 如果为启用,当 移除尸体时间 触发时,同时删除玩家的尸体.
RemovePlayerCorpsesOnCorpseRemoval=false

# 如果为启用, 玩家可以使用垃圾桶内的"删除全部" 按钮.
TrashDeleteAll=false

# 如果为启用,玩家在被其他玩家击中时可以再次击中.
PVPMeleeWhileHitReaction=false

# 如果为启用,玩家必须将鼠标悬停在某人上方才能看到他们的显示名称.
MouseOverToSeeDisplayName=true

# 如果为启用,自动隐藏你看不到的玩家(如僵尸).
HidePlayersBehindYou=true

# PVP近战攻击的伤害乘数.\n最小值=0.00 最大值=500.00 默认=30.00
PVPMeleeDamageModifier=30.0

# PVP远程攻击的伤害乘数.\n最小值=0.00 最大值=500.00 默认=50.00
PVPFirearmDamageModifier=50.0

# 修改汽车吸引僵尸的范围,较低的值可以帮助减少服务器延迟\n最小值=0.00 最大值=10.00 默认=0.50
CarEngineAttractionModifier=0.5

# 玩家在穿过其他玩家时撞击/推挤其他玩家.
PlayerBumpPlayer=false

# 遥控玩家是否显示在地图上.\n1=隐藏 2=朋友 3=所有\n最小值=1 最大值=3 默认=1
MapRemotePlayerVisibility=1

# 最小值=1 最大值=300 默认=5
BackupsCount=5

BackupsOnStart=true

BackupsOnVersionChange=true

# 最小值=0 最大值=1500 默认=0
BackupsPeriod=0

# 禁用的防作弊保护. 类型 1.
AntiCheatProtectionType1=true

# 禁用的防作弊保护. 类型 2.
AntiCheatProtectionType2=true

# 禁用的防作弊保护. 类型 3.
AntiCheatProtectionType3=true

# 禁用的防作弊保护. 类型 4.
AntiCheatProtectionType4=true

# 禁用的防作弊保护. 类型 5.
AntiCheatProtectionType5=true

# 禁用的防作弊保护. 类型 6.
AntiCheatProtectionType6=true

# 禁用的防作弊保护. 类型 7.
AntiCheatProtectionType7=true

# 禁用的防作弊保护. 类型 8.
AntiCheatProtectionType8=true

# 禁用的防作弊保护. 类型 9.
AntiCheatProtectionType9=true

# 禁用的防作弊保护. 类型 10.
AntiCheatProtectionType10=true

# 禁用的防作弊保护. 类型 11.
AntiCheatProtectionType11=true

# 禁用的防作弊保护. 类型 12.
AntiCheatProtectionType12=true

# 禁用的防作弊保护. 类型 13.
AntiCheatProtectionType13=true

# 禁用的防作弊保护. 类型 14.
AntiCheatProtectionType14=true

# 禁用的防作弊保护. 类型 15.
AntiCheatProtectionType15=true

# 禁用的防作弊保护. 类型 16.
AntiCheatProtectionType16=true

# 禁用的防作弊保护. 类型 17.
AntiCheatProtectionType17=true

# 禁用的防作弊保护. 类型 18.
AntiCheatProtectionType18=true

# 禁用的防作弊保护. 类型 19.
AntiCheatProtectionType19=true

# 禁用的防作弊保护. 类型 20.
AntiCheatProtectionType20=true

AntiCheatProtectionType21=true

AntiCheatProtectionType22=true

AntiCheatProtectionType23=true

AntiCheatProtectionType24=true

# 反作弊保护的阈值乘数. 类型 2.\n最小值=1.00 最大值=10.00 默认=3.00
AntiCheatProtectionType2ThresholdMultiplier=3.0

# 反作弊保护的阈值乘数. 类型 3.\n最小值=1.00 最大值=10.00 默认=1.00
AntiCheatProtectionType3ThresholdMultiplier=1.0

# 反作弊保护的阈值乘数. 类型 4.\n最小值=1.00 最大值=10.00 默认=1.00
AntiCheatProtectionType4ThresholdMultiplier=1.0

# 反作弊保护的阈值乘数. 类型 9.\n最小值=1.00 最大值=10.00 默认=1.00
AntiCheatProtectionType9ThresholdMultiplier=1.0

# 反作弊保护的阈值乘数. 类型 15.\n最小值=1.00 最大值=10.00 默认=1.00
AntiCheatProtectionType15ThresholdMultiplier=1.0

# 反作弊保护的阈值乘数. 类型 20.\n最小值=1.00 最大值=10.00 默认=1.00
AntiCheatProtectionType20ThresholdMultiplier=1.0

# 最小值=1.00 最大值=10.00 默认=1.00
AntiCheatProtectionType22ThresholdMultiplier=1.0

# 最小值=1.00 最大值=10.00 默认=6.00
AntiCheatProtectionType24ThresholdMultiplier=6.0

部分配置解释说明

  • Public(如果想能在公共服务器上搜索到,需要将Public勾选上,否则只能ip直连,但目前即使勾选上不太可能在公共服务器菜单搜索到

  • UPnP(当你有公网ip,并且想要在服务器列表中被搜索到,请取消勾选此选项。如果是用自己的电脑开服务器,并且没有公网ip的话,请勾选这个选项。)

  • Password:[<mark>                     </mark>](不做过多解释,加入服务器密码)

  • PauseEmpt(此选项勾选的话,当服务器内没有玩家时,游戏时间会暂停,不勾选的话,服务器内不管有没有玩家,时间都正常流逝)

  • Open(一定要勾选,如果只勾选了Open,那么只有服主在服务器端的CMD把玩家添加进白名单后,玩家才能进入服务器)

  • AutoCreateUserInWhiteList(将加入的玩家自动写入白名单;将这个选项和上面的选项同时勾选,再搭配服务器密码,既可以实现将知道密码的用户自动写入白名单

  • 反作弊:如果出现错误代码断开连接可以尝试关闭所对应的代码反作弊(自己玩建议全部关闭)

Mod配置部分

🚧施工中(暂时没用到)

暂时请参考:https://www.bilibili.com/read/cv14427208?from=search&spm_id_from=333.337.0.0

启动服务端

双击StartServer64.bat启动服务端

第一次启动会要求输入两次管理员密码(至于怎么用,后面再说)

输入管理员密码

确认密码

然后等待,知道出现*** SERVER STARTED ****** Steam is enable ***说明你的服务器已经启动好了,之后就可以在游戏中搜索到服务器了

服务器已启动

服务器管理

白名单添加

服务端cmd中输入adduser "昵称" "密码"

管理员

当加入服务器时昵称为admin,密码为上面启动服务器时输入的密码时,登陆后就为管理员账号。

更新服务器

服务端更新

使用quit关闭服务器!使用quit关闭服务器!使用quit关闭服务器

启动1.bat即可更新服务器

Mod更新

🚧施工中(暂时没用到)

暂时请参考:https://www.bilibili.com/read/cv14427208?from=search&spm_id_from=333.337.0.0

其他问题

  • 服务器安全组需要开放16261,16262、27015三个端口(待定)

🚧施工中

参考:https://www.bilibili.com/read/cv14427208?from=search&spm_id_from=333.337.0.0

[回到顶部](#Project Zomboid服务器搭建)