文明6等游戏虚拟局域网联机搜不到房间的解决办法
橘木依
2021年12月30日 13:10

测试环境:steam版文明6,用zerotier搭建的虚拟局域网。

理论上支持局域网联机的游戏(如MC)和其它虚拟局域网软件(hamachi,n2n)都适用这个办法。

前几天和朋友联机玩文明6,一开始用的文明官方提供的联机服务,但是官联的网络质量太差了,玩几回合就掉线。正好手上有闲置的云服务器,就搭建了一个zerotier的 Moon 中转节点组建一个虚拟局域网,联机设备都加入了虚拟局域网,防火墙也关了,能ping通但就是搜不到游戏房间。

对这种问题网上有两种解决办法,一是把多余的虚拟网卡禁用,二是调整网络接口的优先级。这两种方法的目的都是让联机设备处于同一网段(也就是虚拟局域网的网段),但是做了这些操作之后仍然搜索不到房间。

查了很多资料,了解到这种局域网联机的游戏基本上是通过向 255.255.255.255 发送 udp 广播数据包来传播游戏房间信息,但是 windows 只会在首选的网络接口上发送全局 ip 广播数据包,也就是说局域网游戏的信息没有被 windows 在虚拟局域网接口上广播。

然后找到了一个小工具:WinIPBroadcast,它会在本地监听并获取所有的全局广播数据包,然后重发到每一个网络接口上。这样就能让数据包广播到虚拟局域网,虚拟局域网内的其它客户端就能接收到房间信息,这样就能搜到房间了。

WinIPBroadcast 是一个 GPLv3 开源的小程序,在 github 上可以找到。安装之后会以服务形式自动运行,不需要任何配置。只要在联机的各个设备上都安装这个软件就能愉快的开黑了~