d3ara1n / Polymerium

Fluent Minecraft Instance Manager & Launcher

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Logo

Polymerium

为 Minecraft 准备的游戏实例管理器
查看文档 »

反馈 · 讨论

Contributors Forks Stargazers Issues MIT License

关于

Screenshot

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

理念

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

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

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

Why another launcher?

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

跨平台

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

使用以下技术栈和工具构建

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

Features

  • 🎨 Fluent Design & WinUI3
  • 💾 增量部署,使用软链接节省硬盘空间
  • 🎭 支持多账号且账号与实例绑定
  • 🎟️ 多种在线仓库,与 CurseForge 和 Modrinth 集成
  • ☕ 运行时智能选择 Java 版本

安装使用

下载

Microsoft Store

开启 Windows 开发者模式

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

Windows 10

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

Windows 11

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

其他系统或其他 Windows

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

配置

开箱即用。

添加实例

目前仅支持创建原版实例(并在随后的实例配置页面添加 Mod Loader)或导入 Modrinth,CurseForge 整合包。

导入整合包

下载整合包文件,拖动到导入页面的 DragDrop 面板,根据向导添加。

导出整合包

目前只支持导出在线包格式,不支持类似 BBSv2 这种 CurseForge Pack 改的离线包格式,在未来也不会支持。

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 中查询。

隐私与数据收集

Polymerium 没有遥测。

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

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

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

资料和参考

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

吐槽

  • Minecraft 官方的 Meta Launcher Api 给出的数据是多态模型
  • CurseForge Api V1 不在文档中标注可能为 null 的数据
  • Modrinth Api V2 不在文档中标注可能为 null 的数据,且不提供 V3 文档
  • PrismLauncher 的 Meta Launcher Api 定义了一系列 "Component",但每个 Component 都有自己独特的数据结构:他们只是看起来相似,在某些地方,例如对 rules[].os 的定义,是不同的

License

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

Stats

Alt

About

Fluent Minecraft Instance Manager & Launcher

License:MIT License


Languages

Language:C# 100.0%