部署流水线
当你点击"部署"时发生了什么——Polymerium 如何将你的模组列表变成可运行的游戏。
Last updated on
部署做什么
部署会把实例元数据——Minecraft 版本、模组加载器和包列表——转换为可运行的运行目录(build/)。实例配置描述需要准备什么,部署后的运行目录才是 Minecraft 实际打开的位置。
如果你不熟悉整合包源、本地保留、运行目录和工作副本这些概念,可以先看术语表 →。
会下载什么
在第一次部署时,Polymerium 会下载运行游戏所需的一切:
- Minecraft 本身 —— 来自 Mojang 服务器的版本 JAR 和资源
- 加载器库 —— Fabric、Forge、NeoForge 或 Quilt 等模组加载器所需的文件
- 包 —— 从 CurseForge 和 Modrinth 解析的模组和其他包类型,包括任何依赖项
- Java 运行时 —— 存在匹配版本时准备 Mojang 运行时,多个实例共享,启动时选择其他 Java 也不影响这项准备
所有这些都存储在你磁盘上的一个共享缓存中。有效的缓存文件可由任何实例重用,缺失或损坏的文件会重新下载。
哪些包条目生效
一个实例可以在多个分组中保留同一项目。部署会排除禁用条目,再按分组优先级为每个项目选择生效条目,并处理包之间的目标路径冲突。被覆盖的条目仍保留在实例配置中。散装包、保存的组顺序及同优先级冲突,见包分组与覆盖顺序。
符号链接,而不是副本
Polymerium 不会将模组文件复制到每个实例中,而是从共享缓存创建符号链接到你的 build/ 目录。如果你有五个实例都使用 Sodium,你的磁盘上只有一份 Sodium 副本——每个实例只是链接到它。
来自整合包源(import/)与本地保留(persist/)目录的文件也会按优先级分层到运行目录(build/)中。参见目录模型 → 了解其工作原理。
快速部署
新实例的第一次部署会下载所有内容,所以需要一点时间——就像任何启动器一样。在那之后,事情会变得很快:
- 什么都没变? 部署复用已解析的元数据并检查本地资源,跳过已经满足的文件操作。
- 只有几个模组改变了? 只有那些模组会被更新。其他一切都保持原位。
实例首页在检查过的文件无需下载或本地操作时显示资源已就绪,仍有本地操作或当前需求需重新判定时显示需要部署,已知需要获取资源时显示需要下载。将鼠标悬停在状态上可查看各类资源是否就绪。这项检查在当前应用会话内缓存,不验证账号或自定义 Java 安装。部署还会在启动前完成本地原生库准备。
缓存的好处
共享缓存意味着你的其他实例也会受益。如果实例 A 已经下载了一个模组,而你向实例 B 添加了相同的模组,就不需要下载任何东西——部署只是创建一个新的符号链接。
了解更多
- 元数据驱动的实例 → —— 为什么实例是描述而不是文件夹副本
- 目录模型 → —— 文件如何分层到游戏目录中