Skip to content

Repository files navigation

Civ 6 公网 UDP 中继

Civ6Relay 让 2–8 名玩家通过一台公网 Linux VPS 使用 Civilization VI 的“局域网”模式联机。每名玩家运行 Windows 客户端;客户端通过 WinDivert 捕获房间发现和游戏 UDP 包,中转服负责按房间与玩家转发。

当前状态:协议、中转服务、Windows 客户端、发布打包和自动化测试已经完成。正式使用前仍需在不同 NAT 的真实 Windows 电脑上完成 Civ 6 双机及多人验收。

功能

  • 转发 62900–62999 房间发现广播并保留原始 LAN 广播。
  • 透明转发 UDP 62056 游戏会话,不与 Civ 6 抢占端口。
  • 支持 2–8 人、房间码、成员列表、RTT 和流量统计。
  • 支持 HMAC 身份验证、重放保护、NAT 地址更新和大包分片。
  • 提供 Windows x64 GUI、Linux Docker Compose 和 systemd 部署文件。

五分钟开始

1. 部署中转服

在拥有公网 IPv4 的 Linux VPS 上开放 UDP 42056,然后从工程根目录运行:

docker compose -f deploy/docker-compose.yml up -d --build

如果构建停在拉取 python:3.12-slim 并提示 auth.docker.io ... timeout,这是 VPS 无法访问 Docker Hub,而不是项目编译错误。配置可信镜像加速,或改用下面的 Python 方式;详见 Linux 中转服部署

没有 Docker 时可直接运行:

python3 -m venv .venv
. .venv/bin/activate
pip install .
python -m civ6relay.server --listen 0.0.0.0:42056

2. 启动 Windows 客户端

解压整个 Civ6RelayClient-windows-x64.zip,不要只复制 exe。以管理员身份运行:

Civ6RelayClient\Civ6RelayClient.exe

所有玩家填写同一个 VPS公网IP:42056 和各自昵称。房主点击“创建房间”,其他玩家输入房主发来的 10 位房间码并点击“加入房间”。

3. 在 Civ 6 中联机

  1. 确认工具成员列表里所有玩家均为“在线”。
  2. 房主进入“多人游戏 → 局域网”并创建游戏。
  3. 其他玩家打开或刷新“局域网”列表,选择房间加入。
  4. 进入大厅后确认版本、DLC、模组完全一致,再开始游戏。

文档

开发

Windows 源码运行:

python -m pip install -e ".[client]"
python -m civ6relay

开发检查依赖:

python -m pip install -e ".[client,dev]"

构建 Windows 发布包:

.\build_client.ps1

运行检查:

python -m unittest discover -s tests -v
python -m ruff check civ6relay tests run_client.py
python -m compileall -q civ6relay tests

研究参考:injciv6Civ6 L3 Discovery HelperWinDivert 文档

About

一个简单的CS架构文明6联机软件

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages