Skip to content

d3ara1n/Polymerium

Repository files navigation


Logo

Polymerium

为 Minecraft 准备的游戏实例管理器 | Minecraft-Ready Instance Manager
查看文档 | View Docs »

反馈 | Feedback · 讨论 | Discussion

Contributors Forks Stargazers Issues MIT License

I.关于

Screenshot

这是个 WIP 早期项目,大部分功能还没写完或仅存在于设计,开发进度请参考 Roadmap

I.About

It's in very early stage and most features are under development. Refer to Roadmap for progress.

1.理念

正如其缝合的名字一样,Polymerium 的主要目标是整合 Minecraft 的游戏资源,而非单单启动游戏。其使用与启动器完全不同的思路来管理游戏资源:创建实例元数据,使用部署引擎将游戏本地文件还原到元数据所描述的状态; Polymerium不维护游戏文件,只维护实例元数据。

相比于其他国产的游戏核心概念和版本隔离模式,Polymerium 以更为抽象的“游戏体验”概念和其具象表现“实例”来管理游戏。 这种方式结合了国际主流的现代化管理方式和 a little bit of personal flavor。

有关于 Polymerium 的模式请参阅核心概念

1.Philosophy

To introduce the MMC-style of game resource & instance organizing into the domestic ecosystem.

2.怎么又来一个?

这不是 launcher,也不是压缩毛巾,这是 Polymerium —— 游戏实例管理器。 初衷是在用 PrismLauncher 的时候遇到一些问题并想出一些改进的的方法,不过在写代码、与 forge installer 斗智斗勇的过程中已经忘记哪些改进了(囧。现在要回答这个问题的话,那么答案是:没有为什么,小孩子不懂事写着玩的。

2.Why another launcher?

Go back read the last section and you get it.

3.跨平台

跨。跨了 Windows 10 和 Windows 11 两个“平台”。

3.Cross-platform

Available in Windows 10&11 only.

4.使用以下技术栈和工具构建 | Tech stack and toolchain

  • C#
  • dotnet
  • WinUI3
  • WindowsAppSDK
  • Rider
  • VisualStudio
  • VisualStudioCode

II.特色 | Features

  • 🎨 Fluent Design & WinUI3
  • 💾 增量部署,使用软链接节省硬盘空间 | Pooled file objects & Symlink deployment.
  • 🎭 支持多账号且账号与实例绑定 | Instance linked multi account support.
  • 🎟️ 多种在线仓库,与 Curseforge 和 Modrinth 集成 | Integrated with Curseforge & Modrinth.
  • ☕ 手动配置 Java 并在运行时智能选择版本 | No stupid Java auto-detection. Configure Java once, configured every time.

III.安装和使用 | Getting started

1.下载 | Download

Microsoft Store

2.开启 Windows 开发者模式

由于部署采用了 Symbolic Link,该功能需要管理员权限。 Windows 没有为打包的应用提供管理员权限申请能力,但提供了 开发者模式 来降低创建软连接的特权要求。

Windows 10

设置 👉 更新和安全 👉 开发者选项 👉 开发人员模式

Windows 11

设置 👉 系统 👉 开发者选项 👉 开发人员模式

其他系统或其他 Windows

不需要。只有 Windows 需要在创建软连接时提供管理员权限,也只有 Windows 10+ 才能使用 WinUi3 打包应用。

2.Enable Windows Developer Mode

Due to Windows constraints in symlink, instance deployment requires following additional steps to work.

Windows 10

Google it.

Windows 11

Google it.

Other OS

Install Windows 10 or 11 then Google it.

3.配置

开箱即用。

3.Setup

Available out of the box.

IV.Roadmap

  • 创建该项目
    • 起名字
    • 创建 Git 项目仓库
    • 在目录里随处撒上魔术粉
  • 实例管理
    • 从空模板创建
    • 导入
      • 导入预览对话框
      • Poly-Pack
      • CurseForge
      • Modrinth
      • MMC-Pack
    • 导出为 Poly-Pack
  • 实例操作
    • 备份与还原
    • 内置副产品管理(游戏模组资源包着色器包等称为 Resource,抽象;当其作为文件存在于游戏目录称为 Asset,只读;当其存在元数据中成为 Attachment,只读可固化为 Asset;游戏过程中产生的文件成为 Byproduct,可写且不断变化)
      • 服务器查看与预览
      • 存档查看与预览
  • 账号管理
    • 账号提供方
      • Microsoft 账号登录
        • 设备码添加账号
        • 可用性检查与刷新
      • authlib-injector 账号注入
    • 无网模式
  • 部署引擎
    • 基于 Iterator 模型
    • 香草安装
    • 加载器安装
      • Forge
      • NeoForge
      • Fabric
      • Quilt
      • Trident Storage
    • 固化与还原
    • 基于文件池
  • 还原引擎
    • 基于 Iterator 并发模型
  • 发射引擎
    • 基于 Iterator 模型
  • 下载引擎
    • 基于 Iterator 模型(错误的,什么都往这个模型套是过度设计,除了部署引擎本身就是串行的,其他引擎都是并行的,套到迭代器这种串行模型上面就是错误设计。真正的问题仅需 Parallel.ForEach(x => DownloadAsync(x)) 甚至 Task.WaitAll 就能解决。但我还是要在未来实现它,因为并行工作用串行收集结果很优雅~)
  • 资源仓库
    • CurseForge
      • 整合包
      • 模组
      • 资源包
      • 着色器包
    • Modrinth
      • 整合包
      • 模组
      • 资源包
      • 着色器包
  • 搜索
    • 搜索中心
      • 互联网资源搜索
      • 导入在线整合包
      • 添加在线资源到本地实例
      • 收藏合集:为一个(新)实例添加一系列资源,用以对公共整合包快速个性化
  • 软件设置
  • 游戏实例设置
    • 元数据编辑
    • 私有启动配置页面
  • 本地化

更多细节请在 Issues 中查询。

V.隐私与数据收集

Polymerium 没有遥测。

但会在部分保存或导出的数据文件中包含隐私数据,其中包括:

  • 你的用户名:被包含在日志和临时文件中,通过 Home 目录暴露
  • 你使用的操作系统类型:被包含在日志和临时文件中,且仅有唯一的值 Windows

上面有提到你的账号信息吗?没有,因为这部分信息不被保存在公共区域。

VI.资料和参考 | References

十分感谢以上作者和所著文章。

VII.吐槽

  • Minecraft 官方的 Meta Launcher Api 给出的数据是多态模型
  • CurseForge Api V1 不在文档中标注可能为 null 的数据
  • Modrinth Api V2 不在文档中标注可能为 null 的数据,且不提供 V3 文档
  • PrismLauncher 的 Meta Launcher Api 定义了一系列 "Component",但每个 Component 都有自己独特的数据结构:他们只是看起来相似,在某些地方,例如对 rules[].os 的定义,是不同的
  • Modrinth 整合包中的资源清单不一定包含元数据,有些有,有些没有,导致无法提取
  • Modrinth Api V2 的 Version.Loaders 字段中存在污染数据需要手动过滤

License

Distributed under the MIT License. See LICENSE.txt for more information.

Stats

Alt