Velocity群组服

你可能注意到了,你游玩的很多服务器往往会包含多个子服,例如大多数的生电(生存)服务器都会开设“镜像服”、“创造服”等服务器,而玩家只需要通过指令去自由地在多个子服之间进行切换。而你自己开设的服务器可能也有这样的需求。本节将会讲述以velocity作为代理服务器,达成开设群组服的目标。

何为Velocity?

Velocity官网: https://papermc.io/software/velocity

Velocity是一个群组服代理。他本身并不会有任何的服务端逻辑。它会负责将连接到velocity的MC客户端按照配置好的规则分发到对应的服务端。

比喻一下,整个群组服好比一个酒店,而velocity可以理解为酒店的前台。所有要进入酒店房间的顾客都要先经过前台指引才能到达对应的房间。当顾客想换房间的时候,也可以经过前台去更换房间。前台本身并不是一个房间,但是前台应当知道顾客可以访问的其他房间。

将概念换回来,我们可以得出以下结论:

  1. velocity并不是服务端,它只处理客户端→服务端的连接
  2. velocity是整个群组服的入口,所有子服应当配在velocity中。客户端无需关注子服的具体地址。

OK,科普结束,实践开始

下载Velocity

https://papermc.io/downloads/velocity

(Fabric必需)下载FabricProxy-Lite Mod

https://modrinth.com/mod/fabricproxy-lite/versions

配置Velocity

  1. 将下载好的FabricProxy-Lite.jar移动到服务器的mods文件夹中
    image-20230926012843624
  2. 启动服务器(此步是必须的,我们需要运行一次服务器来生成配置文件),当服务器成功启动后,客户端将无法直接通过ip直连到服务器,这是正常的,因为我们需要通过velocity连接到服务器
    image-20230926013350838
  3. 关闭服务器
  4. 在合适的位置创建:velocity 文件夹,将velocity的jar放入文件夹中,同时创建名称为start.bat的文件,输入以下内容(也可像我一样,先创建txt文件,输入完再改成bat后缀)
    image-20230926013433738

    指令为 java -jar nogui, 请根据自己下载到的velocity文件去修改

  5. 双击start.bat ,如果指令没问题,此时velocity应该开始执行了,如图所示,他会提示velocity监听的端口,当你第一次运行时,默认是25577
    image-20230926013523979
  6. 修改velocity的配置文件:
    image-20230926013534313
    如下
    image-20230926013555109
    image-20230926013612822
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    ##################### 以下配置请注意标点符号不要写少或者写错 ########################

    bind = "0.0.0.0:25577" # 还是走默认的端口
    online-mode = true # 是否开启正版验证,建议和服务端保持一致
    player-info-forwarding-mode = "modern" # 如果是Fabric或者paper端,请选择modern

    # 以下是一套生电群组服的示例配置
    [servers]
    main = "127.0.0.1:25565" # 主服
    mirror = "127.0.0.1:25566" # 镜像服
    crea = "127.0.0.1:25567" # 创造服

    # 尝试连接顺序
    # 例子中会按照 main, mirror 的顺序尝试连接。如果main连接失败,就会尝试连接mirror,如果mirror也失败,本次连接就失败
    # 连接不上的可能性有很多,例如main服务器崩服了,或者玩家不在白名单中,或者游戏版本不匹配等
    # 注: 此处没配置crea,表示不会再连接时尝试连接crea,即使玩家满足连接到crea的条件
    try = [
    "main",
    "mirror"
    ]

    # 以下是可选配置,如果你希望对每个子服都绑定域名,可以在这里配置
    # 什么?你不知道什么是域名?那么这里就可以跳过了
    [forced-hosts]
    "main.server.com" = [
    "main"
    ]
    "mirror.server.com" = [
    "mirror"
    ]
    "crea.server.com" = [
    "crea"
    ]
    修改完所有配置后,关闭velocity的控制台窗口,重新执行start.bat,如果配置修改没有问题,那么velocity将正常跑起来。
    image-20230926013641916
  7. 修改服务端配置
    还记得当时我们启动了一次服务器么?那次启动为我们在config目录下生成了一个FabricProxy-Lite.toml ,现在我们需要打开这个配置文件,修改它的secret 这个配置。
    image-20230926013651433
    这个配置是一个密钥串,是velocity和服务端进行通信的一个口令。当然我们开服不需要了解它内部是怎么识别的,我们只需要知道从哪里获取到这个口令。其实它就在velocity文件夹根目录里
    image-20230926013704123使用VSCode或者记事本都可以打开这个文件,里面写了一串口令,将这串口令填入secret的配置中
    image-20230926013713286
    image-20230926013732373
    保存以后,重新启动服务端。由于服务端是默认端口25565,对应了velocity配置的main子服,客户端连接到velocity时,就会进入到main服中了。

测试与启动其他子服

image-20230926013747430
此时进入服务器,我们可以使用/server <服务器名>的指令进行子服之间的跳转。
然而,当我们尝试去依次连接main, mirror, crea时,会得到以下报错。
image-20230926013808546
结果很明显,我们现在是在main子服中,同时由于mirrorcrea服都未开启,所以我们并不能连接到对应的服务器中。
要启动其他子服很简单,我们不需要重新配置一遍,只需要将main服复制一份,修改一下服务器端口就可以了。此处我将mirror服端口修改为25566crea服端口修改为25567,并全部启动。
image-20230926013819836

image-20230926013832121

此时我们启动了三台服务器,并且我们可以通过/server <子服名称> 指令来在多服之间自由切换了