在有 VPN 的局域网环境直接通过 IP 联机 Assetto Corsa (神力科莎)

这是一篇简短的记录型文章,适用场景是:希望在一个由 VPN 建立的局域网的情况下通过 LAN 联机 Assetto Corsa (神力科莎)。

最近由于贴上贴纸之后跑圈太快了(https://twitter.com/n0vad3v/status/1451831371664543746),导致某个同事要来挑战我,于是第一反应就是,来嘛,搞一把!

在通过 Nova-China-Overlay-Network(一个走 Wireguard 的大内网)让同事连入家里内网之后,同事的电脑已经可以 ping 通我家里的网段了(同事住所网段:192.168.1.0/24,我家里网段:192.168.2.0/24),他的 Wireguard 配置类似如下:

[Interface]
Address = 10.0.0.200/24
ListenPort = 51820
PrivateKey = INoxxxxxxxxxxxxxxxxxxxxxxxxxBWw=

[Peer]
PublicKey = w+g1uxxxxxxxxxxxxxxxxxxxxxxxxxuSYyo=
Endpoint = nova-china-network.xxxxxx.network:51820
AllowedIPs = 10.0.0.1/32, 192.168.2.0/24
PersistentKeepalive = 15

但是在正常启动 Assetto Corsa 之后发现 LAN 中根本没法看到我这边架设起来的服务器,于是盲猜——Assetto Corsa 可能是只扫描的网卡段,没法正确识别可路由段导致的,比如在这个场景下它只扫描了 192.168.1.0/24,而不知道 192.168.2.0/24 的可达性。

这种问题之前在联机 ARMA3 时也有遇到,但是 ARMA3 给出了解决方案——Direct Connect,直接输入对方 IP 进行访问,作为自己扫描器不足的一个 workaround,但是 Assetto Corsa 并不这么认为,并且不给一个简单的 Direct Connect 的方式,这就很愚蠢了…

解决方式

  1. 确认 VPN 已经联通(可以 ping 服务器 IP)
  2. 找到 AssettoCorsa.exe 并创建一个快捷方式,比如丢在桌面,然后在 Target(目标)后面加入 /spawn,类似这样: "C:\Program Files (x86)\Steam\steamapps\common\assettocorsa\AssettoCorsa.exe" /spawn
  3. 在自己用户的「Documents(文档)」目录下找到 race.ini 文件,一般来说路径是这样的: C:\Users\Nova\Documents\Assetto Corsa\cfg\race.ini,并且注意文件内部的 [REMOTE] 的部分,改为以下:
[REMOTE]
SERVER_IP=192.168.2.44
SERVER_PORT=9600
SERVER_NAME=NKW Server
SERVER_HTTP_PORT=8081
REQUESTED_CAR=bmw_z4_gt3
NAME=Nova
TEAM=
PASSWORD=somepassword
GUID=999999999999999
ACTIVE=1

[AUTOSPAWN]
ACTIVE=1

其中,SERVER_IP 是服务器 IP,SERVER_PORT 默认是 9600,PASSWORD 需要和 NAME 需要手动设置一下,REQUESTED_CAR 这个车辆代码可以在游戏目录下 content\cars 目录下找到(文件夹名字就是车的名字)。

  1. 然后点桌面快捷方式直接启动即可,这个时候会直接进入游戏并连接上服务器(不会有任何菜单等)

提示:每次关闭游戏后 [AUTOSPAWN][REMOTE] 下的 ACTIVE 会变成 ACTIVE=0,每次启动前需要手动修改为 1.

开冲!

Reference

  1. Author Topic: Joining AC servers directly when the lobby is down (Read 8098 times)