vswarte/waygate-server
GitHub: vswarte/waygate-server
Waygate 是一个《艾尔登法环》私人匹配服务器的实现,通过替换原版 P2P 网络层让玩家获得更便捷的在线联机体验。
Stars: 44 | Forks: 0
# Waygate :cyclone: 艾尔登法环私人服务器
Waygate 尝试实现一个基于《艾尔登法环》匹配协议的服务器。
该项目的目标是提供更原版的在线体验,同时允许用户对游戏进行 mod 修改。
Waygate **不是**一个全面翻新(overhaul),除了将游戏的 P2P(peer-to-peer)网络替换掉以使其更易于使用外,该 mod 本身并不会对在线体验进行任何增强。
我指望通过其他 mod 来实现对在线体验的调整,请不要开启功能建议,向我推销所谓“会在客观上改进 X”的调整方案。
### 警告
在过去一年中,经过大约 30-40 人的测试,尚未有人报告在官方线上游玩时被封禁,但是无法保证此服务器是完全安全可用的。
## 设置说明
### Postgresql
服务器需要一个 postgresql 数据库来存储留言、血迹、幽灵等信息。我不打算详细介绍如何设置 postgresql 数据库,因为有足够多的地方已经涵盖了这一具体操作。
不过值得一提的是,waygate-server 在连接到数据库后会自动运行数据库迁移。
### 密钥
游戏使用一组固定的密钥来发起连接并执行密钥交换。您需要为您的服务器和客户端生成一对密钥。您只需在设置服务器期间执行一次此操作。
要生成密钥对,请执行以下命令:
```
$ ./waygate-generate-keys
```
这将打印出有效的密钥对,以及如何将密钥对应用到您的设置中的说明:
```
# 将此传递给你的 servers 启动命令
--client-public-key = "8oWXtzzyvMwg0DZTUxdRP/HzDnDhlw8J1ZyXiB2Giks="
--server-secret-key = "XzUteM9hPf2n/XUg8L2ImxIaRUGusUpqYVFDnEY0Egs="
# 将此添加到你的 clients 的 waygate.toml
client_secret_key = "VD7xDTwd6+kt9zg+3qzVaKnxfIvVIwSG8JM1cc8Eeu0="
server_public_key = "5HCUh3iOJiPwsEPvln0QFnmx9sFaQrzDI9XopTa532c="
```
### 运行服务器
获取适合您平台的 [最新版本](https://github.com/vswarte/waygate-server/releases),并按如下方式运行:
```
$ ./waygate-server \
--bind 0.0.0.0:10901 \
--api-bind 0.0.0.0:10902 \
--api-key "" \
--database "" \
--client-public-key "" \
--server-secret-key ""
```
| 参数 | 环境变量 | 描述 |
|-----------------------|-----------------------------|----------------------------------------------------|
| `--bind` | `WAYGATE_BIND` | 指定游戏服务器的绑定地址。 |
| `--api-bind` | `WAYGATE_API_BIND` | 指定 api 服务器的绑定地址。 |
| `--api-key` | `WAYGATE_API_KEY` | 指定 API 认证密钥。注意保密。 |
| `--database` | `WAYGATE_DATABASE` | 指定要使用的数据库 URL |
| `--client-public-key` | `WAYGATE_CLIENT_PUBLIC_KEY` | 指定 KX 客户端公钥。注意保密。 |
| `--server-secret-key` | `WAYGATE_SERVER_SECRET_KEY` | 指定 KX 服务器私钥。注意保密。 |
#### 数据库 URL
`--database` 参数需要提供如下的数据库 URL:`postgresql://:@/`。
#### API
服务器还会启动一个 HTTP JSON API,允许用户进行自动健康检查、广播消息等,未来会支持更多功能。此 HTTP 服务器独立于游戏服务器,通过 `--api-bind` 参数指定的地址进行绑定。
API 的身份验证由 `--api-key` 控制,您需要指定一个密钥,传入的 HTTP 请求必须匹配该密钥。您可以使用 random.org 或密码生成器来生成一个安全的 API 密钥。
您可以在[这里](server/src/api/README.md)了解更多关于 API 的信息及示例。
#### 设置客户端
// 待定
### 附加配置
#### 日志记录
日志配置在 `config/logging.yml` 中指定。其底层使用的是 log4rs,它有关于日志选项的[专属手册](https://docs.rs/log4rs/latest/log4rs/config/index.html)。
#### 公告
公告内容在 `config/announcement.yml` 中定义。
## 哪些功能已实现?哪些有待开发?
- [x] 通过符印召唤
- [x] 快速匹配(竞技场)
- [x] 入侵
- [x] 玩家留言
- [x] 血迹
- [x] 玩家幽灵
- [x] 通过血迹召唤
- [x] 菲雅/战士壶广场
- [x] 组群密码
- [x] 蓝色暗号戒指
- [ ] 快速匹配排名
- [ ] 匹配密度(地图上的 PvP 活跃度)
- [ ] 大量与遥测相关的消息
# 许可证
本项目仅基于 GNU Affero General Public License v3.0 (AGPL-3.0-only) 授权。详情请参阅 [LICENSE](./LICENSE)。
如果您修改了本软件并运行它以供用户通过网络进行交互,则根据 AGPLv3 第 13 条的要求,您必须向这些用户提供您修改版本的相应源代码。
标签:Elden Ring, PostgreSQL, 可视化界面, 测试用例, 游戏服务器, 游戏模组, 私人服务器, 网络协议实现, 通知系统