更好的运行时资源包

更好的运行时资源包

一个在运行时生成资源的库模组。基于ARRP模组并进行了增强。

基础库

BRRP(更好的运行时资源包)是一个用于在运行时生成资源的库模组,它是 ARRP(高级运行时资源包)模组的一个分支。

欢迎加入腾讯QQ群 587928350 或 KOOK(开黑啦)频道邀请码 KlFS0n,体验本模组的最新更新。

注意:自 1.0.0 版本起,本模组的 ID 已从 better_runtime_resource_pack 更改为 brrp_v1,并且代码已修改,不再兼容旧版本,但可以与旧版本共存。除非必要,请勿使用旧版本。

什么是运行时资源包?

运行时资源包(RRP)是指在 Minecraft 运行时生成的资产和数据文件,以避免一些重复性工作。对于拥有大量相似方块和物品的模组,运行时资源包有助于显著减小模组文件的大小。

例如,大多数方块战利品表可以描述为“掉落方块本身”。有些方块只有在使用精准采集时才会掉落。对于台阶方块,当破坏双台阶方块时,会掉落两个方块而不是一个。在战利品表中,每个方块都需要一个战利品表 JSON 文件;创建这些文件相当耗时。此外,几乎每个方块都需要“方块状态”文件、方块模型和物品模型(方块模型可能不止一个)。如果再加上战利品表和配方(如果存在),每个方块至少需要 5 个 JSON 文件才能实现完整功能。相比之下,运行时资源包使这些内容在游戏实例内生成,而不是存储在模组 JAR 文件中。

就功能而言,运行时资源包与常规资源包没有区别。普通资源包(包括模组内置资源和手动安装的资源包或数据包)可以覆盖运行时资源包的内容,也可以与运行时资源包建立关联。一个典型的例子是,方块模型在运行时资源包中定义,而其纹理文件则照常存储在模组文件中(因为在运行时生成纹理文件并不合适)。

与传统资源包相比,运行时资源包减少了 I/O 操作,但增加了对象序列化的过程,这是运行时资源包的一个缺点。当生成资源包时,对象会被转换为字节形式(通常是 JSON)。这个过程称为序列化。当游戏实例读取这些资源包时,这些字节形式的内容会被分析以生成游戏中的对象。这个过程称为反序列化。在传统资源包中,所有资源都已序列化,游戏实例在加载资源时只需反序列化它们。然而,运行时资源包需要序列化和反序列化两个过程。

再次总结一下传统资源包和运行时资源包在游戏中的读取过程:

  • 传统 文件 →(读取为)字节形式 →(反序列化为)游戏内对象
  • 运行时 代码 → ARRP 对象 →(序列化为)字节形式 →(反序列化为)游戏内对象

我计划在未来的版本中,实现直接使用游戏中生成的对象,而无需经过反序列化和序列化的过程。这在理论上已经可行,但要以资源包的形式存在,并允许被传统资源包和数据包覆盖,还需要进一步研究。

关于本模组

本模组(BRRP)是 ARRP 的一个分支。自 1.0.0 版本起,本模组已独立于 ARRP,不再提供 ARRP 的功能,但可以与 ARRP 模组共存。

本模组是开源的,并在 MPLv2 许可下发布。

更多详情可在 GitHub 上查看。