• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
MeshGate-基岩版无缝跨服传送代理

原创 MeshGate-基岩版无缝跨服传送代理 0.1.0

请登录后获取
版权类型
原创
版权链接
https://github.com/xianyubb/MeshGate
Wiki/文档
https://github.com/xianyubb/MeshGate/blob/main/README.md
语言支持
中文(简体)
前置组件
meshgate-agent https://github.com/xianyubb/meshgate-agent
适配版本(基岩)
  1. 最新版本
项目处于开发阶段 目前可通过编译可正常使用 但仍有未知BUG可能存在 请务必反馈 QQ∶2149656630
[MD]# MeshGate MeshGate 是一个面向 Minecraft Bedrock Dedicated Server 的原生 C++ 跨服网关实验项目。客户端只连接 MeshGate,MeshGate 再连接后端 BDS,并在玩家切换服务器时尽量保持前端连接不断开,从而实现接近“维度切换”体验的无缝跨服。 本项目当前目标版本为 BDS 1.26.20.04,协议版本为 975。后端 BDS 需要关闭在线验证,即 `online-mode=false`。 ## 项目组成 MeshGate 仓库提供网关主程序: - 接收玩家客户端连接。 - 连接入口后端 BDS。 - 通过本地 HTTP 控制接口接收跨服请求。 - 为目标 BDS 重放必要的登录、资源包、初始化和运行时状态。 - 在前端客户端和当前后端 BDS 之间转发 Bedrock/RakNet 数据包。 配套的 LeviLamina 插件位于另一个仓库 `meshgate-agent`。插件负责在 BDS 内注册命令,并把玩家发起的跨服请求发送给 MeshGate。 ## 环境要求 - Windows x64 - CMake 3.20 或更高版本 - 支持 C++23 的编译器 - Git - Minecraft Bedrock Dedicated Server 1.26.20.04 - 后端 BDS 配置 `online-mode=false` - 建议设置 `client-side-chunk-generation-enabled=false` 如果要构建可实际转发 Bedrock 协议的 relay 版本,还需要网络访问,以便 CMake 拉取 BedrockProtocol 依赖。 ## 构建方法 ### 构建核心逻辑和测试 ```powershell cmake -S . -B build -G "MinGW Makefiles" -DMESHGATE_BUILD_TESTS=ON cmake --build build --parallel ctest --test-dir build --output-on-failure ``` ### 构建可运行的 relay 版本 ```powershell cmake -S . -B build-relay -DMESHGATE_WITH_BEDROCK_PROTOCOL=ON -DMESHGATE_BEDROCK_PROTOCOL_VERSION=975 -DMESHGATE_BEDROCK_GAME_VERSION=26.20 cmake --build build-relay --parallel ``` 构建完成后,程序通常位于: ```text build-relay/meshgate.exe ``` 如果使用 Visual Studio 或其他 CMake 生成器,实际输出路径可能在 `build-relay/Debug/` 或 `build-relay/Release/`。 ## 配置方法 复制示例配置: ```powershell copy config\meshgate.example.toml config\meshgate.toml ``` 示例: ```toml control_host = "0.0.0.0" control_port = 19132 api_host = "127.0.0.1" api_port = 31920 bearer_token = "replace-with-a-random-token-of-at-least-32-characters" entry_server = "lobby" [[servers]] id = "lobby" game_host = "127.0.0.1" game_port = 19133 agent_host = "127.0.0.1" agent_port = 31921 [[servers]] id = "survival-02" game_host = "127.0.0.1" game_port = 19134 agent_host = "127.0.0.1" agent_port = 31921 ``` 字段说明: - `control_host` / `control_port`:客户端连接 MeshGate 使用的地址和端口。 - `api_host` / `api_port`:给 `meshgate-agent` 调用的本地控制接口。 - `bearer_token`:控制接口认证令牌,需要和插件配置保持一致。 - `entry_server`:玩家首次进入时连接的后端服务器。 - `servers.id`:后端服务器 ID,插件命令会使用这个值。 - `servers.game_host` / `servers.game_port`:后端 BDS 的游戏地址和端口。 - `servers.agent_host` / `servers.agent_port`:预留给后端 agent 使用的地址和端口。 注意事项: - MeshGate 应该是玩家唯一直接连接的 Bedrock 入口。 - 后端 BDS 的游戏端口不建议直接暴露给公网玩家。 - 所有后端 BDS 都需要 `online-mode=false`。 - 所有后端 BDS 建议使用相同或兼容的资源包、实验性玩法和关键世界设置。 <!-- - 如果客户端在维度切换后崩溃,优先确认 BDS 的 `client-side-chunk-generation-enabled=false`。 --> ## 启动方法 ```powershell .\build-relay\meshgate.exe config\meshgate.toml --relay ``` 如果你使用的是 Debug 构建: ```powershell .\build-relay\Debug\meshgate.exe config\meshgate.toml --relay ``` 启动成功后,客户端连接 `control_host:control_port`,例如: ```text 127.0.0.1:19132 ``` ## 使用方法 1. 启动所有后端 BDS。 2. 确认每个 BDS 都安装并配置好 `meshgate-agent`。 3. 启动 MeshGate。 4. 客户端连接 MeshGate 的入口端口。 5. 在游戏内执行跨服命令: ```text /meshgate survival-02 ``` 其中 `survival-02` 必须匹配 `config/meshgate.toml` 中的某个 `servers.id`。 当前逻辑应拒绝从同一个服务器前往同一个服务器,避免无意义的重复 handoff。 ## 已使用的库和工具 - [SculkCatalystMC/BedrockProtocol](https://github.com/SculkCatalystMC/BedrockProtocol):Bedrock 协议包结构和传输适配。 - CMake:C++ 构建系统。 - CTest:核心逻辑测试运行器。 - Winsock2 / `ws2_32`:Windows 网络接口。 - C++23 标准库。 参考资料: - [LiteLDev/LeviLamina](https://github.com/LiteLDev/LeviLamina) - [Mojang Bedrock Protocol Docs](https://github.com/Mojang/bedrock-protocol-docs) - [WaterdogPE](https://github.com/WaterdogPE/WaterdogPE) ## 鸣谢 特别感谢: - LiteLDev / LeviLamina 社区 - SculkCatalystMC / BedrockProtocol 项目 - Mojang Bedrock Protocol Docs - WaterdogPE 项目提供的跨服思路参考 ## 许可证 本项目使用 MIT License 开源,详情见 [LICENSE](LICENSE)。 项目使用到的第三方库和工具仍遵循其各自的许可证;发布二进制文件或整合分发时,请同时保留相关依赖项目的许可证声明。[/MD]
  • 喜欢
反馈: xinchenXPC
作者
xianyubb
价格
100.00金粒
下载
2
查看
142
首次发布
最后更新

评分

0.00 星 0 次评分

xianyubb 的其他资源

后退
顶部 底部