Mac 系统(M 系处理器)搭建幻兽帕鲁(palworld)服务器 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yiios
V2EX    分享发现

Mac 系统(M 系处理器)搭建幻兽帕鲁(palworld)服务器

  •  1
     
  •   yiios 2024-01-24 22:14:32 +08:00 4263 次点击
    这是一个创建于 693 天前的主题,其中的信息可能已经有所发展或是发生改变。

    环境准备

    1. 下载安装 docker ,https://www.docker.com/
    2. 修改 docker desktop 中的 Settings - Resources ,把 CPU Limit 拉满,Memory Limit 拉到给剩 2-3G 接近满值,Swap 拉满,保存。
    3. 创建一个文件夹,例如:palworld-arm-docker,在里面创建一个空的子文件夹 palworld

    docker-compose

    palworld-arm-docker 文件夹下面创建 docker-compose.yml 文件。 mem_limit视自己的刚才的Memory Limit调整,比如Memory Limit是 14G ,那么mem_limit就设定为 13G ,这样可以在内存泄露严重时自动重启容器。

    version: '3' services: pal: image: czy0612/palworld-server restart: always mem_limit: 13g container_name: pal ports: - 8211:8211/udp - 25575:25575/tcp volumes: - ./PalWorldSettings.ini:/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini - ./palworld:/home/steam/Steam/steamapps/common/PalServer/ 

    PalGameWorldSettings(游戏配置)

    palworld-arm-docker 文件夹下面创建 PalWorldSettings.ini 文件。

    官方文档: https://tech.palworldgame.com/optimize-game-balance 配置生成器: https://dysoncheng.github.io/PalWorldSettingGenerator/setting.html

    默认配置如下,如何修改可以参考上面两个网页:

    [/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="123456",ServerPassword="",PublicPort=8211,PublicIP="",RCOnEnabled=True,RCOnPort=25575,Region="",bUseAuth=True,BanListURL="https://api.palworldgame.com/api/banlist.txt") 

    运行

    1. 终端中 cd 到 palworld-arm-docker 文件夹目录下
    2. 拉取 docker 镜像docker-compose pull
    3. 运行 docker-compose up -d
    4. 等待 30 秒后 sudo docker logs pal 看到如下信息说明服务器配置好了,马上可以冲了!
    dlopen failed trying to load: steamclient.so with error: steamclient.so: cannot open shared object file: No such file or directory [S_API] SteamAPI_Init(): Loaded '/home/steam/.steam/sdk64/steamclient.so' OK. (First tried local 'steamclient.so') CAppInfoCacheReadFromDiskThread took 29 milliseconds to initialize Setting 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. 

    网络配置

    如果你能拿到公网 ip ,看端口映射章节,拿不到公网 ip 看内网穿透章节。

    端口映射

    1. 路由上给 Mac 终端指定一个 ip
    2. 虚拟服务器/端口映射上,配置 Mac 终端映射端口 8211(协议 UDP)/25575(协议 TCP)

    FRP 内网穿透

    FRP 教程我这里就不在赘述了,这里使用的是 0.52.3 版本。下面有一份配置可供参考。

    frps 配置参考:

    bindPort = 7001 #{必选} 客户端与该端口建立连接 transport.tls.enable = true #身份验证 auth.method = "token" #{可选}身份验证方式 auth.token = "123456" #token 设置密码,用于通过身份验证创建连接 #frp 服务仪表板配置 webServer.port = 17300 #{也可自行修改端口} webServer.addr = "0.0.0.0" #公网 ip 或者域名 webServer.user = "shellhk" #登录用户名{可自行修改} webServer.password = "gongting521" #登录密码{可自行修改} 

    frpc 配置参考:

    serverAddr = "114.114.115.115" #填写你的 frps 服务器 serverPort = 7001 #填写你的 frps 服务的端口 auth.token = "123456" transport.tls.enable = true [[proxies]] name = "palworld-ucp" type = "udp" localIP = "127.0.0.1" localPort = 8211 remotePort = 8211 [[proxies]] name = "palworld-rcon" type = "tcp" localIP = "127.0.0.1" localPort = 25575 remotePort = 25575 

    RCON 服务器指令

    工具: https://github.com/gorcon/rcon-cli

    用法示例,12345 为之前设置的游戏参数AdminPassword,根据实际情况修改:

    ./rcon -a 114.114.115.115:25575 -p 123456 

    服务器命令表: https://tech.palworldgame.com/server-commands

    PS:

    1. 设置 ServerPassword 的话,无法直接输入 ip+端口加入房间,必须要曲线救国,最好别设置。
    2. 帕鲁服务端目前非常吃配置,机器内存不建议低于 16G 。
    3. 帕鲁服务端目前非常吃配置,frps 服务器的带宽也很重要,想流畅不卡最少一个在线用户要分到 1M 的带宽。

    看到最后麻烦给我点个赞!

    22 条回复    2024-01-29 19:44:37 +08:00
    mikaelson
        1
    mikaelson  
       2024-01-24 22:28:49 +08:00
    还以为出 mac 版本了
    ylovesy
        2
    ylovesy  
       2024-01-24 22:36:44 +08:00
    太强了
    CivAx
        3
    CivAx  
       2024-01-24 23:23:49 +08:00   1
    @bywenshu sir, this way.
    hapeman
        4
    hapeman  
       2024-01-24 23:51:45 +08:00
    有一次服务重启之后登录就要重新创建角色,op 知道是怎么回事吗? 当时我在线上然后重登要创建角色,我朋友离线我让他试了重登,他的存档还在
    hapeman
        5
    hapeman  
       2024-01-25 00:01:22 +08:00 via iPhone
    linux 可以用你这个 docker image 吗?
    locoz
        6
    locoz  
       2024-01-25 00:16:12 +08:00 via Android
    拿内存比金子贵、单核性能也不出色的 M 芯片 Mac 跑这服务端,还是跑在虚拟机里…玩个游戏而已,何必这么折磨自己。有这折腾的功夫其实还不如找人租个正经机器跑服务端,像我这都给朋友开了好几个了,随便拿个淘汰服务器就能跑得挺流畅。
    locoz
        7
    locoz  
       2024-01-25 00:17:37 +08:00 via Android
    @hapeman #3 可能只是碰到什么 bug 导致坏档了而已,客户端有人物存档备份的,可以试着覆盖到服务端上看看。
    hapeman
        8
    hapeman  
       2024-01-25 00:41:44 +08:00 via iPhone
    @locoz 我试了,直接替换存档不行。
    看别人说是要把备份文件转成 json 然后再替换里面的 guid ,再转回去 sav 文件。
    但是我自己运行那个脚本说我的 guid 不对还是啥的。github 仓库是:/xNul/palworld-host-save-fix

    另外 reddit 上说 win 下的服务端好像问题比 linux 少
    lslqtz
        9
    lslqtz  
       2024-01-25 01:31:16 +08:00
    内存比金子贵是真的, 单核性能不出色就有点搞笑了吧?
    Cinebench 2024: M3 单核性能和 i9-14900K 一样. M2 单核性能和 i9-13900/R9-7900X 一样. M1 单核性能和 i5-13500 一样, 略高于 R7-7700/i7-1700. (Source: https://www.cpu-monkey.com/en/cpu_benchmark-cinebench_2024_single_core)
    Geekbench 6: M3 单核性能比 i9-13900K 高, 接近 i9-13900KS. M2 单核性能介于 i9-12900 和 i9-12900K 之间. M1 单核性能介于 i9-12900T 和 i9-11900KF 之间.
    lslqtz
        10
    lslqtz  
       2024-01-25 01:33:45 +08:00
    最近看到不少开 PW 服务器的, 这服务器似乎内存是个大问题.
    中途重启服务器的话应该是会打断用户连接的吧, 所以定时重启服务器是个不错的选择, 但是如果要足够长的间隔的话应该还是要有一定的 Buffer 去满足泄漏要求...

    另外如果是 IPv6 的话端口映射变为打开防火墙即可.
    grimbedroom
        11
    grimbedroom  
       2024-01-25 09:27:12 +08:00
    问题这二逼游戏也不吃 cpu ,就内存泄露就够一壶了
    yiios
        12
    yiios  
    OP
       2024-01-25 10:36:41 +08:00
    @hapeman 甲骨文的 arm 实测也可以用,但是非 arm 架构的不确定能不能用这个镜像
    yiios
        13
    yiios  
    OP
       2024-01-25 10:39:49 +08:00
    @lslqtz 他这个内存泄露是跟着用户走的,有用户进来之后就会涨内存,定时重启不能完全解决问题。而且有点傻,内存超限重启体感还好一点。

    @locoz 主要是给手边有闲置 Apple silicon 芯片的 mac 设备写的,我知道有很多人拿 arm 的 mac 做软路由之类的。单独买 mac 跑这个当然没必要。
    hapeman
        14
    hapeman  
       2024-01-25 11:41:46 +08:00
    @yiios 使用 docker 部署 如果后续官方服务端更新了,本地要怎么更新呢 大佬
    yiios
        15
    yiios  
    OP
       2024-01-25 11:50:02 +08:00
    @hapeman 看 docker 镜像的维护者更不更新 https://hub.docker.com/r/czy0612/palworld-server 。如果更新了,你 docker-compose pull 拉一下,重启容器就行了。
    如果不更新的话,就麻烦一点,需要找一个新的支持 arm 的镜像替换。路径什么的需要改一下
    locoz
        16
    locoz  
       2024-01-25 13:35:04 +08:00
    @yiios #12 主要是体验上不是特别好,并且价值上比较浪费,倒不是说是否专门拿个 Mac 跑这东西有没有必要。
    locoz
        17
    locoz  
       2024-01-25 13:38:20 +08:00
    @hapeman #7 官方有个 FAQ 文档,里面有提到存档相关的问题,你可以去看一下。文档从游戏刚打开时的那个弹框页面里就能进。
    ErYiii
        18
    ErYiii  
       2024-01-25 13:43:40 +08:00
    @hapeman 丢存档了撒,角色存档是一人一个存档文件,可能你朋友的那个还在,你的没了
    locoz
        19
    locoz  
       2024-01-25 13:50:07 +08:00
    @lslqtz #8 从我 M1 Pro 的实际使用体验来说,没法受到硬件加速增益的场景确实都是不怎么样的,有时候都是靠着内存和 SSD 的速度在硬顶...比如跑 Minecraft 的大型科技类整合包的客户端和服务端,多核带来的增益很小,主要就是看单核性能,在 M1 Pro 单核跑分比 E5-2667 V4 看起来是翻倍的情况下,M1 Pro 跑出来的效果也没有比 E5-2667 V4 好多少,但实测 Intel 的高单核性能消费级 CPU 跑得就是快得明显。虽然说这其中可能涉及针对性优化的问题,或者是指令集之类的问题,但实际使用的体验就是单核性能不尽人意,即使是生态发展了这么久也还是跑不出在跑分中那么明显的优势。
    hapeman
        20
    hapeman  
       2024-01-25 15:11:06 +08:00
    @ErYiii
    @locoz
    我用 github 上的工具把 sav 转成 json 看了这游戏的存档,宠物道具什么的信息都是所有人存在一个文件里然后在个人的 cav 文件里关联过去的,那次不知道为什么直接把我原来的档给替换掉了,我的存档里道具什么的 guid 估计都重新生成了 我服了
    hapeman
        21
    hapeman  
       2024-01-25 15:18:54 +08:00
    @ErYiii 本地的存档还有一堆 Byte 数组没编译的,不知道要干嘛
    bywenshu
        22
    bywenshu  
       2024-01-29 19:44:37 +08:00 via Android
    @CivAx 谢谢!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4936 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 89ms UTC 09:35 PVG 17:35 LAX 01:35 JFK 04:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86