{"id":13521685,"url":"https://github.com/d3ara1n/Polymerium","last_synced_at":"2025-03-31T20:32:44.925Z","repository":{"id":65957679,"uuid":"587816508","full_name":"d3ara1n/Polymerium","owner":"d3ara1n","description":"Fluent Minecraft Manager","archived":false,"fork":false,"pushed_at":"2023-12-18T09:39:11.000Z","size":64875,"stargazers_count":11,"open_issues_count":8,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-12-18T10:55:00.834Z","etag":null,"topics":["csharp","dotnet","fabricmc","forge","launcher","minecraft","modrinth","quiltmc"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/d3ara1n.png","metadata":{"files":{"readme":"README.md","changelog":"changelogs/v0.3.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-01-11T16:50:30.000Z","updated_at":"2023-12-20T16:06:10.126Z","dependencies_parsed_at":"2023-12-20T16:16:39.357Z","dependency_job_id":null,"html_url":"https://github.com/d3ara1n/Polymerium","commit_stats":null,"previous_names":[],"tags_count":23,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3ara1n%2FPolymerium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3ara1n%2FPolymerium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3ara1n%2FPolymerium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3ara1n%2FPolymerium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/d3ara1n","download_url":"https://codeload.github.com/d3ara1n/Polymerium/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246536245,"owners_count":20793407,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dotnet","fabricmc","forge","launcher","minecraft","modrinth","quiltmc"],"created_at":"2024-08-01T06:00:37.115Z","updated_at":"2025-03-31T20:32:39.914Z","avatar_url":"https://github.com/d3ara1n.png","language":"C#","funding_links":[],"categories":["Softwares","Samples and Projects","📑 Apps List","Launchers"],"sub_categories":["Launchers","Gaming","🎮 Games"],"readme":"\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/d3ara1n/Polymerium\"\u003e\n    \u003cimg src=\"assets/images/Logo.png\" alt=\"Logo\" width=\"180\" height=\"180\"\u003e\n  \u003c/a\u003e\n\n\u003ch3 align=\"center\"\u003ePolymerium\u003c/h3\u003e\n\n  \u003cp\u003e\n    为 Minecraft 准备的游戏实例管理器 | Minecraft-Ready Instance Manager\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/d3ara1n/Polymerium/wiki\"\u003e\u003cstrong\u003e查看文档 | View Docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/d3ara1n/Polymerium/issues\"\u003e反馈 | Feedback\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/d3ara1n/Polymerium/discussions\"\u003e讨论 | Discussion\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!-- PROJECT SHIELDS --\u003e\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n## I.关于\n\n[![Screenshot][product-screenshot]](#关于)\n\n**这是个 WIP 早期项目，大部分功能还没写完或仅存在于设计，开发进度请参考 [Roadmap](#roadmap)。**\n\n## I.About\n\n**It's in very early stage and most features are under development. Refer to [Roadmap](#roadmap) for progress.**\n\n### 1.理念\n\n正如其缝合的名字一样，Polymerium 的主要目标是整合 Minecraft\n的游戏资源，而非单单启动游戏。其使用与启动器完全不同的思路来管理游戏资源：创建实例元数据，使用部署引擎将游戏本地文件还原到元数据所描述的状态；\nPolymerium不维护游戏文件，只维护实例元数据。\n\n相比于其他国产的游戏核心概念和版本隔离模式，Polymerium 以更为抽象的“游戏体验”概念和其具象表现“实例”来管理游戏。\n这种方式结合了国际主流的现代化管理方式和 a little bit of personal flavor。\n\n有关于 Polymerium\n的模式请参阅[核心概念](https://github.com/d3ara1n/Polymerium/wiki/%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5)。\n\n## 1.Philosophy\n\nTo introduce the MMC-style of game resource \u0026 instance organizing into the domestic ecosystem.\n\n### 2.怎么又来一个?\n\n这不是 *launcher*，也不是压缩毛巾，这是 Polymerium —— *游戏实例管理器*。\n初衷是在用 PrismLauncher 的时候遇到一些问题并想出一些改进的的方法，不过在写代码、与 forge installer\n斗智斗勇的过程中已经忘记哪些改进了（囧。现在要回答这个问题的话，那么答案是：没有为什么，小孩子不懂事写着玩的。\n\n### 2.Why another launcher?\n\nGo back read the last section and you get it.\n\n### 3.跨平台\n\n跨。跨了 Windows 10 和 Windows 11 两个“平台”。\n\n### 3.Cross-platform\n\nAvailable in Windows 10\u002611 only.\n\n### 4.使用以下技术栈和工具构建 | Tech stack and toolchain\n\n* [![C#][CSharp]][CSharp-url]\n* [![dotnet][DotNet]][DotNet-url]\n* [![WinUI3][WinUI]][WinUI-url]\n* [![WindowsAppSDK][WindowsAppSDK]][WindowsAppSDK-url]\n* [![Rider][Rider]][Rider-url]\n* [![VisualStudio][VisualStudio]][VisualStudio-url]\n* [![VisualStudioCode][VSCode]][VSCode-url]\n\n\u003c!-- FEATURES --\u003e\n\n## II.特色 | Features\n\n- 🎨 Fluent Design \u0026 WinUI3\n- 💾 增量部署，使用软链接节省硬盘空间 | Pooled file objects \u0026 Symlink deployment.\n- 🎭 支持多账号且账号与实例绑定 | Instance linked multi account support.\n- 🎟️ 多种在线仓库，与 Curseforge 和 Modrinth 集成 | Integrated with Curseforge \u0026 Modrinth.\n- ☕ 手动配置 Java 并在运行时智能选择版本 | No stupid Java auto-detection. Configure Java once, configured every time.\n- 📜 实例元数据附件分层管理 | Layered attachment management.\n- ✨ 发布所游玩的实例为整合包，自动编写更新日志 | Publish the instance as a modpack with generated changelog.\n\n\u003c!-- GETTING STARTED --\u003e\n\n## III.安装和使用 | Getting started\n\n### 1.下载 | Download\n\n[![Microsoft Store](https://get.microsoft.com/images/en-us%20dark.svg)](https://www.microsoft.com/store/apps/9NGQHHCT2Q6Z)\n\n### 2.开启 Windows 开发者模式\n\n由于部署采用了 [Symbolic Link](https://www.wikiwand.com/en/Symbolic_link)，该功能需要管理员权限。\nWindows\n没有为打包的应用提供管理员权限申请能力，但提供了 [开发者模式](https://blogs.windows.com/windowsdeveloper/2016/12/02/symlinks-windows-10/)\n来降低创建软连接的特权要求。\n\n#### Windows 10\n\n`设置` 👉 `更新和安全` 👉 `开发者选项` 👉 `开发人员模式`\n\n#### Windows 11\n\n`设置` 👉 `系统` 👉 `开发者选项` 👉 `开发人员模式`\n\n#### 其他系统或其他 Windows\n\n不需要。只有 Windows 需要在创建软连接时提供管理员权限，也只有 Windows 10+ 才能使用 WinUi3 打包应用。\n\n### 2.Enable Windows Developer Mode\n\nDue to Windows constraints in [symlink](https://www.wikiwand.com/en/Symbolic_link), instance deployment requires\nfollowing additional steps to work.\n\n#### Windows 10\n\nGoogle it.\n\n#### Windows 11\n\nGoogle it.\n\n#### Other OS\n\nInstall Windows 10 or 11 then Google it.\n\n### 3.配置\n\n开箱即用。\n\n### 3.Setup\n\nAvailable out of the box.\n\n\u003c!-- ROADMAP --\u003e\n\n## IV.Roadmap\n\n* [x] 创建该项目\n    * [x] 起名字\n    * [x] 创建 Git 项目仓库\n    * [x] 在目录里随处撒上魔术粉\n* [ ] 实例管理\n    * [ ] 从空模板创建\n    * [ ] 导入\n        * [x] 导入预览对话框\n        * [ ] Poly-Pack\n        * [x] CurseForge\n        * [ ] Modrinth\n        * [ ] MMC-Pack\n    * [ ] 导出为 Poly-Pack\n* [ ] 实例操作\n    * [ ] 备份与还原\n    * [ ] 内置副产品管理（游戏模组资源包着色器包等称为 Resource，抽象；当其作为文件存在于游戏目录称为 Asset，只读；当其存在元数据中成为\n      Attachment，只读可固化为 Asset；游戏过程中产生的文件成为 Byproduct，可写且不断变化）\n        * [ ] 服务器查看与预览\n        * [ ] 存档查看与预览\n* [ ] 账号管理\n    * [ ] 账号提供方\n        * [ ] Microsoft 账号登录\n            * [x] 设备码添加账号\n            * [ ] 可用性检查与刷新\n        * [ ] authlib-injector 账号注入\n    * [ ] 无网模式\n* [ ] 部署引擎\n    * [x] 基于 Iterator 模型\n    * [x] 香草安装\n    * [x] 加载器安装\n        * [x] Forge\n        * [x] NeoForge\n        * [x] Fabric\n        * [x] Quilt\n        * [x] Trident Storage\n    * [x] 固化与还原\n    * [x] 基于文件池\n* [x] 还原引擎\n    * [x] 基于 Iterator 并发模型\n* [x] 发射引擎\n    * [x] 基于 Iterator 模型\n* [x] 下载引擎\n    * [x] 基于 Iterator 模型（错误的，什么都往这个模型套是过度设计，除了部署引擎本身就是串行的，其他引擎都是并行的，套到迭代器这种串行模型上面就是错误设计。真正的问题仅需\n      `Parallel.ForEach(x =\u003e DownloadAsync(x))` 甚至 `Task.WaitAll`\n      就能解决。但我还是要在未来实现它，因为并行工作用串行收集结果很优雅~）\n* [x] 资源仓库\n    * [x] CurseForge\n        * [x] 整合包\n        * [x] 模组\n        * [x] 资源包\n        * [x] 着色器包\n    * [x] Modrinth\n        * [x] 整合包\n        * [x] 模组\n        * [x] 资源包\n        * [x] 着色器包\n* [ ] 搜索\n    * [ ] 搜索中心\n        * [x] 互联网资源搜索\n        * [x] 导入在线整合包\n        * [x] 添加在线资源到本地实例\n        * [ ] 收藏合集：为一个（新）实例添加一系列资源，用以对公共整合包快速个性化\n* [x] 软件设置\n* [x] 游戏实例设置\n    * [x] 元数据编辑\n    * [x] 私有启动配置页面\n* [ ] 本地化\n\n更多细节请在 [Issues](https://github.com/d3ara1n/Polymerium/issues) 中查询。\n\n\u003c!-- Privacy --\u003e\n\n## V.隐私与数据收集\n\nPolymerium 没有遥测。\n\n但会在部分保存或导出的数据文件中包含隐私数据，其中包括：\n\n- 你的用户名：被包含在日志和临时文件中，通过 Home 目录暴露\n- 你使用的操作系统类型：被包含在日志和临时文件中，且仅有唯一的值 Windows\n\n上面有提到你的账号信息吗？没有，因为这部分信息不被保存在公共区域。\n\n\u003c!-- REFERENCES --\u003e\n\n## VI.资料和参考 | References\n\n* 游戏启动流程、Fabric/Quilt 部署: [Inside a Minecraft Launcher][Inside-A-Minecraft-Launcher]\n* 游戏启动流程: [教程/编写启动器][Tutorial-Making-Launcher]\n* Forge: [ForgeWrapper][ForgeWrapperRepo]\n* 微软验证: [Microsoft Authentication Scheme][Microsoft-Authentication-Scheme]\n\n十分感谢以上作者和所著文章。\n\n\u003c!-- I_HATE_THIS_WORLD --\u003e\n\n## VII.吐槽\n\n- Minecraft 官方的 Meta Launcher Api 给出的数据是多态模型\n- CurseForge Api V1 不在文档中标注可能为 null 的数据\n- Modrinth Api V2 不在文档中标注可能为 null 的数据，且不提供 V3 文档\n- PrismLauncher 的 Meta Launcher Api 定义了一系列 \"Component\"，但每个 Component 都有自己独特的数据结构：他们只是看起来相似，在某些地方，例如对\n  rules[].os 的定义，是不同的\n- Modrinth 整合包中的资源清单不一定包含元数据，有些有，有些没有，导致无法提取\n- Modrinth Api V2 的 Version.Loaders 字段中存在污染数据需要手动过滤\n\n\u003c!-- LICENSE --\u003e\n\n## License\n\nDistributed under the MIT License. See `LICENSE.txt` for more information.\n\n## Stats\n\n![Alt](https://repobeats.axiom.co/api/embed/594b206d199e6aae83226e6b7b834f6896322858.svg \"Repobeats analytics image\")\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n\n[contributors-shield]: https://img.shields.io/github/contributors/d3ara1n/Polymerium.svg?style=for-the-badge\n\n[contributors-url]: https://github.com/d3ara1n/Polymerium/graphs/contributors\n\n[forks-shield]: https://img.shields.io/github/forks/d3ara1n/Polymerium.svg?style=for-the-badge\n\n[forks-url]: https://github.com/d3ara1n/Polymerium/network/members\n\n[stars-shield]: https://img.shields.io/github/stars/d3ara1n/Polymerium.svg?style=for-the-badge\n\n[stars-url]: https://github.com/d3ara1n/Polymerium/stargazers\n\n[issues-shield]: https://img.shields.io/github/issues/d3ara1n/Polymerium.svg?style=for-the-badge\n\n[issues-url]: https://github.com/d3ara1n/Polymerium/issues\n\n[license-shield]: https://img.shields.io/github/license/d3ara1n/Polymerium.svg?style=for-the-badge\n\n[license-url]: https://github.com/d3ara1n/Polymerium/blob/master/LICENSE.txt\n\n[product-screenshot]: assets/images/Screenshot.gif\n\n[CSharp]: https://img.shields.io/badge/C%23-12-239120?style=for-the-badge\u0026logoColor=white\n\n[CSharp-url]: https://learn.microsoft.com/en-us/dotnet/csharp/\n\n[DotNet]: https://img.shields.io/badge/.NET-8-5C2D91?style=for-the-badge\u0026logoColor=white\n\n[DotNet-url]: https://dotnet.microsoft.com/\n\n[WinUI]: https://img.shields.io/badge/WinUI-3-0F5197?style=for-the-badge\u0026logoColor=white\n\n[WinUI-url]: https://microsoft.github.io/microsoft-ui-xaml/\n\n[WindowsAppSDK]: https://img.shields.io/badge/Windows%20App%20SDK-1.5-20000?style=for-the-badge\u0026logoColor=white\n\n[WindowsAppSDK-url]: https://github.com/microsoft/WindowsAppSDK\n\n[Rider]: https://img.shields.io/badge/Rider-DE1369?style=for-the-badge\u0026logo=Rider\u0026logoColor=white\n\n[Rider-url]: https://www.jetbrains.com/rider/\n\n[VisualStudio]: https://img.shields.io/badge/Visual_Studio-5C2D91?style=for-the-badge\u0026logo=visual%20studio\u0026logoColor=white\n\n[VisualStudio-url]: https://visualstudio.microsoft.com\n\n[VSCode]: https://img.shields.io/badge/Visual_Studio_Code-0078D4?style=for-the-badge\u0026logo=visual%20studio%20code\u0026logoColor=white\n\n[VSCode-url]: https://code.visualstudio.com/\n\n[Inside-A-Minecraft-Launcher]: https://ryanccn.dev/posts/inside-a-minecraft-launcher\n\n[Tutorial-Making-Launcher]: https://minecraft.fandom.com/zh/wiki/%E6%95%99%E7%A8%8B/%E7%BC%96%E5%86%99%E5%90%AF%E5%8A%A8%E5%99%A8\n\n[ForgeWrapperRepo]: https://github.com/ZekerZhayard/ForgeWrapper\n\n[Microsoft-Authentication-Scheme]: https://wiki.vg/Microsoft_Authentication_Scheme\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd3ara1n%2FPolymerium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd3ara1n%2FPolymerium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd3ara1n%2FPolymerium/lists"}