AmongUS 官方服务器在国内连总是出问题,所以得有个自建服务器
1 、 AmongUS 服务器
AmongUS 官方服务器 有三个地区的使用,分别为 北美 欧洲 亚洲
AmongUS 私有服务器 当下只有 Impostor 一种在搭建上比较常用,采用 C# 语言
2 、 Impostor 部署
官方项目地址 [ 链接 ]
注意 Docker 部署也可以,但是因为本质是个二进制文件,所以限制权限后在主机上运行也没问题。
首先这是一个第三方开源实现,其次在 Github 上的版本已经不适用于最新版
按照官方说明,最新 CI 版本的地址是 [ 链接 ]
所以 Ubuntu 20 安装的方式部署时需要下载 Impostor-Server_*_linux-x64.tar.gz
文件
由于开发者生成的二进制文件基于 NET5 所以还需要安装环境
Net5 官方安装说明 [ 链接 ]
sudo apt-get update sudo apt-get install -y apt-transport-https wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb sudo apt-get update sudo apt-get install -y aspnetcore-runtime-5.0
安装好环境后,我们部署 Impostor
mkdir /opt/amongus-server cd /opt/amongus-server wget "https://ci.appveyor.com/api/buildjobs/n34isb4fnct1kpsf/artifacts/build%2FImpostor-Server_1.7.0-ci.252_linux-x64.tar.gz" -O Impostor-Server_1.7.0-ci.252_linux-x64.tar.gz tar xf Impostor-Server_1.7.0-ci.252_linux-x64.tar.gz chmod 644 /opt/amongus-server/* chmod +x /opt/amongus-server/Impostor.Server
部署完毕后,我们需要修改服务端配置文件,参考 [ 链接 ]
{ "Server": { "PublicIp": "127.0.0.1", "PublicPort": 22023, "ListenIp": "0.0.0.0", "ListenPort": 22023 }, "AntiCheat": { "Enabled": true, "BanIpFromGame": true } }
PublicIP 和 PublicPort 是 UDP 使用的参数,由于 UDP 不像 TCP 存在重传等保障方式,发包客户端会根据这两个参数主动连接到服务器并发送数据包,所以 PublicIP=公网地址,PublicPort=公网端口
ListenIP 和 ListenPort 是本地服务监听地址和端口,默认不需要改,放着就行
中间隐藏的内容是网络层面的 NAT 地址映射转换,如果有特殊则需要开放端口和配置映射关系
AntiCheat 则是防作弊模块,比如玩家点击技能按钮的频率过高,在官方服务器就会有概率判断作弊并暂封。如果不在意或者不需要防作弊,可以关闭该功能。 Enabled=false 即可
配置完毕后,我们可以直接运行服务了。
cd /opt/amongus-server sudo -u nobody ./Impostor.Server
运行后日志如下例所示
[11:34:58 INF] Starting Impostor v1.7.0-ci.252
[11:34:58 INF] Matchmaker is listening on 0.0.0.0:22023, the public server ip is 127.0.0.1:22023.
[11:34:58 INF] Loading plugins.
[11:34:58 INF] Loaded 0 plugins.
[11:34:58 INF] Application started. Press Ctrl+C to shut down.
[11:34:58 INF] Hosting environment: Production
[11:34:58 INF] Content root path: /opt/amongus-server
默认 Impostor 服务端是会将日志放在 Console 回显 上,暂时没有办法改
停止服务器只需要 Ctrl+C 回显 Matchmaker is shutting down!
即为关闭
如果我们想长时间保持服务运行,则可以制作一个 systemd 服务文件
vim /etc/systemd/system/amongus-server.service
[Unit] Description=AmongUS Impostor Service After=network.target nss-lookup.target [Service] User=nobody CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE NoNewPrivileges=true WorkingDirectory=/opt/amongus-server/ ExecStart=/opt/amongus-server/Impostor.Server Restart=on-failure RestartSec=10s [Install] WantedBy=multi-user.target
最后还需要开放端口,直接放开 22023/udp 端口即可
firewall-cmd --add-port=22023/udp --permanent firewall-cmd --reload
此时运行服务端,即可测试使用服务器了
systemctl start amongus-server
systemctl enable amongus-server
3 、 AmongUS 客户端链接服务器
官方说明 [ 链接 ]
如果是 MOD 服务器,我们可以直接通过 Custom 手动输入服务器地址和端口访问
服务器地址可以使用 域名 或 IP
3.1 、 Windows 客户端
在代码层面,Windows 客户端的 服务器信息 是以 Json 格式储存到本地(操作前请备份原始文件)
%APPDATA%\..\LocalLow\Innersloth\Among Us\regionInfo.json
{ "CurrentRegionIdx":3, "Regions":[ {"$type":"DnsRegionInfo, Assembly-CSharp","Fqdn":"na.mm.among.us","DefaultIp":"50.116.1.42","Port":22023,"Name":"North America","TranslateName":289,"UseDtls":true}, {"$type":"DnsRegionInfo, Assembly-CSharp","Fqdn":"eu.mm.among.us","DefaultIp":"172.105.251.170","Port":22023,"Name":"Europe","TranslateName":290,"UseDtls":true}, {"$type":"DnsRegionInfo, Assembly-CSharp","Fqdn":"as.mm.among.us","DefaultIp":"139.162.111.196","Port":22023,"Name":"Asia","TranslateName":291,"UseDtls":true}, {"$type":"DnsRegionInfo, Assembly-CSharp","Fqdn":"amongus.your.domain.com","DefaultIp":null,"Port":22023,"Name":"My-Game","TranslateName":1003,"UseDtls":false} ] }
可以看出其中 CurrentRegionIdx=3 是默认选择的四号服务器 (以 0 起算),而四号服务器信息如下
{"$type":"DnsRegionInfo, Assembly-CSharp","Fqdn":"amongus.your.domain.com","DefaultIp":"172.16.1.100","Port":22023,"Name":"My-Game","TranslateName":1003,"UseDtls":false}
主要内容有四条,其中 DefaultIp 是当 FQDN 解析失败时的访问地址,可以使用 null 来忽略
域名地址 "Fqdn":"amongus.your.domain.com" IP 地址 "DefaultIp": "172.16.1.100" 服务端口 "Port":22023 游戏内显示 "Name":"My-Game"
所以如果我们想自定义服务器信息,或者添加多个服务器信息,可以手动复制条目并按 Json 格式插入添加
3.2 、移动客户端
移动客户端只能使用 URL 跳转的方式传递给 APP
amongus://init?servername=amongus.your.domain.com&serverport=22023&serverip=172.16.1.100&usedtls=false
如同 Windows 一样,手动构造这个地址并访问,将参数传递给 APP 即可