Re:Loop

Re:Loop

一个《Re:从零开始的异世界生活》的死亡回归模组

恐怖

Re:Loop

如有任何问题或Bug,请评论以便我修复。

Re:Loop 是一个适用于 Minecraft 1.20.1 的实验性 Forge 模组,它添加了一个受“死亡回归”启发的“时间线回滚”系统。与普通的重生模组不同,Re:Loop 试图在玩家死亡后,将世界、玩家以及附近的重要事件恢复到上一个有效的检查点。

该模组的设计理念是:玩家在重复的循环中生存下来,而世界则会对危险情况、探索进度、Boss 遭遇战、多人游戏中的邻近关系、物品栏变化以及检查点之后执行的重大操作做出反应。

Re:Loop 目前处于 Alpha 阶段。该模组比以前测试版本更稳定,但某些系统仍不完整或处于活跃开发中,尤其是在大型整合包、旧测试世界、复杂的模组环境、以及包含大量实体、方块实体、自定义战利品系统或维度变化的世界中。

主要特性

死亡回归系统

Re:Loop 会指定一个“死亡回归持有者”,并将该玩家作为触发时间线恢复的主要目标。当持有者受到致命伤害或死亡时,模组会尝试取消正常的死亡流程,并将当前时间线恢复到最新的有效检查点。

该系统可以恢复以下内容:

  • 玩家位置
  • 维度
  • 旋转角度
  • 生命值
  • 吸收值
  • 饥饿值
  • 饱和度
  • 消耗度
  • 氧气值
  • 着火刻数
  • 摔落距离
  • 冰冻刻数
  • 经验等级
  • 总经验值
  • 经验进度
  • 物品栏
  • 选中的快捷栏格子
  • 末影箱
  • 激活的药水效果
  • Forge 玩家数据
  • Forge 能力(Capabilities),包括对便携装备类型数据的支持,例如类似 Curios 的插槽、饰品、神器、戒指、腰带、项链、遗物以及类似的模组装备系统

Re:Loop 在回滚后还会包含验证过程,以确保玩家恢复后的物品栏、末影箱、便携装备能力以及生存状态保持同步。

自适应检查点

Re:Loop 并非每隔几秒就简单保存一次。它使用一个自适应检查点引导器,根据玩家所处的情况来决定何时设置检查点才是合理的。

检查点系统可以识别多种不同的情境,包括:

  • 稳定的安全区域
  • 玩家住所
  • 在床上睡觉
  • 在危险过后安全回家
  • 安全的闲置或类似暂停的时刻
  • 适合退出的安全情况
  • 基于移动的探索进度
  • 从危险中逃脱
  • 危急关头逃脱的情况
  • 靠近危险的安全区域
  • 危险区域内的安全点
  • 受伤但稳定的危险时刻
  • 危险的僵持局面
  • 洞穴入口
  • 地牢入口
  • 结构入口
  • 结构解锁时刻
  • 结构临界时刻
  • 已清理的结构
  • 已清理的地牢
  • 临时营地
  • 危险区域内的临时住所
  • 已确保安全的路径
  • 探索后确保安全的战利品
  • 确保安全的有价值战利品
  • 基地防御时刻
  • 成功抵御袭击或类似事件的时刻
  • Boss 狩猎进度
  • Boss 边界入口
  • Boss 区域入口
  • Boss 被击败的状态
  • Boss 战后安全撤离
  • 传送
  • 安全到达传送目的地
  • 进入维度
  • 安全抵达维度
  • 进入维度之前的时刻
  • 使用传送回家能力到达的时刻
  • 重要行动前的准备出发
  • 冒险事件前的决心行动

当玩家或队伍处于不安全状态时,系统也会阻止不恰当的检查点,例如:

  • 死亡或垂死状态
  • 着火或处于熔岩中
  • 坠落中
  • 刚刚受到伤害
  • 处于不安全的开启容器内
  • 处于载具或乘客关系中
  • 存在时间过短,无法安全保存
  • 处于不安全的转换过程中
  • 有未解决的先前回滚遗留问题
  • 附近有玩家处于不安全状态且他们属于检查点上下文的一部分

这是为了避免玩家被保存在不可能或不公平的境地。

多人游戏时间线恢复

Re:Loop 支持多人游戏时间线逻辑。当发生回滚时,模组可以恢复连接到当前活跃时间线上下文中的玩家,而不仅仅是死去的那个。

它会追踪玩家的快照,并可以在同一次回滚操作中恢复多名玩家。在接受新检查点之前,它还会考虑邻近关系、共享进度、相关玩家的影响以及队伍安全。

对于某些“回家”情况,该模组包含了“共享命运”式的检查点行为,即其他玩家可能会影响检查点是立即被接受,还是延迟到整个队伍安全为止。

世界时间和天气回滚

Re:Loop 在检查点存储世界时间线状态,并尝试恢复以下内容:

  • 世界白天时间
  • 天气状态
  • 降雨状态
  • 雷暴状态
  • 降雨计时器
  • 雷暴计时器
  • 晴朗天气计时器

这有助于让回归感觉像是真正的时间线回滚,而不仅仅是移动玩家。

方块回滚系统

Re:Loop 会追踪检查点之后的方块变化,并尝试在回归时恢复它们。

方块回滚系统可以追踪和处理:

  • 被破坏的方块
  • 被放置的方块
  • 被替换的方块
  • 方块状态变化
  • 方块实体 NBT 变化
  • 农作物生长
  • 耕地被踩踏
  • 基于工具的方块修改
  • 流体方块放置
  • 相邻方块更新
  • 下界传送门区域变化
  • 受爆炸影响的方块
  • 与火焰和燃烧相关的变化
  • 受重力影响的方块
  • 含水状态
  • 类似红石的状态
  • 多方块部件风格的方块
  • 依赖于支撑的方块
  • 连接性敏感的方块
  • 带有物品栏或方块实体的方块

回滚分类器会将简单方块与更复杂的案例分开。它使用安全标志,而不是盲目地以相同方式恢复所有内容。这有助于降低流体、方块实体、模组方块、物品栏、重力方块、连接方块和复杂方块状态带来的损坏风险。

方块实体和容器恢复

Re:Loop 可以追踪方块实体容器,并在回归时恢复其存储的 NBT。

这包括类似容器的方块实体,例如箱子和其他基于物品栏的方块,并进行了特殊处理,以避免将已修改的状态作为新的真实状态捕获。

该模组还会追踪容器交互、存入、取出、格子变化、打开容器和关闭扫描,以便在循环过程中更准确地恢复物品移动。

物品、掉落物和拾取物品处理

Re:Loop 包含专门的物品回归逻辑,而不是将所有掉落物品都视为普通实体。

它会追踪:

  • 检查点后玩家丢出的物品
  • 检查点后拾取的物品
  • 检查点后生成的新物品实体
  • 方块被破坏后产生的方块掉落物
  • 回归时应该清理的物品实体
  • 如果在检查点后被拾取,则应恢复的物品
  • 当区块未加载时的延迟物品回归列表

其目标是防止常见的回滚 Bug,例如掉落物重复、玩家丢出的物品丢失、已拾取物品缺失、或清理系统删除了在回归期间创建的作品。

经验球处理

Re:Loop 会追踪检查点后创建的经验球,并尝试在回归时正确清理或恢复它们。

它包括用于当区块未加载时的经验球延迟回归列表,并且可以请求临时的回归区块门票,以便延迟的经验清理可以完成,而不是无声地丢失。

实体回滚系统

Re:Loop 分别追踪几种类型的实体:

  • 临时实体
  • 弹射物
  • 区域效果云
  • 闪电
  • 箭矢
  • 三叉戟
  • 雪球
  • 鸡蛋
  • 末影珍珠
  • 经验瓶
  • 药水
  • 火球
  • 凋灵头颅
  • 潜影贝子弹
  • 钓鱼浮漂
  • 装饰实体
  • 盔甲架
  • 物品展示框
  • 画
  • 类展示实体
  • 生物实体
  • 模组生物
  • 类 Boss 实体
  • 运行时 Boss 效果
  • 下落的方块
  • 已激活的 TNT
  • 瞬态炸药

生物实体可以使用快照事务进行捕获。Re:Loop 在安全时尝试完整的 NBT 恢复,并在完整 NBT 可能存在风险时回退到更安全的自适应恢复。

对于生物实体,Re:Loop 可以恢复或重新应用:

  • 实体类型
  • 位置
  • 旋转角度
  • 运动
  • 重力状态
  • 地面状态
  • 生命值
  • 吸收值
  • 氧气值
  • 着火刻数
  • 冰冻刻数
  • 摔落距离
  • 主手物品
  • 副手物品
  • 盔甲
  • 激活的状态效果
  • 基本的 AI 战斗清理,例如在恢复后清除目标和攻击性

如果一个实体在结构上看起来很复杂,例如多方块实体、骑乘实体、带有乘客的实体、被拥有的或被驯服的实体、Boss 阶段实体、拥有繁重脑部或能力的实体,或带有风险内部数据的模组实体,Re:Loop 会避免强制进行不安全的完整 NBT 恢复,并保留恢复列表,而不是假装回滚已完成。

Boss 和危险事件处理

Re:Loop 包含能感知 Boss 的回滚逻辑。它可以通过方块交互、实体交互、类似刷怪笼的系统、传送门、类 Boss 实体以及高生命值或带有 Boss 名称的生物来检测可能的 Boss 激活。

系统试图区分:

  • 主要的 Boss 实体
  • 运行时 Boss 攻击
  • 弹射物
  • 危险物
  • 持久的 Boss 机制
  • 视觉或交互实体
  • 静态装饰实体
  • 类似激活器的实体
  • Boss 竞技场机制

这有助于避免删除重要的模组 Boss 控制器或破坏 Boss 竞技场,同时仍然清理临时攻击、弹射物、危险物和检查点后的实体,这些实体不应在回归后存在。

爆炸、TNT、下落的方块和火焰

Re:Loop 对危险的类物理事件有专门的处理。

它可以追踪和处理:

  • 受爆炸影响的方块
  • 爆炸后掉落物清理区域
  • 检查点后生成的已激活 TNT
  • 检查点 TNT 和炸药实体
  • 下落的方块实体
  • 检查点下落的方块恢复
  • 火焰蔓延和与燃烧相关的方块
  • 检查点后火焰清理

这旨在使爆炸、下落的方块、TNT 链式反应和火焰伤害后的回归更加一致。

区块感知的延迟回滚

Re:Loop 不会在回滚目标位于未加载的区块时直接放弃。

该模组会追踪以下内容的延迟回滚列表:

  • 未加载的方块回滚记录
  • 方块实体容器恢复
  • 物品恢复
  • 经验球清理
  • 实体恢复
  • 生物实体验证
  • 方块回滚验证
  • 基于区块的回归工作

它可以请求临时的回归区块门票,以便在所需的区域变得可用时,延迟的回滚工作可以继续进行。

回归验证和列表系统

Re:Loop 将未完成的回归工作作为真正的回滚列表进行追踪。

这包括以下内容的列表:

  • 物品
  • 物品区块工作
  • 容器格子恢复
  • 方块实体容器
  • 方块掉落物
  • 方块回滚队列
  • 未加载的方块回滚
  • 回归区块门票
  • 经验值
  • 下落的方块
  • 炸药
  • 火焰
  • 实体
  • 方块回滚验证
  • 方块状态检查

如果关键的回滚列表仍处于待处理状态,Re:Loop 可以阻止新的检查点,这样模组就不会将不完整或损坏的回滚后状态保存为新的时间线。

客户端效果

Re:Loop 为回归体验包含客户端反馈。

当前的客户端效果包括:

  • 死亡回归音效
  • 短暂的回归迷雾效果
  • 原版风格的回归效果
  • 死亡压迫视觉
  • 单色曝光系统
  • 单色觉醒进度
  • 基于着色器的单色效果分段
  • 用于回归迷雾、死亡压迫、单色状态和强制重生的网络数据包

视觉系统与循环进度、记忆、死亡压迫和回归曝光相关。

循环进度

Re:Loop 追踪玩家特定的循环数据,包括:

  • 回归持有者状态
  • 觉醒的回归持有者状态
  • 回归亲和力
  • 循环记忆
  • 魔女气味
  • 上次回归时间
  • 死亡压迫
  • 死亡压迫连续次数
  • 曝光计数
  • 单色曝光
  • 单色锁定状态
  • 循环次数
  • 检查点影响力
  • 进度影响力
  • 击杀 Boss 影响力
  • 检查点后物品、方块和实体的影响力

死亡压迫会根据死亡类型、重复死亡、有价值物品的损失、类 Boss 进度、挑战性进度以及检查点后的重大进展而增加。它也可以在生存一段时间后衰减。

影响力追踪

Re:Loop 会追踪检查点后的重要操作,以了解当前循环的意义有多大。

追踪的影响力包括:

  • 破坏方块
  • 放置方块
  • 拾取物品
  • 丢弃物品
  • 击杀实体
  • 击杀 Boss
  • 进度达成
  • 高级进度达成
  • 挑战类进度达成
  • 有价值物品丢失
  • 物品栏价值变化
  • 末影箱价值变化

此数据用于死亡压迫、检查点决策和循环进度。

面向安全的模组兼容性

Re:Loop 的构建考虑到了模组生存环境。它不会试图通过简单地忽略所有模组内容来解决兼容性问题。

相反,它使用分类、阶段性恢复、延迟列表、验证以及针对困难情况的更安全的回退行为。

对于有风险的模组内容,Re:Loop 可能会:

  • 在安全时恢复完整状态
  • 在完整状态不安全时,恢复部分物理或关键状态
  • 对装备和效果使用自适应恢复
  • 保留列表供以后验证
  • 在重复回滚失败后对实体进行轻度保护
  • 避免对复杂机制强制使用不安全的 NBT
  • 在关键的恢复工作未完成时,避免保存新的检查点

Re:Loop 仍然是实验性的,但当前的构建版本比早期的测试版本更稳定。

最近的版本改进了几个核心系统,包括检查点选择、玩家恢复、物品栏和末影箱验证、方块回滚调度、物品/掉落物处理、回归列表追踪、基于区块的延迟回滚以及回归期间的总体性能。该模组现在在避免不完整检查点、追踪未完成的回滚工作以及防止一些旧版回滚 Bug(例如掉落物重复、未完成的方块列表以及沉重的区块门票循环)方面表现得更好。

然而,Re:Loop 仍然没有完成。一些回滚系统仍在测试和改进中,尤其是在大量使用模组的世界中。

已知的可能仍需测试和改进的领域包括:

复杂的模组实体
多方块生物
骑乘生物和乘客关系
Boss 机制
实体控制器
重复回归后的敌对生物恢复
会放置或破坏方块的生物
检查点后生成的生物掉落物
Lootr 及类似 Lootr 的存储变体
模组存储方块
背包类系统
类似 Curios 的系统
便携装备能力
方块实体
容器
掉落物
经验球
高草之类的高草方块及类似的多方块方块
灯笼、火把、铁轨、按钮、拉杆等依赖于支撑的方块
维度以及遥远的回滚目标
世界时间、昼夜和天气的边缘情况
传送门
爆炸
流体
下落的方块
多人游戏回归
大型整合包
重型生存服务器
使用旧版 Re:Loop 测试版本创建的世界

关于旧世界的重要说明:

使用旧版 Re:Loop 版本测试过的世界可能包含旧的回滚数据、未完成的区块列表或受先前实验版本影响的区块区域。新世界的表现预计会比旧的测试世界更一致。如果您正在认真测试 Re:Loop,建议使用新世界。

请将此版本视为 Alpha 版本。它比以前更稳定,但仍可能包含 Bug、不完整的回滚行为、兼容性问题或需要更多测试的边缘情况。

如果您发现问题,请报告以下信息:

Minecraft 版本
Forge 版本
Re:Loop 版本
整合包或模组列表
日志
检查点之前发生了什么
死亡/回归后发生了什么
哪些内容没有正确恢复
问题发生在检查点附近还是远处
问题发生在新世界还是使用旧版 Re:Loop 构建的旧世界中

推荐用途

Re:Loop 推荐给那些想要体验实验性、高风险生存机制的玩家,该机制灵感来自时间线循环和“死亡回归”式的后果。

它最适合在测试世界、新的生存世界或整合包中使用,在这些环境中玩家对 Alpha 版本的行为感到舒适,并且愿意报告问题。

不建议在没有备份的情况下,在重要的长期世界中使用此模组。

如果您在重要的生存世界中使用 Re:Loop,请经常备份。