Dread Hunger

Dread Hunger

View Stats:
KilluaAoki Jan 2, 2024 @ 5:13am
Dread Hunger 服务器搭建技术交流 & 常见问题解决汇总贴
前言

本文基于官方给的教程修改,在原文档上缺失的步骤做了扩充,并且用了更通俗的语言表达。

同时本文也罗列了一些目前联机所出现 BUG 的解决方案。

任何一系列对于盗取他人成果进行售卖者,请抵制!!!!!!

对于最新的动态会在讨论区更新,并且也会重新编辑正文。为了显眼会放在此处,初次观看请先从下一个标题开始看。

2024/01/04 - 更新 - 目前官方 Discord 社区的 KrokZombie 成员提出:官方团队会在 2024/01/08 着手解决服务端 BUG 的问题。

2024/01/04 - 更新 - 由 B 站 UP 主 绝啦懒惰猪 开发的服务端补丁成功解决狼人无技能的 BUG,不再需要大退,以下是其相关视频简介:经过两天研究,成功热补丁服务器,解决狼人无技能bug,不用大退,全程可语音。windows/linux服务器都可补,视频中演示了linux服务器。目前仅招募少量玩家测试服务器稳定性,免费开放测试,名额有限希望参加的朋友可以联系,热爱此游戏的玩家或者主播优先内测。详细可以去看他的视频或加 Q 群:362390709。

2024/01/05 - 更新 - 由 Reincarnation 制作的补丁成功解决狼人无技能的 BUG,预估将来有一系列的补丁发布,原理与 B 站 UP 主 绝啦懒惰猪补丁相通,详细 Q 群:421015336。

关于服务器购买以及内网穿透

针对于没有公网 IPV4 的用户,购买服务器方案最简单,购买时选用带有公网 IP 的,地区选择离自己近的,配置随意,目前观测单房间占用资源并不高,如果有多人多房间需求需提高带宽(还需解决端口问题)。

阿里云、腾讯云等云服务器商都可以,对于学生有优惠以及试用,新用户也有优惠,自行探索。

服务端与客户端连接协议为 UDP。

由于游戏输入 IP 界面限定死 IPV4,所以具有公网 IPV6 的用户即使服务端支持也无济于事。

关于内网穿透 FRP 以及 STUN 等方案目前均会因为客户端限定连接 7777 端口失败。针对解除客户端连接端口的限制可以看下方 "关于客户端端口限定 7777" 的解决方案,利用绕过端口限制等可以解决内网穿透失败问题。

虚拟局域网方案:利用 ZeroTier 或者 N2N 的方案创建虚拟局域网环境再进行互联,这样应该是可行的,但这在一些虚拟局域网软件上需要 8 个人均使用统一软件,具体可百度 ZeroTier 以及 EasyN2N 小黄鸭。

关于客户端端口限定 7777

以下是针对于游戏客户端连接服务端端口限定为 7777 导致单服务器只能支持单房间的解决方案。

解决方案目前大致分为以下几种:
        
  • 在游戏客户端基础上开发程序解决端口限定。
        
  • 虚拟局域网分配各小组虚拟 IP。
        
  • 客户端端口转发。

一定程度上,所有针对于客户端下手的方案,都需要在客户端主机统一安装软件,请各位注意各种第三方未知来路的程序,其可能注入病毒,自行辨别。

对于以上的第一种方案,已有 B 站 UP 主 绝啦懒惰猪 实现,由他初步开发的程序(未开源)实现了在个人开发的程序上输入 IP 直接进入房间的功能,其也提供利用 frida 解决了游戏人员需要大于等于两人才让开游戏的限制(跳过打牌)的方案。此客户端程序加快了狼人大退游戏重新连接的速度、解除端口限制等,根据此程序的思路或许也能支持 IPV6。

以下是 B 站 UP 主 绝啦懒惰猪 视频的简介:通过动态 Patch 服务端的办法,修改服务器的一些状态达到我们想要的目的,本例是解除了 2 人以上才能开船的限制,强制更改对局状态为 InProgress。初衷是解决目前官方发布的服务器无法给狼人分配技能的问题,长远来看可以修改一些限制,比如不让进入某块区域,指定条件解锁大枪,调整物资刷新率等等。有感兴趣的老铁可以去他的视频观看。

对于以上的第二种方案的大致实现:通过建立虚拟局域网软件 EasyN2N 小黄鸭连接同一个中继服务器,建立虚拟局域网环境,然后以分组的方式进行分配虚拟 IP。连接同一小组内的虚拟 IP 服务端主机,从而实现同一小组成员之间互联,而不同小组直接分隔。这样规避了限定 7777 端口的相关问题,实现同一服务器多人多房间,游戏服务端架设在自己的电脑上即可。

以上第二种虚拟局域网方案是个人比较推崇的,即便需要客户端所有人安装统一软件,但是好处也很显然的,参考 文明 6 等游戏的联机,这种联机方案已经比较成熟了,不需要再重复开发程序。社区统一联机方式后,也能方便管理和统一教程。

如果官方能解决端口限定的话就不用那么麻烦了。

有更好的方法可以评论,顺便顶顶帖。

游戏内操作

房主:
        
  • 前往船长室内的桌子,打开地图,选择地图和自定义的游戏设置,勾选 公共 时为公开房间,取消 公共 时为私人房间。
        
  • 等待玩家加入你的大厅。
        
  • 当玩家自定义了他们的装扮以及技能之后,启动锅炉。
        
  • 驶出港口。
        
  • 出现连接界面时,输入 IP 地址,将房间内的所有人连接至服务器。如果不输入端口号,则端口号自动设置为 7777。

其他人:
        
  • 找到你想要加入的大厅或者通过 Steam 加入你朋友的大厅。
        
  • 自定义装扮以及技能。
        
  • 登船,等待房主驶出港口。

服务器搭建

在游戏安装文件目录中有两个新文件夹。

一个叫做 LinuxServer,另一个叫做 WindowsServer。

只需要运行其中一个来设置游戏服务器。

Linux

创建 Shell 脚本,以便轻松启动游戏服务器。

Windows

可能需要安装一些必需的库。这些库可以通过 Engine > Extras > Redist > en-us 文件夹中的 UE4PrereqSetup_x64 安装。

创建快捷方式,以便轻松启动游戏服务器,在命令行参数中添加 -log,使控制台窗口出现。

服务器参数设置详细

服务器通过命令行参数进行设置。

对于部分参数有设定无效的情况,请自己测试。

三个地图参数为:
        
  • 入口:Approach_Persistent。
        
  • 峰顶:Departure_Persistent。
        
  • 代价:Expanse_Persistent。

自定义服务器设置参数为:
        
  • -daysbeforeblizzard:距离暴风雪开始的天数(范围:2 - 7,默认:3)。
        
  • -dayminutes:一天的分钟数(范围:5 - 16,默认:9)。
        
  • -predatordamage:熊的伤害倍率(范围:0.25 - 3,默认:1)。
        
  • -coldintensity:寒冷强度(范围:0.25 - 3,默认:1)。
        
  • -hungerrate:饥饿速度(范围:0.25 - 3,默认:1) 。
        
  • -coalburnrate:锅炉燃煤消耗率(范围:0.1 - 2,默认:1)。
        
  • -thralls:内奸阵营人数(范围:0 - 8,默认:0.25。疑似错误,大厅自定义地图中默认为 2,未进行测试,可能也有指代比例的意思,这样的话默认值就是对的,但是范围应该为 0 - 1,自行测试正确性或保持默认)。
        
  • -port:设置监听端口(服务器防火墙放行对应端口,经过测试,不论服务端设定什么端口参数,客户端输入什么端口,依旧连 7777)。

自定义船皮:
        
  • 先运行游戏,自定义船皮。
        
  • 自定义船皮后,退出游戏。
        
  • 打开游戏数据保存的文件夹。按下 Windows + R 打开运行菜单。运行 %appdata%。前往 AppData > Local > DreadHunger。将 Saved 文件夹复制到 LinuxServer 或者 WindowsServer 文件夹内的 DreadHunger 文件夹中。

为了防止奇怪的 BUG,自定义房间时房主需要严格对照自定义地图参数和服务器端的参数,确保每一步游戏内操作时的服务端和客户端正确,并且确保所有人的技能已经设置(或许需要统一)、严格按照官方给的操作步骤执行(文章开头的游戏内操作)等等。

对于狼人无技能的情况,ALT + F4 退游戏重连后可以概率性出现,但这种方式在特殊情况下也会出现断线无法连接、黑麦等问题,或许得等官方解决,不过看起来人已经摆了。

Linux 服务器示例

对于运行一次就结束的情况,可以写脚本在退出后重新启动。以下的示例脚本给出了简单的常驻运行的 Shell 脚本,可以自行扩展使用方式。

可以简单的结合 screen 命令可以实现多开(前提是官方肯修端口限制的 BUG),自行修改脚本参数防止冲突,暂未测试多开时能否使用同一文件,不过这样有问题的话也能拷贝服务端文件副本实现多开。

可以自建 Docker 容器等,方便服务端部署。

执行脚本时需要为非 root 用户。

以下是峰顶地图的示例 ( 常驻运行,要使开机自启请自行设置,设定了所有官方给出来的参数,可以自行删除不需要的,内奸阵营人数按照上述的比例说法设置为 0.25 ):
#!/bin/sh while true; do UE4_TRUE_SCRIPT_NAME=$(echo \"$0\" | xargs readlink -f) UE4_PROJECT_ROOT=$(dirname "$UE4_TRUE_SCRIPT_NAME") chmod +x "$UE4_PROJECT_ROOT/DreadHunger/Binaries/Linux/DreadHungerServer-Linux-Shipping" "$UE4_PROJECT_ROOT/DreadHunger/Binaries/Linux/DreadHungerServer-Linux-Shipping" DreadHunger Departure_Persistent -port=7777 -daysbeforeblizzard=3 -dayminutes=9 -predatordamage=1 -coldintensity=1 -hungerrate=1 -coalburnrate=1 -thralls=0.25 "$@" sleep 10 done

Windows 服务器示例

以下是峰顶地图的示例 ( 常驻运行 bat 脚本,示例为相对路径,请确保脚本所在的目录包含了要执行的 DreadHungerServer.exe,可以自己更改为 vbs 或者更改 bat 脚本参数,要使开机自启请自行加入启动项 ):
@echo off :START DreadHungerServer.exe Departure_Persistent -port=7777 -daysbeforeblizzard=3 -dayminutes=9 -predatordamage=1 -coldintensity=1 -hungerrate=1 -coalburnrate=1 -thralls=0.25 -log timeout /t 10 /nobreak >nul goto START
Last edited by KilluaAoki; Jan 5, 2024 @ 7:58am
< >
Showing 1-15 of 17 comments
打死不炖汤 Jan 2, 2024 @ 6:33am 
希望官方的人元旦放完假能给点力 最后为这个游戏做点事把
KilluaAoki Jan 2, 2024 @ 6:42am 
Originally posted by 打死不炖汤:
希望官方的人元旦放完假能给点力 最后为这个游戏做点事把

hhh 估计没什么希望。
搬煤 Jan 2, 2024 @ 7:23am 
自定义端口号不行,无论填了哪个端口号客户端还是会去连7777端口号
KilluaAoki Jan 2, 2024 @ 7:35am 
Originally posted by 搬煤:
自定义端口号不行,无论填了哪个端口号客户端还是会去连7777端口号
嗯嗯 更新主楼了,服务端日志里修改是成功的,猜测是客户端写死了。
Last edited by KilluaAoki; Jan 2, 2024 @ 12:17pm
KilluaAoki Jan 2, 2024 @ 12:23pm 
对联机方案感兴趣的话可以提供思路,另外有闲的人可以建一个统一的社区,方便所有玩家交流,希望能让这游戏活下去吧。路过记得顺便顶一下帖子,容易沉。
JW W1SH Jan 2, 2024 @ 1:33pm 
官方DC群看起來是沒什麼希望了 雖然說管理員有說已經通知"有辦法修復的人"(應該是置頂的snake 而他人現在在epic 所以伺服器檔案的署名是epic 上班摸魚實槌) 但是也就只是通知 就連DC群管理員也不知道任何進度 就連有沒有進度都不知道
說實在的 遊戲關服1個月前下架 工作室在關服2個禮拜前解散 沒人有義務要修這個他最後趕出來的伺服器檔案 同時他們也沒公布任何的原代碼 所以沒人有辦法幫他們修 只能像其他老遊戲一樣自己寫一個出來
不過也說了這遊戲下架了 不可能再有新血(雖然早就沒有了 謝謝看到新手就跳海或是幫他們跳海的各位)
最後的一點點希望只有snake修復伺服器 不過更新跟貼文看起來是排程的 希望是真的有辦法更新
還有 非官方DC群有個MOD區 希望他們能有一些方式修復這些問題
Last edited by JW W1SH; Jan 2, 2024 @ 5:31pm
Dang Jan 2, 2024 @ 2:44pm 
通过官方给的-port=参数修改了端口 除了设置7777 其他所有端口都是无法连接的。。
stephen Jan 2, 2024 @ 3:56pm 
自定义参数 修改天数 狼人那些 不生效啊
Cook's cold Jan 2, 2024 @ 4:37pm 
thank you for your hard work hopefully we can unify and fix this!
Sorry but i'm host game. But my thralls dont use spells. And if recconect it's a fix it
KilluaAoki Jan 2, 2024 @ 11:11pm 
Originally posted by 当当:
通过官方给的-port=参数修改了端口 除了设置7777 其他所有端口都是无法连接的。。
嗯嗯 文档里写了
KilluaAoki Jan 2, 2024 @ 11:14pm 
Originally posted by 代价纯推船生存(能开:
自定义参数 修改天数 狼人那些 不生效啊

生效的 比如官方示例的暴风雪前 1 天测试,修改参数时,自定义地图时确保服务端和客户端对应,也可以试试公共时直接在服务端指定参数。
KilluaAoki Jan 2, 2024 @ 11:18pm 
Originally posted by Жопа Васи:
Sorry but i'm host game. But my thralls dont use spells. And if recconect it's a fix it

Indeed, reconnecting to the game is currently the workaround for this issue, but sometimes it may lead to other difficult-to-resolve problems, so we can only hope for an official fix.
stephen Jan 3, 2024 @ 9:29pm 
Originally posted by KilluaAoki:
Originally posted by 代价纯推船生存(能开:
自定义参数 修改天数 狼人那些 不生效啊

生效的 比如官方示例的暴风雪前 1 天测试,修改参数时,自定义地图时确保服务端和客户端对应,也可以试试公共时直接在服务端指定参数。
不生效啊
KilluaAoki Jan 3, 2024 @ 10:45pm 
2024/01/04 - 更新 - 目前官方 Discord 社区的 KrokZombie 成员提出:官方团队会在 2024/01/08 着手解决服务端 BUG 的问题。
< >
Showing 1-15 of 17 comments
Per page: 1530 50