Skip to content

McHMR 是什么?

McHMR(全称:Minecraft Hot Module Replacement) 是为解决 Minecraft 服务器客户端无法完成游戏开始前的自动更新,为其提供自动更新服务而开发的一系列的软件和服务的总称,你可以称这一系列都叫做 McHMR,系列软件都包含了以下内容:

  • McHMR-BackEnd

    这是 McHMR 的管理端后端程序,使用 Java SpringBoot 框架开发。

  • McHMR-FrontEnd

    这是 McHMR 的管理端前端程序,使用 Vue3 JavaScript 框架开发。

  • McHMR-Doc

    这是 McHMR 的官方文档,已开源至 GitHub 组织 Melon-Studio 上,就是你正在浏览的文档。

  • McHMR-Doc-API

    这是 McHMR 官方文档提供的第三方 API 接口,第三方启动器可以通过此 API 完成自动更新的功能对接,使其他第三方启动器支持自动更新功能。

  • McHMR-Launcher-for-HMCL

    这是 McHMR 分叉的 Hello Minecraft! Launcher(HMCL) 启动器,使其支持了自动更新功能。

  • McHMR-Launcher-for-PCL2 (已弃用,由于 PCL2 未明确开源协议,故无权另外分叉热更新版本,需要得到原作者同意,正在积极交涉中)

    这是 McHMR 分叉的 Plain Craft Launcher(PCL2) 启动器,使其支持了自动更新功能。

  • McHMR-Updater

    这是 McHMR 的更新器,如果你不想使用启动器支持的自动更新功能,你可以使用更新器来实现自动更新功能,目前已经开源在 GitHub 点击这里可以直接访问。

为什么叫 McHMR?

当年使用 McHMR 作为项目名称的初衷是通过开发热更新模组,达到游戏内的热更新,但由于种种原因放弃了,而 McHMR 这一名称被延续了下来,本质上已不再是热更新,而是通过外部程序达成自动更新。

你知道吗?

在 McHMR 上线前 3 个月,McHMR 的源代码丢失了,因为在真机上使用 WSL,由于 WSL 没有做环境隔离,导致运行 rm -rf / 后,全盘内容被删,后面历经几天的数据恢复,才恢复了 McHMR 的代码,不然可能 McHMR 会“胎死腹中”!

McHMR 的使用场景有哪些?

  • 模组更新

    模组服提供了大量模组以丰富游戏体验,但是随着玩法的增加或者模组的 Bug 修复,就需要对玩家客户端的模组进行增加、更新或者删除,你可以使用 McHMR 提供对游戏的更新。

  • 营销更新

    商业服经久不衰的原因离不来游戏活动、节日活动等的宣传,就像现在的网络游戏一样,在有新活动上线等需要营销的情况下,为启动器更换营销图片背景是一个不二的选择,你可以通过 McHMR 提供的远程启动器背景图功能,让每次新活动开始前为启动器换上活动宣传背景提前预热。

  • 修复漏洞和错误

    当游戏中出现严重影响玩家体验的漏洞,如导致游戏崩溃、数据丢失等,自动更新可以迅速推送修复补丁,确保玩家能够正常游戏。例如,某款 Mod 出现了严重漏洞,玩家在执行某操作时会直接影响游戏崩溃,Mod 作者发布了修复版本,可以直接通过自动更新推送给玩家客户端。

  • 客户端美术资源更新

    部分服务器使用了类似龙之核心、萌芽引擎这样的 Mod,方便在服务器中展示各种 GUI 资源,可以将需要更新或者新增的这些美术资源通过自动更新推送给玩家客户端。

  • 优化更新

    部分优化 Minecraft 帧率的 Mod 有重大版本更新时,可以直接推送给玩家客户端。

McHMR 是怎么更新的?

在游戏客户端自动更新的架构设计中,引入基于 MD5 的文件校验机制,以确保更新过程的准确性与完整性。该方案旨在为游戏客户端的迭代与演进提供高效且可靠的更新途径。

MD5 文件校验更新方式的工作原理

  • 服务器端准备

    在版本管理端上,存储着最新版本的程序文件。每个文件都通过 MD5 算法生成唯一的哈希值。当有新的程序版本发布时,版本管理端会同步更新这些文件及其对应的 MD5 值。

  • 客户端查询与下载

    更新器和启动器会在启动或游戏启动前向版本管理端发送更新查询请求。服务器收到请求后,将最新版本的程序文件信息返回给客户端。客户端对比本地程序的版本信息和服务器返回的信息,确定是否需要更新。

  • 文件校验与更新

    如果需要更新,更新器和启动器会将更新文件列表发送给版本管理端,然后根据版本管理端返回的增量包开始下载更新文件。在下载完成后,将其替换本地相应文件,完成更新。

    团队内部还在讨论修改这一更新方式,改变为提供各文件的下载地址,以加快客户端的更新速度。

优点

  • 数据完整性保障

    MD5 算法具有高度的可靠性,能够准确检测文件在传输过程中是否发生损坏或篡改。通过对下载的文件进行 MD5 校验,确保更新后的程序与服务器上的源文件完全一致,极大地提高了程序更新的准确性和完整性,降低了因文件损坏导致程序运行异常的风险。

  • 高效的错误检测与纠正

    一旦发现 MD5 校验不一致,客户端能够迅速定位问题文件并重新下载,无需对整个更新包进行重复处理,从而节省了时间和网络资源。在大规模分布式系统中,这种高效的错误检测和纠正机制对于保证众多客户端程序的及时更新至关重要。

  • 安全性提升

    MD5 校验可以防止恶意第三方在更新过程中插入恶意代码或篡改程序文件。由于 MD5 值的唯一性和确定性,任何未经授权的修改都能被及时发现,增强了程序更新过程的安全性。

  • 版本一致性控制

    通过 MD5 校验,可以确保所有客户端都更新到相同版本的程序文件,避免了因版本差异导致的功能不一致或兼容性问题。在游戏客户端领域,这种版本一致性对于保证系统的稳定运行和用户体验具有关键意义。

官方指南

McHMR 的官方指南视频预计正式版上线后发布在 Bilibili。将由开发者录制、剪辑,它涵盖了 Windows Server、Linux 的手动部署和 Docker 自动部署,及使用示例。观看视频,这是使用 McHMR 的最佳方式,当然,如果你有阅读文档的能力,可以直接参阅文档。

贡献者

The avatar of contributor named as Gabriel Ryder Gabriel Ryder
The avatar of contributor named as XiaoFans XiaoFans

页面历史