关于当前游戏联机问题的分析以及解决思路
深岩银河吧
全部回复
仅看楼主
level 14
Gbread💤 楼主
(Part1)国内玩家受限于各种各样的drg游戏网络问题。然而,如今大多数解决网络问题的工具无法完全解决问题。目前没有任何一个自动化工具,能够帮助没有任何专业知识的人去自动实现全过程。然而,如果某些人有一定基础,具有一些相关知识,实际上还是存在某些解决方法
该贴旨在从稍微底层的角度,大致解释当前游戏所会遇到网络问题的原因,并提供大致解决思路。目前自己没那么多时间去写一篇保姆级别教程或者开发一款高度定制化的工具来帮助常规玩家去解决网络问题,因为有太多基础知识需要科普,而且还不方便说。尽管如此,这篇帖子可以帮助一些有基础的人了解当前自己的网络问题并进一步改善。通过这些说明,可以去更好地排查当前网络问题、提升当前游戏体验、或者去帮助其他人
目前我所说用的这个方法可以一定程度上降低了网络问题的出现频率,当加其他人房间时。这个出错频率大致比U35之前会遇到的频率大一点但在可接受范围内。Mod 访问已经没什么问题了。虽然游戏过程中仍然会出现一些网络问题,但根据自己排查那是房主的问题而不是自己的原因。比如自己加入其他人房间后,游戏过程中掉线,重新加入相同房间发现其他人也全掉了。并且自己可以加其他游戏房间。通过这些现象可以大概率推断出是房主网络问题
这里提到的部分原文来自https://www.bilibili.com/video/BV1aF411c7Em下面的评论。这里会进一步补充、改善它
2022年06月22日 13点06分 1
level 14
Gbread💤 楼主
(Part2)一些前提注意事项
1. 部分陈述是基于推理得到的,可能没有什么确凿的证据。因为自己通过帖子所提到的方法已经把网络问题降低到了自己可接受的范围,所以就没有细查。这类陈述一般会有”可能”和”猜测”关键字
2. 考虑到吞楼和自己重新编写文本的可能性。这里会用序号(Part1,Part2…)来表示这个帖子说明顺序,以方便阅读
2022年06月22日 13点06分 2
level 14
Gbread💤 楼主
(Part3)当前游戏需要同时解决多种访问问题才能正常进行游戏。大致上说,从游戏正常启动到正式连接到其他玩家房间过程中,根据主机所联系的网络对象,大致可以分为以下几个阶段
1.启动游戏时,游戏安装、更新、验证mod。游戏进程会提前跟其他某些网站联系,比如discord
2.游戏画面出现后,游戏通过联系游戏服务器来获取游戏房间列表
3.点击游戏房间时,自己的主机尝试获取房主IP。之后与房主主机进行通信,之后加入游戏
4.如果自己创建房间,那么就是把自己IP告知游戏服务器。之后其他人就可以通过游戏服务器来获取自己IP,从而与自己通信
从这里可以看到,为了能够加入别人的房间或者让别人加入自己的房间,客机需要借助中心服务器来知道房主的IP。在当前这个游戏上下文中,除了上面提到游戏本身自带的游戏服务器可以获取到房主IP,中心服务器还可以是steam上的好友列表(本人只能想到这两个)。虽然这个游戏是P2P游戏,但是客机仍然需要借助中心服务器来获取到房主的IPv4。整个过程中,我们需要保证整条网络链没有问题。任何一个环节出问题都会导致联机失败。整条网络链的大致过程就是
1.房主创建好房间,把自己的IP以及相关信息发给中心服务器。中心服务器既可以是游戏内含的服务器(即服务器、游戏房间列表),也可以是steam上的好友列表
2.客机通过相同类型的中心服务器获取到房主IP
3.客机和房主建立联系。成功后,客机就可以加入到游戏房间
正常情况下,这三个步骤会在用户不知情的情况下自动完成。然而这里为了分析网络问题,我们需要在这里指出。值得一提的是,客机和房主都需要跟中心服务器成功联系。假设房主不能与服务器列表通信,那么就算他自己开了房间,客机哪怕能够刷新服务器列表也不一定知道这个房间的存在
2022年06月22日 13点06分 3
level 14
Gbread💤 楼主
(Part4)而在整个过程中,游戏会根据域名与多个服务器通信(可以通过抓包得知。之后这些域名可能会变)
1.mod.io (或者其子域名api.mod.io): 游戏会在启动时联系这个网站,从而安装、更新mod。之前游戏的鲁棒性不佳。游戏没有考虑”如果没有连接到mod.io”的非预期情况,最终导致了游戏黑屏现象
2.drg.ghostship.dk: 游戏正常启动时也会自动去联系这个网站。个人没去细查这台主机在游戏中的意义
3.services.ghostship.dk:游戏会联系这个域名出现在许多场景中。包括但不限于
3.1.获取、刷新服务器列表
3.2.加入其他人房间也会需要通过它来获取到房主IP。注意获取房主IP还有其他方式,比如通过steam好友的加入功能
3.3.当自己开房间时,也需要跟这个服务器通信并告知自己IP以及其他相关信息,以表示“自己开了一个房间,大家快来玩“
4.steam相关的网站 : 游戏也会与steam相关网站进行联系。这会发生在多个场景中,比如游戏同步云文件、用户访问到商店、用户获取好友列表等等。虽然按照上面的应用场景来看,会感觉这类网站似乎并不是一个必须要解决的访问问题。然而,个人建议最好还是要考虑一下,因为自己在加入游戏房间时,通过抓包发现游戏进程偶尔会去联系某些steam相关域名。另外,考虑到steam有不少功能本来就不可用,解决他们也可以进一步提高游戏体验
而这里面的域名比较多且复杂。可以自行抓包得知。这里可出少许例子仅供参考。不同地方会联系的域名可能会不同
[1]steamuserimages-a.akamaihd.net
[2]steamcloud-hkg.oss-accelerate.aliyuncs.com
[3]api.steampowered.com
[4]steamcommunity-a.akamaihd.net
[5]steamcdn-a.akamaihd.net
5.其他 : 游戏还会联系一些额外网站,比如discordapp、live.com 等。可以通过自行抓包来查找
2022年06月22日 13点06分 4
level 14
Gbread💤 楼主
(Part5)而正常情况下,当前游戏可能无法访问到前面提到的五类网站。其具体体现在于
1.mod.io: 黑屏(出现在早期,如今可能没了)、无法更新mod、mod界面一直在转圈圈
2.drg.ghostship.dk: 前面提到过,个人不太清楚联系这台主机在游戏中的意义,虽然它是鬼船官方网站。不过个人猜测,”退出队伍之后游戏画面变黑但不会跳到初始化界面”可能跟这个有关
3.services.ghostship.dk :服务器列表一直在转圈圈,或者 ”点击房间后显示参加(但没有取消选项),过了一段时间显示多人游戏已经停止(个人猜测是因为无法获取房主IP) ”。个人猜测加入失败(unknownXXXXX) 也可能是这个原因
4.steam相关的网站 :无法同步云文件、无法访问商店、无法获取好友列表。加入游戏失败可能跟这个也有关系,因为自己抓包时偶尔发现游戏会跟这类网站通信
5.其他: 自己没细查,不太清楚这类网站对游戏是否有影响。可能无法参加游戏中那3个工会任务会跟这个有关?
从这里可以看到,我们需要做的事情之一就是尽量保证能够访问到这5类网站(主要以前四类为主)
注意,尽管这里假设用户都无法访问到所有上述提到的网站,但部分地区可能可以直接连接上面提到的某些网站。正常情况下,用户是否能够直接访问到网站得根据当地ISP政策,因此各地所不能访问的网站会有所不同。不过,个人根据多定ping测试发现大部分地方都无法访问(从4月开始查,截止到当前发帖时间)某些域名。注意这个测试准确率并非100%,因为多地ping测试是基于IP协议,而不是TCP和UDP协议
这里拿services.ghostship.dk(游戏获取游戏房间时会联系的域名)为例。结果可以参考
ping.chinaz.com/services.ghostship.dk
再次强调一下,部分地区能够访问到上面某些网站的域名是很正常的。但是处于理论分析,这里需要假设用户都无法访问到所有上述提到的网站,否则所提出的解决方案可能只会作用于部分地区的用户
2022年06月22日 13点06分 5
level 14
Gbread💤 楼主
(Part7)说完第一个工具,再说第二个工具
2. Game Booster:可以解决上面提到的部分游戏问题(比如获取不到服务器、可以加入游戏房间),因为它让当前主机成功访问到了游戏本身自带的游戏服务以及steam上的好友列表。然而它的主要缺点是延迟,因为游戏流量也走了转发流量的服务器。对于P2P游戏,这个工具反而会增加延迟。这体现在,当自己开了这个工具时,加别人房间时自己卡 ;自己开房间别人卡。如果房主和客机所连接的服务器距离之间比较远会造成比较大的延迟。外加上U35中部分游戏效果由房主的主机实现(比如抛掷物,连飞斧子如今非常不顺可能就是因为这个原因),高延迟会带来更差的游戏体验
跟第一个工具类似,也有稳定性问题。然而如果这个工具不稳定,其所造成的影响要比第一个工具更高,因为游戏流量也走转发流量的服务器。如果服务器断了或者有网络波动,就会影响到当前主机的延迟甚至导致主机掉线
值得一提的是,这两个的原理跟magic一样,虽然三者细节会有所不同。许多文章为了用户的需求以及避免过深的原理,因此只会告知用户 "下载XX软件,按照教程点几个按钮和选项就好了"
2022年06月22日 14点06分 10
level 14
Gbread💤 楼主
(Part8)再总结一下,为了正常游戏,客机需要知道房主IP。Part6,7提到的两个工具都从某些角度上解决这些问题,然而他们都具有一定的局限性。其中,第一个工具的特性只能让房主IP通过好友列表透露给其他人,它只能允许玩家通过"好友列表的加入游戏"的方式相互进入房间,而可能不能从游戏自带的服务器列表加入其他人房间。第二个工具虽然弥补了第一个工具的缺点,但可能会增加游戏延迟增加从而影响了游戏体验,因为第二个工具导致游戏流量也走了节点
2022年06月22日 14点06分 11
level 14
Gbread💤 楼主
(Part9)那么如何完全解决问题?结合前面提到的现有两个工具所暴露的问题,我们所要做的事情就是让主机能够成功访问到两种中心服务器(参考part3)。这样房主可以告知自己的IP,客机也可以获取房主IP。同时,我们又要避免游戏流量走节点。其中一种实现方式就是控制流量走向 : 让原本不能访问的网站(即part3提到的那几类网站)通过节点访问到; 但不能让游戏流量(即跟其他玩家的实际流量)走这些节点,从而避免增加游戏延迟和不稳定性
之后再找到可用的主机用于流量转发。这样就可以解决问题了
而其中一种控制流量走向的方法就是基于域名规则的转发。我们需要在对应的软件中编写规则就可以实现。至于怎么写规则,如果相关软件支持,软件官方会有帮助文档可供参考
2022年06月22日 14点06分 12
level 14
Gbread💤 楼主
(Part10)再说一下解决方案的大致步骤。再次强调一下,我们的目的是让前面提到的几类网站流量(参考Part3)全部走服务器,但要直接连接跟其他玩家的主机
1.确认自己的t/*读首尾字母*/z是否支持控制流量功能,以及能够查看当前主机的连接记录
2.通过查看当前主机的连接记录,找到在正式加入游戏前,游戏进程跟什么域名有联系。关于怎么查看,猫咪应用在日志log模块下,v字开头在软件正下方的日志中。个人用的是前者
3.将当前软件设置成基于规则的转发模式
4.控制流量转发。在配置里面加几条基于域名(域名就是上面第二步查看到的内容)的规则。具体所需要添加的规则数量得看所用的默认规则配置。像自己只需要加3条就好了,因为自己的默认配置文件被设置成了默认情况不会直连steam相关网站。语法可以参考应用官网
5.设置成“直接连接其他玩家的主机,而非走服务器“。玩家的主机IP往往是动态IP,因此没有绑定域名,所以跟这类主机联系会直接通过IP而不是域名。小猫咪的配置文件可能会自带这类规则因此不需要考虑这一步。不清楚v字开头应用和其他应用什么样子
6.设置完成后。调一个地理位置近一点的服务器即可。理论上说,通过前面的设置,游戏流量不会走服务器,因此无论调哪个地方的服务器都不会影响游戏延迟(就算高延迟也不是自己的问题,要么是原本自己与房主距离很远,要么房主自己开游戏加速器,导致游戏流量走了服务器)。然而,调一个地理位置近一点的服务器可以使得CN房间不会出现在远和世界的服务器列表中,从而方便找房间。同时这也可以防止自己开的房间被归类到非常远的地方(比如US)
2022年06月22日 14点06分 13
level 14
Gbread💤 楼主
(Part11)从这里看到,对于会用相关软件的人来说,要做的事情就简单了。如果用的是猫咪应用,只需要查看连接记录(log模块) ;找到游戏正常情况下会跟哪些域名通信 ;调成基于规则模式 ;把这些域名全部写到配置文件中 ;调一个稳定、较近的服务器就好了。如果嫌麻烦,可以头铁不看连接记录,直接把mod.io、 drg.ghostship.dk、services.ghostship.dk(对应part3中提到的前三种网站)写到配置文件里面。如果自带的配置文件被设置“当访问steam相关网站时走服务器节点 “,那么第四类网站也被解决了。至于第五类网站,只有当自己仍然有网络问题时,才需要考虑他们,把他们加入配置文件中。而其他软件也差不多,要做的事情本质相似,只是细节会有所不同
而网络排查又是另外一个大话题了,不太好讲。这里就暂时先不细说了。这也是一个难度较大的点
2022年06月22日 14点06分 14
level 14
Gbread💤 楼主
(Part12)一个关于part10、11的建议 :关于规则,最好写基于域名的规则,而不是写基于进程的规则。因为游戏流量可能会从steam.exe走而不是从游戏本体进程(FSD-Win64-Shipping.exe)走。如果把配置文件设置成“所有从steam发起的流量全部走服务器“,会导致游戏流量也会走服务器,这个效果就跟game booster(参考part6、7)与magic的全局差不多了。这里拿以前自己实验截图(当时实验目的是想验证drg是否的确是P2P游戏)来展示“部分游戏流量会从steam进程走,而不是从游戏本体进程“
2022年06月22日 15点06分 15
这个是否是p2p游戏,楼主有尝试退回以前版本进行测试吗?因为真挺怀疑现在是不是杀怪之类的判定放服务器上了,u35以及之前应该都不是。然后我的那楼被吞了吗?
2022年06月23日 03点06分
@已回旋(深渊领主) 上面的截图就是U35做的(大概在2月左右时)。自己没有回退到之前版本,因为做这种试验需要花不少时间。21楼的确被吞。检测是否被吞,可以找另外一个没登录过的浏览器试验
2022年06月23日 03点06分
@Gbread💤 我感觉如果要测的话,还得退更早。鬼船在u35更新之后针对飓风电浆枪之类的明显弹道武器的延迟进行了明显调整,这样的话我就猜测在某个版本(可能是聊天框会出现绿字的版本)之后,就开始让深岩银河变得不是那么完全的p2p游戏了,
2022年06月23日 03点06分
@Gbread💤 21楼是我自删的🤣22l能看到就行
2022年06月23日 03点06分
level 14
干货贴来喽,帮顶[真棒]
2022年06月22日 15点06分 16
汗。贴吧莫名其妙会触发一些奇怪的词,导致整体描述很微妙[阴险]
2022年06月22日 15点06分
@Gbread💤 度🐶是这样的[喷]
2022年06月22日 15点06分
level 14
Gbread💤 楼主
(Part13)最后,总结一下这个贴的主要内容
为了解决游戏联机问题,客机和房主都需要跟中心服务器(有两种,游戏内含的服务器列表和steam好友列表)建立联系。这需要主机能够成功访问到几类域名。部分地区能够访问到这些网站的域名是很正常的(得根据当地ISP策略而定)。但是处于理论分析,该帖子需要假设用户都无法被访问到所有上述提到的网站
"根号91204"和Game Booster(比如UU、雷神等)这两个现有的工具都有各自的局限性(不知道为什么要查这两个短语….)。第一个工具能够让玩家通过steam好友列表来互相加入游戏,但不能保证服务器列表的连通。第二个工具或许能让用户可以通过两种类型中心服务器加入游戏或者自己开房让别人加入,但是会增加延迟和不稳定性。同时,可能某些第二种工具会有一些域名、协议相关的限制条件,导致开了也不一定有用
对于有基础的人来说,可以尝试控制流量走向 :让原本不能访问的网站(即part3提到的那几类网站)通过转发流量的主机访问到; 但不能让游戏流量走这些主机节点,即我们需要让自己主机(作为客机时)直连房主或者直连客机(当自己作为房主时)。控制流量走向可以通过编写基于域名的转发规则来实现,需要在对应的软件中编写规则。至于怎么写规则,如果相关软件支持,软件官方会有帮助文档可供参考
希望自己所给出的思路能够给一些人提供改善网络思路
现在人少的时候,房间列表中5级难度可能只有6,7个空房间。有1、2个是6-7级或者mod房。还有几个延迟高的离谱(200+)的房间。剩余的可选野房只有少数了[委屈]
2022年06月22日 15点06分 18
level 11
干货帮顶 我用Tz之后能解决大部分无法加入的问题 ,我觉得应该就是你说的P3的原因
2022年06月22日 15点06分 19
我印象中你是不是直接在房间标题写明了TW节点[勉强]
2022年06月22日 16点06分
回复 Gbread💤 :对 我连香港节点直接云出国了 台湾节点还好 基本80延迟左右吧
2022年06月23日 00点06分
吧务
level 12
我小小地拐一下方向,cn的大多数玩家,还是能连得上鬼船的数据库的,但是不够稳定,开房间后和鬼船服务器断开,导致后续没人加的进来。当然房间里的人还是能游玩,毕竟这个是p2p游戏。
我猜测这个不稳定像是steam造成的。
为啥会有这种想法呢?因为cn玩家其实没法像其他玩家那样连到鬼船的数据库(鬼船的官网都上不去)。有个奇怪的现象,如果有骰子的情况下开游戏,进到游戏后,改变到hk us jp都没关系,但是把骰子给下了,会发现,立马什么房都搜不到,很难不归结为wall的原因。而同时,想要连接到鬼船的服务器,需要steam的令牌才行(这也是学习版是无法查看到公共房间列表的原因)。
所以我感觉特别是对于cn玩家来说,steam就像是客户端连接到鬼船服务器的袋里。如果这个猜测正确的话,就能解释,为什么modio不影响联机后,最近贴吧关于解决联机问题的方法依旧是302,因为302可以稳定steam的连接。
很多人加速器直接加速steam商店也有用,我想是一个作用。
再有,事实上,如果steam好友列表里直接邀请,相当于绕过了鬼船的服务器,但是为什么还会出现无法进房间的问题呢?如果是局域网或者是虚拟局域网的情况下,是100%能联机的,那这个时候steam本身连接不稳定的嫌疑就更大了。
但这个时候就有个疑问了,u35的时候steam的连接也很不稳,但是为什么不会大范围影响到联机?我想原因应该就是u36更新后关于主客机的伤害之类的判定问题。客机两三百延迟的情况下,能做到客机打死的怪在主机那一下就体现出来,客机使用飓风之类的武器对虫子进行打击,血量变化能及时响应给主机和客机(以上客机替换为主机亦然),这是单纯的p2p做不到的吧?再结合楼主P12的试验结果,我猜测部分判定放服务器上了(部分游戏流量走了steam,而如果steam是袋里的话那就去服务器了)而以前,深岩银河应该是纯纯的p2p。
所以,最根本的解决办法,如lz所说,使用其他软件来安稳连接到鬼船服务器。但是目前的话,对于大多数人来说,302或者加速器,即使他们只管steam,也是很有帮助的,因为steam负责连上服务器,用302后steam稳定,从而联机稳定。
2022年06月22日 18点06分 22
然而,针对当下严峻的网络环境的原因,个人认为并不能归咎于开发者。尽管U36早期版本的游戏把mod.io访问验证写死,导致游戏如果无法访问就黑屏(除非开-disablemodding),但之后就修复了(访问mod网站失败仍然可能会对联机有影响,但至少不是当下最严重的问题了)。自己更倾向于wall、当地ISP策略更加严格
2022年06月23日 03点06分
是啊。哪怕是通过服务器列表加房间,游戏偶尔也会联系到steam相关网站(part4有提到过,但帖子长度比较长。这勾8网站没有粗体、高亮字体功能,估计没多少人注意到…..),更别说通过好友列表添加游戏了
2022年06月23日 03点06分
在启动游戏到加入游戏过程中,游戏会联系多个域名,如果主机能够成功访问的域名越多,联机成功机率会越大(上限并非100%,因为其他主机网络状态也是其中一个因素)。我自己很少通过steam好友列表来加入游戏。因此,当时在解决问题时,自己没具体抓包、细查游戏通过steam好友列表加入游戏时会联系什么域名
2022年06月23日 03点06分
@Gbread💤 是偶尔吗[狂汗]配合你后面测试的游戏流量会走哪,这玩意理论上是个固定流程吧
2022年06月23日 03点06分
1 2 尾页