
碎片
通过由裂隙门户连接的碎片世界网络探索Hytale,这些门户会随时间不断生成、移动和坍塌。
查看大图Shards 能将你的 Hytale 体验转变为一张不断变化的、由动态裂隙传送门连接的实例世界网络。裂隙和碎片世界会持续生成、演变并最终崩塌,让你在探索时始终处于变化之中。
非常欢迎在 Hytale Modding Discord 的项目帖子中提供反馈。
更新动态:随着“新世界”竞赛的结束,我正在进行后台工作。我打算利用所学知识改进插件的内部机制,使其成为更好用的工具,并提供更佳体验。同时,我也在考虑为插件创建一个新名称,因为之前我并不知道“shard”在多服务器设置中也是一个术语,为了避免混淆,我认为有必要做出改变。
开箱即用
安装插件并开始新游戏。你会出生在一个被虚空环绕的小岛上。默认世界被刻意设计得极其简约,它作为你的基地和通往其他所有地方的中心枢纽。(在较新版本中)碎片世界将由你的记忆等级锁定,因此前往遗忘神殿,开始获取记忆吧。
一旦你的记忆达到第一个里程碑,即10个记忆时,传送裂隙很快就会在岛上出现。地图上会出现黄色传送门标记作为提示。前往其中一个,对着裂隙方块按住F键,即可穿越它进入一个碎片世界。
碎片世界基于Hytale的4个默认区域,总共生成11个碎片世界(每个子区域对应一个)。每个碎片世界都被拆分为独立的实例世界。连接它们的裂隙经过配置,使得更高级别的区域需要多次跳跃才能到达,从而赋予探索一种自然的递进感。
如果你在碎片世界中时它崩塌了,默认世界设定的死亡配置行为将应用于你。这取决于你在创建新游戏时的设置。Hytale的默认设置是损失50%的特定物品和10%的耐久度。
整体体验接近原版Hytale。该插件被设计成附加性的,你在原版中能做的任何事都不会被封锁。
不想要默认的岛屿世界?
如果你希望保留默认世界为原版,也是可行的。只需确保你的默认世界 config.json 文件明确将世界生成设置为 Hytale 的默认值。
{
"WorldGen": {
"Type": "Hytale"
}
}
可配置性
该插件基于两种可配置的资源类型构建:ShardType 和 RiftType。它们通过资源编辑器定义,并控制着存在哪些世界以及它们之间如何连接。
ShardType
ShardType 定义了一个碎片世界。它指向任意 Hytale 实例资源,并控制该世界的行为方式。可以配置其生命周期、加载方式以及它容纳哪种裂隙。任何实例资源都可以使用,但并非所有实例都能保证兼容。在任何给定时间,每个 ShardType 只存在一个碎片世界实例。
RiftType
RiftType 定义了裂隙如何生成以及它连接到哪里。你可以将 RiftType 配置为静态裂隙,它总是从某个特定的 ShardType 或默认世界出发。这驱动了整个网络拓扑结构。通过在你的 ShardType 资源之间串联 RiftType 配置,你就能控制玩家如何在世界之间导航。
ShardPool
ShardPool 是一组 ShardType,如果启用,插件将自动加载它们。它包含各种设置,例如目标加载数量和记忆等级要求。你可以创建自定义的 ShardType,并为其设置连接到默认世界或基础碎片世界的静态裂隙,然后将其插入到 ShardPool 中。这样,你自己的碎片世界就会被纳入网络。
config.json
config.json 文件位于 mods/Codari_Shards 文件夹中。目前,它是将自定义资源接入插件运行时行为的唯一方式。以下是可用选项……
"DefaultWorldStaticRifts":一个 RiftType 资源 ID 数组。这些是插件将在默认世界中生成的静态裂隙。裂隙在寻找世界时可以加载一个 ShardType,允许你从默认世界添加通往自定义碎片世界的静态裂隙。
"ManagedShardGroups"(v0.3.1 及以下版本):一个对象数组,用于指示插件哪些碎片世界需要保持活跃加载状态以及每次加载的数量。插件会每30秒从每个组中自动加载一个 ShardType,直到达到设定上限。此功能被视为实验性,但目前仍是一个可选项。以下是使用示例。
"ManagedShardGroups": [
{
"ShardTypes": [ "My_Shard_Type_A", "My_Shard_Type_B", ... ],
"TargetCount": 2
}
]
"ShardPoolOverrides"(v0.4.0 及以上版本):一个从 ShardPool 资源 ID 到覆盖条目的文档映射。通过此设置,服务器所有者可以决定如何覆盖 ShardPool 的行为。以下是定义方式和可用值的示例。
"ShardPoolOverrides": {
"MyShardPoolAsset": {
"Enabled": true,
"TargetCount": 2,
"Priority": -3,
"RequiredMemoryLevel": 3
}
}
添加你自己的碎片世界
v0.3.1 及以下版本
尽管是实验性的,但使用 "ManagedShardGroups" 方法是将自定义碎片类型插入到默认网络中的最佳方式。
- 创建一个使用你所需实例的
ShardType。 - 将一个静态
RiftType嵌入你的ShardType,并配置它连接到现有网络中的一个碎片类型。 - 将你的
ShardType添加为托管碎片,以便它可以被生成。
这将使你的碎片世界被加载,并尝试在加载后建立一个裂隙连接到你的目标世界。
v0.4.0 及以上版本
- 创建一个
ShardType,并为其填充连接到默认世界或基础碎片世界的静态裂隙。 - 创建一个包含你的
ShardType的ShardPool,并按你的喜好进行配置。确保将 "EnabledByDefault" 设置为 true。
就这样,大功告成。你的碎片世界现在会被加载并包含在网络中。
命令(开发中)
/shards list:列出所有已加载和正在加载的碎片世界/shards load <shard_type>:将指定的碎片类型加载到一个世界中/shards unload <shard_type>:卸载指定的碎片世界(如果已加载)/shards tp <shard_type>:传送你到指定的碎片世界(如果已加载)/shards lifetime get --type <shard_type>:获取你所处碎片世界或目标碎片世界的剩余生命周期。向你显示时间和状态。/shards lifetime set --type <shard_type> --hours <integer> --minutes <integer> --seconds <integer>:设置你所处碎片世界或目标碎片世界的剩余生命周期。/shards lifetime set <lifetime_status> --type <shard_type> --offset <number>:设置你所处碎片世界或目标碎片世界的生命周期状态。可以设置相对于所设生命周期状态的时间偏移。/shards lifetime pause --type <shard_type>:切换你所处碎片世界或目标碎片世界的暂停状态。/rifts lifetime get --uuid <uuid> --block <x, y, z> --world <world_name>:获取目标裂隙的剩余生命周期。/rifts lifetime set --uuid <uuid> --block <x, y, z> --world <world_name> --hours <integer> --minutes <integer> --seconds <integer>:设置目标裂隙的剩余生命周期。/rifts lifetime set <lifetime_status> --uuid --block --world --offset <number>:设置目标裂隙的生命周期状态。/rifts lifetime pause --uuid <uuid> --block <x, y, z> --world <world_name>:切换目标裂隙的暂停状态。
未来计划
近期重点是优化开箱即用体验。长期目标是让 Shards 成为一个灵活的工具,供服务器所有者定义和运行他们自己的自定义碎片世界设置。
- 几乎没有生命周期反馈:目前,当碎片世界即将崩塌时没有任何提示。裂隙目前有视觉上的反馈,但也仅限于此。
- 命令:命令目前仍在开发中,对我来说优先级较低。
- 碎片与裂隙控制:这是一个更长期的功能,计划增加控制碎片世界及其连接裂隙生命周期的能力。
- 碎片锚点:一种可以放置在碎片世界中以冻结其生命周期的方块。这可以让你在你最喜欢的生物群落中建立基地,或者让玩家在碎片网络内形成城镇。内置的此功能需要消耗某种资源来维持。
- 碎片破坏器:与碎片锚点相反,是一种可以摧毁碎片世界,并在经过一段时间并消耗资源后强制其崩塌的方块。
- 锚点与破坏器的裂隙版本:功能相同,但针对裂隙。
- 裂隙生成器:一种可以配置生成特定裂隙类型的方块。这可以让你建立固定位置的静态裂隙。
- 扩展可配置性:长期目标是使这个插件成为一个通用工具,允许服务器所有者自定义他们的碎片体验,或将其作为其他插件/模组的依赖项。
- 开放许可:另一个长期目标是将插件拆分为两部分。其中一个最终将成为开源工具
ShardsCore,而另一个将作为我使用其打造的体验,保持为AAR。
正在加载版本记录…

正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。