Palworld幻兽帕鲁专业服务器搭建
Foreword
幻兽帕鲁,宝可梦版方舟,还缝合了一点塞尔达,The Survivalists,有意思,啥时候GF能做个这样的宝可梦游戏啊
本身支持小服务器4人联机,也支持大服务器32人联机,刚好有独立服务器,可以开一个玩一下。
服务器需求
- CPU,4cores
- RAM,8G
- Network,Port UDP 8211
- 硬盘,50G
这是推荐配置,我直接8c,16g,防止出问题,使用Ubuntu来安装
- 后面发现12个人内存16g就满了(大概率造成某些玩家卡档黑屏无法进入,需要删档),后续扩展到了32g
- 32g后期其实也不太够,扩展到了48g,再也不用担心爆内存了
平均一个玩家1g内存占用,越往后期占用越高,所以内存能大尽量大
- 内存使用逻辑和探图有关系,就算只有3个玩家依然可以占用20g内存,在一次重启以后,玩家走过的地图面积越大,内存占用越大
服务器无人在线的情况下已经用到了30g内存,拓宽到48g保平安是最好的
对于网络带宽的需求应该是小于10M的,多数小水管都够跑了
linux
安装
首先安装steamcmd
sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt updatesudo apt install steamcmd
安装PalServer
steamcmd +login anonymous +app_update 2394010 validate +quitcd ~/Steam/steamapps/common/PalServer./PalServer.sh
路由上开放UDP端口8211即可
更新
一样使用这个代码进行更新就行了
steamcmd +login anonymous +app_update 2394010 validate +quit
常见问题
连不上steam
安装PalServer可能会一直重试,最后失败,这是由于连不上steam,所以服务器最好挂个代理
Loading Steam API...dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directoryConnecting anonymously to Steam Public...Retrying. . . Retrying. . . Retrying. . . Retrying. . . FAILED (No Connection)
修改默认网关,走透明代理,我这里自己的网关
route add default gw 192.168.6.232
恢复网关
route add default gw 192.168.6.1
挂上透明代理以后,正常安装了
缺少sdk
第一次运行./PalServer.sh
大概率会出现类似的错误
/home/el/.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory[S_API] SteamAPI_Init(): Sys_LoadModule failed to load: /home/el/.steam/sdk64/steamclient.so
安装一下相关的sdk
mkdir -p ~/.steam/sdk64/steamcmd +login anonymous +app_update 1007 +quitcp ~/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/
就恢复正常了
缺少steamclient.so
第二次运行./PalServer.sh
,可能会提示steamclient.so
找不到,这个问题可以忽略,实际上找到了
$ ./PalServer.shShutdown handler: initalize.Increasing per-process limit of core file size to infinity.dlopen failed trying to load:steamclient.sowith error:steamclient.so: cannot open shared object file: No such file or directory[S_API] SteamAPI_Init(): Loaded '/home/ubuntu/.steam/sdk64/steamclient.so' OK. (First tried local 'steamclient.so')
其他可能服务器太老了,包没更新之类的问题
sudo apt updatesudo add-apt-repository --remove ppa:whatever/ppasudo apt install steamsudo apt-get -f install
设置服务器密码反而进不去
设置服务器密码以后,只能通过游戏内服务器列表或者是历史游戏记录中进入,那样才有输入密码的提示框
直连IP或者域名反而没有任何提示框,会导致提示没有输入密码而进不去
25日后修复了,可以显示密码弹窗了
玩家卡档、黑屏
造成这个的原因大概率还是内存不够用导致的,我之前开的16g服务器,那会内存不够用,好几个人在退出以后再也进不去了。
https://tieba.baidu.com/p/8869855204?see_lz=0&qq-pf-to=pcqq.group
[BUG]服务器会有玩家随机坏档案,导致无法进入服务器 具体触发情况未知,会导致玩家UID变成00000000,然后这个玩家就再也进不了服务器了 网络问题排除过,服务端也重启了,游戏也重启了,必须删除这个玩家的档案才可以恢复进服
其他人都能正常进入,但是某些玩家进不去,这个是坏档问题,需要找到有问题的玩家存档,并且删除他的存档,重启服务器,然后他就能正常进入了,不过这样会造成他丢档,要重新玩
在有问题的玩家电脑上的steam里下载Palworld Dedicated Server,打开后再启动游戏进一次本地服务器127.0.0.1:8211,进入后随便创建一个人物,再去Palworld Dedicated Server的根目录PalServer\Pal\Saved\SaveGames\0\(随机ID)\Players内,会有一个唯一的乱码.sav玩家存档,那个就是你的存档文件,去服务器上找到同名文件删除即可。
Palworld Dedicated Server
直接搜索安装即可
出现这个问题,需要这个玩家自己建立服务器,并且创建人物,然后去查找他的ID是什么,这个ID在自己服和别人服是相同的,通过这种方式就能定位到,不过这样太麻烦了。实际可以通过服务器快速确定,建议服主提前存一下每个的ID界面,后续再删档就轻松了。
下面的数据需要服务器管理员登录,查看每个人的ID,进别人服务器,别的管理员也能看到这个ID,都是一样的
就比如这里出问题的是xinghe,他的playerid是2078406141
,转换成十六进制就是7BE1F5FD
,那么存档里同名的就是他了
存档路径
~/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames/0/随机码/Players类似:/home/el/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames/0/BCE40ECCE406405EA86463114026317B/Players
删除以后重启服务器,这个玩家就能正常进入游戏了
玩家进入以后最好退出一下公会,再重新加入,否则左键无法蓄力
- 此条会引起更多的丢档
目前分析应该是玩家退会了,但是有玩家此时不在线,如果他上线,那么公会的信息就会同步了。
而这个信息又仅仅存在内存中,如果服务器重启了,内存清空了,那么必然会造成那个离线玩家信息不同步,进而导致下次再进入的时候他就卡黑屏了。
所以建议如果要重启,尽量是同一个公会的玩家尽量在重启前都上线一次,同步一下信息,再下线,再重启。
或者是这些玩家都是同一个时间下线的,那么后续不在线,服务器重启也不影响他们。
服务器设置
修改游戏设置
Pal/Saved/Config/LinuxServer/PalWorldSettings.ini类似:/home/el/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer
默认这个文件是空的
cd ~/Steam/steamapps/common/PalServer/DefaultPalWorldSettings.ini
但是在这里有默认设置,复制一下根据这个修改即可
; This configuration file is a sample of the default server settings.; Changes to this file will NOT be reflected on the server.; To change the server settings, modify Pal/Saved/Config/LinuxServer/PalWorldSettings.ini.[/Script/Pal.PalGameWorldSettings]OptionSettings=(Difficulty=None,DayTimeSpeedRate=1.000000,NightTimeSpeedRate=1.000000,ExpRate=1.000000,PalCaptureRate=1.000000,PalSpawnNumRate=1.000000,PalDamageRateAttack=1.000000,PalDamageRateDefense=1.000000,PlayerDamageRateAttack=1.000000,PlayerDamageRateDefense=1.000000,PlayerStomachDecreaceRate=1.000000,PlayerStaminaDecreaceRate=1.000000,PlayerAutoHPRegeneRate=1.000000,PlayerAutoHpRegeneRateInSleep=1.000000,PalStomachDecreaceRate=1.000000,PalStaminaDecreaceRate=1.000000,PalAutoHPRegeneRate=1.000000,PalAutoHpRegeneRateInSleep=1.000000,BuildObjectDamageRate=1.000000,BuildObjectDeteriorationDamageRate=1.000000,CollectionDropRate=1.000000,CollectionObjectHpRate=1.000000,CollectionObjectRespawnSpeedRate=1.000000,EnemyDropItemRate=1.000000,DeathPenalty=All,bEnablePlayerToPlayerDamage=False,bEnableFriendlyFire=False,bEnableInvaderEnemy=True,bActiveUNKO=False,bEnableAimAssistPad=True,bEnableAimAssistKeyboard=False,DropItemMaxNum=3000,DropItemMaxNum_UNKO=100,BaseCampMaxNum=128,BaseCampWorkerMaxNum=15,DropItemAliveMaxHours=1.000000,bAutoResetGuildNoOnlinePlayers=False,AutoResetGuildTimeNoOnlinePlayers=72.000000,GuildPlayerMaxNum=20,PalEggDefaultHatchingTime=72.000000,WorkSpeedRate=1.000000,bIsMultiplay=False,bIsPvP=False,bCanPickupOtherGuildDeathPenaltyDrop=False,bEnableNonLoginPenalty=True,bEnableFastTravel=True,bIsStartLocationSelectByMap=True,bExistPlayerAfterLogout=False,bEnableDefenseOtherGuildPlayer=False,CoopPlayerMaxNum=4,ServerPlayerMaxNum=32,ServerName="Default Palworld Server",ServerDescription="",AdminPassword="",ServerPassword="",PublicPort=8211,PublicIP="",RCONEnabled=False,RCONPort=25575,Region="",bUseAuth=True,BanListURL="https://api.palworldgame.com/api/banlist.txt")
# 难度 Difficulty=None, # 白天时间流速 DayTimeSpeedRate=1.000000, # 夜晚时间流速 NightTimeSpeedRate=1.000000, # 经验倍率 ExpRate=2.000000, # 帕鲁捕捉倍率 PalCaptureRate=2.000000, # 帕鲁重生数量倍率 PalSpawnNumRate=1.000000, # 帕鲁伤害倍率 PalDamageRateAttack=1.000000, # 帕鲁防御倍率 PalDamageRateDefense=1.000000, # 玩家攻击倍率 PlayerDamageRateAttack=1.000000, # 玩家防御倍率 PlayerDamageRateDefense=1.000000, # 玩家饥饿消耗倍率 PlayerStomachDecreaceRate=1.000000, # 玩家耐力消耗倍率 PlayerStaminaDecreaceRate=1.000000, # 玩家HP恢复倍率 PlayerAutoHPRegeneRate=1.000000, # 玩家休息时HP恢复倍率 PlayerAutoHpRegeneRateInSleep=1.000000, # 帕鲁饥饿消耗倍率 PalStomachDecreaceRate=1.000000, # 帕鲁耐力消耗倍率 PalStaminaDecreaceRate=1.000000, # 帕鲁HP恢复倍率 PalAutoHPRegeneRate=1.000000, # 帕鲁休息时HP恢复倍率 PalAutoHpRegeneRateInSleep=1.000000, # 建筑伤害倍率 BuildObjectDamageRate=1.000000, # 建筑老化倍率 BuildObjectDeteriorationDamageRate=1.000000, # 采集掉落倍率 CollectionDropRate=1.000000, # 可采集物恢复倍率 CollectionObjectHpRate=1.000000, # 可采集物重生倍率 CollectionObjectRespawnSpeedRate=1.000000, # 掉落倍率 EnemyDropItemRate=1.000000, # 死亡是否掉落 ALL全掉 None不掉 Item仅掉落背包内的道具 ItemAndEquipment 除了帕鲁全掉 DeathPenalty=None, # 是否允许玩家之间的伤害,PVP bEnablePlayerToPlayerDamage=False, # 是否允许友伤,包含帕鲁 bEnableFriendlyFire=False, # 是否允许入侵事件 bEnableInvaderEnemy=True, # bActiveUNKO=False, # 手柄是否可以辅助瞄准 bEnableAimAssistPad=True, # 键鼠是否可以辅助瞄准 bEnableAimAssistKeyboard=False, # 地面最多存在掉落物数量 DropItemMaxNum=3000, # DropItemMaxNum_UNKO=100, # 最多据点数量 BaseCampMaxNum=128, # 据点最多工作帕鲁数量 BaseCampWorkerMaxNum=15, # 掉落物最多存在时间 DropItemAliveMaxHours=1.000000, # 是否开启公会超时销毁 bAutoResetGuildNoOnlinePlayers=False, # 公会超时销毁时间 AutoResetGuildTimeNoOnlinePlayers=72.000000, # 公会人数上限 GuildPlayerMaxNum=20, # 孵蛋消耗时间倍率 PalEggDefaultHatchingTime=72.000000, # 帕鲁工作速率 WorkSpeedRate=1.000000, # 多人游戏,PVP bIsMultiplay=False, # 开启PVP bIsPvP=False, # 是否可以捡其他部落的死亡掉落,PVP bCanPickupOtherGuildDeathPenaltyDrop=False, # 启用非登录惩罚,PVP bEnableNonLoginPenalty=True, # 是否可以快速传送 bEnableFastTravel=True, # 是否可以选择出生点 bIsStartLocationSelectByMap=True, # 所有玩家退出后自动关闭服务器 bExistPlayerAfterLogout=False, # 是否受到其他公会伤害,PVP bEnableDefenseOtherGuildPlayer=False, # 合作玩家数量,似乎没用 CoopPlayerMaxNum=4, # 服务器人数 ServerPlayerMaxNum=32, ServerName="服务器名称", ServerDescription="服务器描述信息", # 管理员密码和RCON密码 AdminPassword="", # 服务器密码建议先别设 ServerPassword="", # 服务器端口 PublicPort=8211, # 公网Ip 可以不设 PublicIP="palworld.elmagnifico.tech", # RCON相关配置 RCONEnabled=False, RCONPort=25575, # 地区配置 Region="", # bUseAuth=True, # BanListURL="https://api.palworldgame.com/api/banlist.txt"
- PalSpawnNumRate,注意此倍率不要调整,内存消耗与此有关系,xN就是内存消耗xN,同时游戏内BOSS和野外帕鲁都会数量翻倍
设置密码
ServerPassword="123456"
- 注意设置密码以后,默认通过IP的方式无法连接,稍微有点不方便
密码的临时解决办法:
首先在服务器列表页面,随便选一个带密码的服务器,输入你要去的服务器密码,但是不进去。
然后通过IP方式连接,这个时候游戏会使用刚才缓存的密码,就能正常进去了。
设置服务器名称
此处都可以用文中
ServerName="Default Palworld Server"
服务器描述
ServerDescription="点击链接加入QQ频道【elmagnifico's游戏屋】:https://pd.qq.com/s/enyor3z9m"
人数上限
ServerPlayerMaxNum=32
管理员密码
AdminPassword="123"
死亡掉落
死亡全掉落
DeathPenalty=All
死亡不掉落
DeathPenalty=None
测试
服务器正常启动提示:
dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directorySetting breakpad minidump AppID = 2394010[S_API FAIL] Tried to access Steam interface SteamUser021 before SteamAPI_Init succeeded.[S_API FAIL] Tried to access Steam interface SteamFriends017 before SteamAPI_Init succeeded.[S_API FAIL] Tried to access Steam interface STEAMAPPS_INTERFACE_VERSION008 before SteamAPI_Init succeeded.[S_API FAIL] Tried to access Steam interface SteamNetworkingUtils004 before SteamAPI_Init succeeded.
服务器开久了好像FPS会下降,刚开始是60稳定的
发现应该是和玩家数成正比的,超过4个人以后,这个FPS就开始下降了,估计20个人就10FPS了(事实确实如此)
正式启动
安装screen
apt install screen
使用一个独立的终端运行服务器
screen -S pal
欢迎来玩,暂时没有设置密码
服务器加入请使用如下地址
palworld.elmagnifico.tech:8211
管理
管理员指令
用管理员密码登录服务器
/AdminPassword 密码
显示当前玩家/ShowPlayers
其他命令类似
踢出/KickPlayer [UserID]/[SteamID64]封禁/BanPlayer [UserID]/[SteamID64]传送/TeleportToPlayer {SteamID}拉人/TeleportToMe {SteamID}存档/Save强制服务器退出/DoExit广播信息/Broadcast {MessageText}通知服务器在线玩家n秒后服务器关闭/Shutdown {Seconds} {MessageText}/Shutdown 240 4分钟后重启,请及时下线,否则有可能坏档/Shutdown 300 5分钟后重启,请及时下线,否则有可能坏档
RCON
palworld支持RCON远程管理,方便服务器主操作
https://github.com/gorcon/rcon-cli
需要开启RCON和端口放行 RCON使用的是TCP,不是UDP
RCONEnabled=TrueRCONPort=25575
之后就可以使用rcon.exe远程连接,之后输入指令和游戏中相同。甚至可以做出批脚本执行那就是后话了。
- ShowPlayers 命令会超时,应该是命令有问题
广播测试
rcon.exe -a 192.168.6.144:25575 -p 管理员密码 "Broadcast 测试一下"
重启脚本
rcon.exe -a 192.168.6.144:25575 -p 管理员密码 "Shutdown 300 5分钟后重启,请及时下线,否则有可能坏档"
存档修改
参考此工具修改存档的一些内容
https://github.com/cheahjs/palworld-save-tools
短评
Palworld 刚好填补了方舟疲软,方舟2迟迟不出,方舟1.5口碑倒退的空缺,宝可梦DLC没新意,英灵神殿千万销量以后新制作内容基本等于没有,天下苦“秦“久矣。同时即将过年,大家都有时间来玩了,更别说是一个联机游戏。
Palworld 很多宝可梦设定都借鉴了阿尔宙斯,而阿尔宙斯毫无疑问是近年宝可梦游戏中最好的一作。
Palworld 和创世理想乡是同一个制作组,而创世理想乡当时就是缝合了各种游戏,弄了一个四不像出来,虽然可以玩,但是热度很快就掉下去了。创世理想乡在当时很多东西没有制作完成,而游戏模式又没有以某一款游戏为主,而是东抄一点、西抄一点,游玩的目标不是很明确,虽然后续完善了,不过玩家已经没多少了。
Palworld 很明显有了创世理想乡的技术基础,再加上阿尔宙斯的主轴线路,稍稍完善,整体的体验就可以了,做出了宝可梦不敢做的东西。
短短3天就达成了400w销量,千万销量基本稳了,上一个这么火的游戏英灵神殿花了4周。
Palworld同样是EA阶段开售,总体游戏体验没有明显bug,完整度是可以的。而游戏内容还有很多可填补的地方,希望Palworld别想理想乡一样,拖这么久都没做完,中途拿了钱就跑去开发其他游戏。他能像方舟和无人深空一样,用心开发两三年,这个游戏就很不错了,配上千万销量,算是独立游戏中的翘楚了。
6天800w,晚高峰在线200w+,真是恐怖啊
Summary
简单配好以后就可以正常游玩了
Quote
https://developer.valvesoftware.com/wiki/SteamCMD#Linux
https://tech.palworldgame.com/dedicated-server-guide#windows
https://techraptor.net/gaming/guides/palworld-server-guide
https://tech.palworldgame.com/server-commands
https://tech.palworldgame.com/optimize-game-balance
https://tieba.baidu.com/p/8869855204?see_lz=0&qq-pf-to=pcqq.group