本帖最后由 秦无心_Renoi 于 2020-3-16 16:22 编辑


前言

在 2018 年 12 月 10 日,Minecraft mod 界大佬 asiekierka 发表声明,Fabric 隆重登场,并随着 1.14 和 1.15 快照的发展一直走到今天。它的背后究竟有什么故事?为什么它在 1.14 的时候诞生而不是 1.13?


注:有问题需要楼主补充直接留言要求就行。

人物




























Thog, ShadowFacts, mezz, Nedelosk, Unascribed, copygirl



其它还有一些人物,比如 InsomniaKitten(Chloe Dawn)、jamierocks、Chocohead、kashike、liach(不要脸的楼主把自己放进来了)、3TUSK(u.s.knowledge)、Danielshe等为 Fabric 做过贡献。


术语































历史

你以为 Fabric 是 Forge 的分支不肖子孙吗?
错了。

Fabric 的传承

一般大家概念中,Mod 加载器就是 Forge 一家独大,偶尔 LiteLoader 出来冒个泡。

但是 1.13 时 Forge 大重写给很多新型 Mod 加载器冒泡的机会。尝试过的 Mod 加载器也不止一个(Rift、OpenModLoader、Fabric),为什么 Fabric 在轻量级加载器的战争中获胜?

Minecraft Mod 加载器有很多,但是随时间推移,在 1.6 中 ModLoader 弃坑后,因为维护成本等原因,Forge 一家独大。(Sponge API 规模上也可以算重量级加载器,但是并不提供注册物品等非插件功能)

剩下就是轻量级加载器的战场了。
这中间最有名的是的 LiteLoader 了。
虽然 LiteLoader 主要加载客户端 mod,但是实际上也可以加载添加物品、方块等的大型 mod。有个BlazeLoader就是基于 LiteLoader 加载器的一个 mod API。

在 Forge 一家独大的时候,风平浪静的表面下却是暗流涌动。
有很多 Mod API 存在过,又烟消云散了。Paper Mod Loader运气还算好,在 GitHub 上留了个全尸;在现在的 OpenModLoader 之前实际上还有一个老的 OpenModLoader,连骨灰都不剩了(modmuss50 电脑本地有存档)。

说 Fabric 是 Forge 的竞争者,更不如说它是这些夭折工程中的幸运儿。

创作者走向

在 Fabric 的聊天群和 Mod 作者中,大概有这几类:
  • 技术类玩家:MinecraftCommands reddit 的 Discord 群就在帮助中放了 Fabric 群的加群链接,Carpet Mod(一个原版技术 debug 类的模组)也搬运到了 Fabric
  • 新快照玩家:有些 Minecraft Wiki 编辑员参与 yarn 工程以更好了解新快照的添加内容和变动,再添加至 Wiki 上。
  • 想搬运 mod 到新快照的人:可以尝鲜
  • 讨厌 Forge 的人:Fabric 气氛相对更自由
  • 作弊端作者:Aristois 作弊客户端从独立 mod 变成了 Fabric 模组,可以更快更新,吸引用户
  • 前 LiteLoader/Rift 作者:VoxelMap AutoFish 等多个 1.12.2 的 LiteMod 因为 LiteLoader 弃坑,1.13 改用 Rift,而 1.14 改用 Fabric。


为什么 Fabric 一炮成名

asiekierka 总结,Fabric 的成功和在 Feedthebeast reddit 上的帖子息息相关。的确如此;Fabric 群中大多数成员都是在 2018 年 12 月 10 日发帖后才加入的。

然而除此之外,Fabric 为什么能有如此好的基建呢?楼主认为还是 Fabric 作者们肝出来的,比如 Knot 启动器(兼容 Java 8 以上版本)和 Mixin 的 Knot 兼容层都是 asiekierka 自己写的。Forge 虽然有重构,但是本末倒置,基建一团糟就急功近利。ModLauncher 名义上高大上,但是实际使用并不多,连 Optifine 都不用;而 Knot 却成功很多,实现了更安全的字节码修改。ForgeGradle 3 稳定性还没有 ForgeGradle 2 好,所以 Rift 使用了修改版的 ForgeGradle 2。

Forge 的说法

Fabric 如火如荼,当然就有人去问 Forge 对 Fabric 的看法。Forge 开发组在 2019 年 6 月 2 日的 Forge Annual Parley 上也简单回答了几个问题。
某人写的 Forge Annual Parley 总结
Forge 和 Fabric 互动:
  • Forge 不会加载 Fabric mod(正常,Forge 也不会加载 LiteMod)
  • 共同运行:需要统一名称,Searge name 和 intermediary name 二选一(说实话,Forge + Bukkit 这种操作多的是,不会难的)

开发者合作:
  • 各人自扫门前雪,莫管他人瓦上霜
  • 有需求可以随时沟通

Fabric 更新快的原因:
  • Forge 在大动筋骨,Fabric 趁机出头(骗骗无知群众可以,看过 OpenModLoader 嗝屁的就知道没那么简单)
  • Fabric 补丁少(如果是纯 Loader 补丁更少)
  • Forge 更新快照的话维护成本太高(Forge 对自身的评估还是比较准确的)
  • Forge 要维护 Searge name,Fabric 不用(不是也有 intermediary……楼主认为只是 MCP 用的匹配工具没有 sfPlayer1 写的 Matcher 高效而已)
  • Fabric 的目标是轻量和模块化(很对)
  • Fabric 年轻(也是 2016 年的了,有点年头了)


Fabric 的弱点

Fabric 亮点很多,但是也有弱点。

Fabric 的玩家用户不多。Mod 在 curseforge 上的下载量都偏低。Twitch 启动器也不支持 Fabric。
Fabric 的有些基础设施还需要改进,比如 Enigma 反混淆软件和 procyon 反编译器还有一些 bug。loom 也有些小问题。