安装
WukongMP 服务器当前以以下格式分发:
- 二进制软件包
- Docker 镜像
系统要求
服务器二进制文件本身是自包含的,但服务器端模组运行在 CoreCLR 上,而服务器在启动时就会启动它。这意味着这台机器上必须安装 .NET 10 运行时,即使你并不打算安装任何自己的模组。装 dotnet-runtime-10.0 包就够了,不需要 SDK。
Docker 镜像已经包含它了。
- Windows
- Linux
官方安装程序会把运行时装到服务器预期的位置,所以不需要再做别的。
用你的包管理器安装,或者用微软的安装脚本。服务器会按以下顺序在常见位置查找运行时:
/usr/lib/dotnet(Debian 与 Ubuntu 的软件包)/usr/lib64/dotnet(Fedora 与 RHEL)/usr/share/dotnet(微软的软件包和安装脚本)~/.dotnet
只有确实包含 host/fxr 的目录才算有效,所以卸载后残留的目录不会造成干扰。如果你的运行时装在别处,请用 DOTNET_ROOT 指向它:
DOTNET_ROOT=/opt/dotnet ./server
用 dotnet --info | grep 'Base Path' 可以查看你的运行时在哪里。
如果缺少运行时,服务器会在启动时退出,并报出 Cannot locate a .NET installation containing host/fxr,同时列出它检查过的目录。
二进制软件包
下载
| 平台 | 架构 | 下载 |
|---|---|---|
| Linux | x64 | Linux 版下载 |
| Windows | x64 | Windows 版下载 |
安装
将二进制包解压到你选择的位置。
解压后,目录结构应如下所示:
- Windows
- Linux
server/
├── server.exe # 主服务器二进制文件
├── config.json # 配置文件
├── mods/ # 客户端模组目录
| ├── WukongMp.Sdk/ # SDK 模组
| └── WukongMp.Coop/ # 合作模组
├── optional_mods/ # 将其中任意模组移动到 "mods" 文件夹以启用
| └── WukongMp.PvP/ # 对战模组
├── server_mods/ # 服务器端模组目录
| ├── WukongMp.Sdk.Serverside.dll # 服务器端 SDK
| └── WukongMp.Coop.Serverside.dll # 合作模组,服务器端
├── saves/ # 游戏存档目录(默认为空)
├── wwwroot/ # 管理面板资源
├── e_sqlite3.dll # 依赖项
└── aspnetcorev2_inprocess.dll # 依赖项
server/
├── server # 主服务器二进制文件
├── config.json # 配置文件
├── mods/ # 客户端模组目录
| ├── WukongMp.Sdk/ # SDK 模组
| └── WukongMp.Coop/ # 合作模组
├── optional_mods/ # 将其中任意模组移动到 "mods" 文件夹以启用
| └── WukongMp.PvP/ # 对战模组
├── server_mods/ # 服务器端模组目录
| ├── WukongMp.Sdk.Serverside.dll # 服务器端 SDK
| └── WukongMp.Coop.Serverside.dll # 合作模组,服务器端
├── saves/ # 游戏存档目录(默认为空)
├── wwwroot/ # 管理面板资源
└── libe_sqlite3.so # 依赖项
软件包已经带上了 SDK 和两种游戏模式,因此不需要再安装别的东西。联机合作模式开箱即用,它的客户端一半在 mods/ 中,服务器一半在 server_mods/ 中。
两种游戏模式互斥,所以换成对战模式意味着要移除联机合作模组:
- 把
WukongMp.PvP从optional_mods/移动到mods/。 - 从
mods/中删除WukongMp.Coop文件夹。 - 从
server_mods/中删除WukongMp.Coop.Serverside.dll和WukongMp.Coop.Common.dll。其余文件请保留,它们属于 SDK。
对战模组没有自己的服务器端一半,所以不需要往 server_mods/ 里添加任何东西。
两种游戏模式同样是开源的,所以你也可以自己构建,而不使用随包分发的构建产物:联机合作模组和对战模组。每个仓库都有一个 MakeModFolder.ps1 脚本,它会生成对应客户端一半的 Output/mods/ 文件夹和对应服务器一半的 Output/server_mods/ 文件夹,结构与上面一致。服务器如何加载它们,请参见模组管理。
配置
您可以通过编辑 config.json 文件来调整服务器设置。在以下表格中,使用 : 记法来表示嵌套设置。
| 设置 | 类型 | 目的 |
|---|---|---|
Server:Port | 数字 | 服务器监听传入连接的端口 |
Server:Password | string | 可选。设置后,玩家在加入时必须在启动器中输入此密码。留空或省略以表示开放服务器。 |
Telemetry:OptOut | 布尔值 | 设置为 true 即可选择不向 ReadyM 发送匿名遥测。默认值为 false。 |
服务器:密码 对包括管理员和白名单用户在内的每位玩家都需要通过密码进行验证。受密码保护的服务器在公开服务器列表中显示为带锁的图标。
首次启动
通过运行 server.exe 二进制文件来启动服务器。
首次启动时,服务器在服务器文件夹内创建一个 data/ 目录。该目录包含用于存储持久数据的 web.db 数据库文件。
除非在 config.json 中进行了更改,否则服务器将监听以下端口:
| 端口 | 协议 | 目的 |
|---|---|---|
| 9050 | UDP | 游戏网络流量(玩家连接、游戏状态同步等) |
| 9050 | HTTP | 后台管理面板 |
Docker
也提供了基于 Linux 的 x64 Docker 镜像,供偏好容器化部署的用户使用。
从注册表拉取镜像:
docker pull ghcr.io/readycodeio/wukongmp-server:0.3.1
从镜像中复制配置文件:
docker create --name wukongmp-tmp ghcr.io/readycodeio/wukongmp-server:0.3.1
docker cp wukongmp-tmp:/app/config.json ./config.json
docker rm wukongmp-tmp
运行:
- Docker
- Docker Compose
docker run \
-p 9050:9050/udp -p 9050:9050/tcp \
-v ./data:/app/data \
-v ./mods:/app/mods \
-v ./server_mods:/app/server_mods \
-v ./saves:/app/saves \
-v ./config.json:/app/config.json \
--name wukongmp-server \
ghcr.io/readycodeio/wukongmp-server:0.3.1
services:
server:
image: ghcr.io/readycodeio/wukongmp-server:0.3.1
container_name: wukongmp-server
restart: unless-stopped
ports:
- "9050:9050/tcp"
- "9050:9050/udp"
volumes:
- ./data:/app/data
- ./mods:/app/mods
- ./server_mods:/app/server_mods
- ./saves:/app/saves
- ./config.json:/app/config.json
镜像 不带模组。在启动容器之前,请把 WukongMp.Sdk 和其中一种游戏模式放进你的 mods/ 卷,并把对应的服务器端模组放进 server_mods/ 卷。联机合作模式需要两半都有;对战模式没有服务器端一半。
获取它们有两种方式:
配置
端口的配置是通过在 docker run 命令或 Docker Compose 文件中重新映射容器端口来完成的。例如,要使用端口 9060 而不是
9050,请将端口部分更改为:
ports:
- "9060:9060/tcp"
- "9060:9060/udp"