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, 可视化界面, 测试用例, 游戏服务器, 游戏模组, 私人服务器, 网络协议实现, 通知系统