Files
netease-modsdk-wiki/docs/mcguide/27-网络游戏/课程8:使用Spigot开服/10-支持基岩版客户端的Java版网络游戏概述.md
2025-03-17 13:24:39 +08:00

7.3 KiB
Raw Blame History

front, hard, time
front hard time
入门 60分钟

支持基岩版客户端的Java版网络游戏概述

目的

  • 本文档旨在阐述通过Apollo工具搭建并部署Java版网络游戏的流程

  • 玩家能够通过基岩版手机客户端进入Java版网络游戏中进行游玩

  • 开发者可以使用基岩版已有的模组SDK和附加包Json制作客户端的玩法逻辑和表现需要的技术与中国版基岩版组件开发相似。部分功能可能无法生效

前置知识

名词介绍

  • Spigot、Spigot服

    Spigot是一个开源的、高效的Java版MC服务器并且提供了丰富的api可以编写插件。他是由第三方提供的并非官方提供是由官方的minecraft server反编译后打进去一些patch后而来

  • BC、BungeeCord、BC服

    BungeeCord后面简称BC是一个代理提供了切服、数据包转发、插件编写、BC指令等等

  • Geyser、Geyser服、协议服

    Geyser是第三方开源的MC协议转换工具它能把MC-Bedrock版本协议转换为MC-java版本协议也就是说通过Geyser我们能实现基岩版客户端进入Java版服务器游玩的效果

  • Master服、Proxy服

    名词解释

框架示例和讲解

框架图

如框架图所示为了尽可能地兼容不同服主Spigot服框架我们把整体的Java版网络游戏分为两部分

  • 负载/协议转换部分(上半部分)

  • Java服部分(下半部分)

接着阐述每个部分的具体作用

  • 负载/协议转换部分

    • 这一部分包括了Master服、Proxy服、Geyser服
    • Master和Proxy服作用和基岩版网络游戏一致
    • 由于基岩版和Java版的游戏数据协议包格式并不相同因此Geyser服则扮演着协议转换者的角色它负责把基岩版的协议转换为Java版的协议
  • Java服部分

    • 这一部分为Java游戏服它的作用相当于基岩版网络游戏中Lobby服和Game服的结合体是存储玩家实际游玩数据以及世界数据的服务器
    • 它主要由两部分组成BC服和Spigot服
    • 架构图中的DB则指额外数据库可选、其他则是指用于进一步管理BC、Spigot或者其他更多功能的第三方应用程序可选

为了可扩展地连接起上下两部分框架中我们会把Java服视为黑盒并为BC服提供名为BungeeMaster的插件这个插件安装在BC服上负责建立起BC服和Master服的通信连接。

搭建流程

准备阶段

在进行Java版网络游戏搭建和部署流程前首先需要注册成为我的世界开发者并完成入驻申请申请开发阶段服务器。具体步骤请详细阅读如下文档

  1. 开发准备阶段概述

  2. 入驻申请

  3. 申请开发阶段服务器

  4. 使用数据库前端连接数据库

  5. 连接开发机

特别提示

  1. 拿到机器后,要先访问添加白名单,之后才可以正常登入
  2. spigot机器的java环境对应的操作命令分别是java8java18其中运行Spigot请使用java8(具体原因详见常见问题合集)

JAVA服部署流程

  • 在准备好开发机后,连接上开发机

  • 通过服主各自的Java服框架部署各自的Java服(必须存在BC服)

  • 经过初步的调研确定目前使用的Spigot版本为1.12.2因此为了兼容基岩版1.18客户端,需要在Spigot服使用ViaVersion插件

  • 下载ViaVersion插件,并放置于 Spigot服目录/plugins/ 目录下。

  • 下载BungeeMaster插件,并放置于 BC服目录/plugins/ 目录下。

  • BC服目录/plugins/ 下,新建文件夹 BungeeMaster,并在 BungeeMaster 文件夹下新建文件 config.yml此为BungeeMaster插件配置

    目录结构1

    目录结构2

    目录结构3

  • 然后填入如下内容,其中

    • server_id 取值区间在[12000, 14000)内,并且保持单次部署唯一即可

    • master_port端口范围要求[29000,31000)

    • 填写完毕后请记下相关参数后面需要在studio中填写

    config.yml

  • 打开BC服目录/config.yml文件(此为bc服配置)查看bc服监听的端口并记下端口参数后面需要在studio中填写

    • 注意,此处的query_porthost中冒号后面的端口值,请保持一致
    • 该处的端口,均为BC服用于监听来自Geyser服相关连接的端口

    config.yml

  • 配置完成后可使用Java版客户端连接BC测试Java服部署是否成功

负载/协议转换部分部署流程

  • 打开MCStudio选择基岩版服务器并选择右上角新建选项打开后选择空白Spigot服

    Studio部署流程

  • 选择更多后,点击服务器配置,开始配置

    Studio部署配置

  • 其中,控制服、代理服、协议服的配置不再赘述,和基岩版网络服务器相似

    框架上半部分部署

  • BC服的配置则根据Java服部署中BC服的数量和配置来决定。如根据上个步骤截图数据则最终配置为

    框架上半部分部署

  • 配置完成后,点击部署

  • 查看日志若部署成功则可以通过工具箱打开ModPC开发包进入游戏开始测试

    框架上半部分部署

常见部署问题合集

常见部署问题合集

常见问题

Q如何申请使用Spigot开服 A在开发者平台提交入驻申请选择作品管理-上架与资源管理-网络游戏-基岩版开服工具游戏-入驻申请使用框架勾选spigot认真填写入驻申请。

Q服务端可以使用Spigot插件么 A理论上可以使用来自Spigot插件市场的插件目前已有一批广泛使用的插件经过了测试。

Q我什么时候可以上架使用Spigot的基岩版服务器 A目前暂时无法上架此类游戏您可以先进行服务器的开发我们会在近期支持上架操作。

Q我需要使用哪个版本的Spigot是否支持Paper-Spigot A使用的是1.12版本的Spigot暂时不支持Paper未来会考虑支持。

Q是否支持手机和电脑同服 A目前仅支持手机端如果您需要双端同服可以选择使用Apollo进行开服。

Q使用的客户端是什么支持forge么 A使用的客户端是中国版的《我的世界》基岩版目前是1.18很遗憾基岩版客户端不支持forge推荐使用官方推出的模组SDK替代。

Q我是否可以将Spigot PC服移植到PE A可以我们欢迎您这么做。但是对于客户端逻辑来说您需要重写逻辑。