跳到正文

Replay FPS

作者:Igrium

Replay Mod 的附属模组,改进第一人称视角的处理方式。

收藏

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

Replay FPS

其实应该叫“Replay FPV”,但我当时想到的是第一人称射击游戏

关于

Replay Mod 是 Minecraft: Java Edition 中一款广受欢迎的模组,可让你录制游戏过程以便之后回放。Replay Mod 功能十分强大,但在第一人称游戏体验方面仍有明显不足。

默认情况下,从玩家的第一人称视角渲染回放时,画面会显得非常卡顿。这是因为 Minecraft 每秒只会正确更新玩家位置 10 次,因此游戏必须对缺失的数据进行插值。

这个附属模组旨在解决这个问题。

通过将客户端摄像机数据与主要回放数据一同保存,可以更细致地记录本地客户端的移动,从而大幅改善第一人称回放体验。

使用方法

除了 Replay Mod 的常规用法外,这个附属模组不需要任何额外操作。只需将它与 Replay Mod 一同安装,然后照常使用即可。不过请注意,此附属模组带来的改进只会应用于录制回放的玩家,而且该玩家录制时必须安装了此附属模组。

注意:在当前版本(0.2.0)中,必须安装 Mod Menu 才能打开配置菜单。

技术细节

客户端捕获

第一人称视角下的移动通常看起来很糟糕,原因是 Replay Mod 只会录制服务器与客户端之间传输的游戏数据包。在大多数情况下,这与实时观察游戏的效果几乎相同。但在第一人称视角下,服务器发送的数据不足以准确还原原始移动。这实际上也是为什么在原版中旁观其他玩家时,也会出现同样的卡顿感。

解决方法是在数据包流之外,额外保存一条数据流。这条数据流由一系列通道组成,每个通道都以固定采样率持续记录一个数值。这些通道在录制时由客户端直接写入,完全绕过服务器与客户端之间的数据包系统。这样不仅能以远高于数据包所能支持的频率采样,还可以捕获原本不会与服务器同步的数据。

为了以切实可行的方式保存这些大量数据,我们开发了一种自定义二进制格式。使用此附属模组录制回放时,回放压缩包中会与数据包数据一起加入一个“客户端捕获”(ccap)文件。该文件的规范可在此代码库中查看。

数据包

不过,有些数据并不适合存储在连续的数据流中。例如快捷栏内容的变化这类离散数据,会作为自定义数据包注入回放数据包流。这些所谓的“伪数据包”会在录制时序列化到 PacketByteBuf 中,但不会发送到服务器,而是直接保存在本地回放文件中。播放回放时,Replay Mod 会将这些伪数据包作为普通数据包交给 Minecraft,再由自定义处理器解析并应用到世界中。

除了伪数据包,还可以注册“数据包重定向器”,以覆盖原版数据包在回放期间的应用方式。这样一来,许多通常无法在回放中使用的数据包也能够被解析并应用,用于还原原始的客户端体验。

构建

和大多数模组一样,要构建此项目,只需在根目录中打开控制台并输入 ./gradlew build。不过,由于缺少名为“CraftFX”的依赖项,构建可能会失败。这是 ccap_viewer 子项目的依赖项;目前,该子项目会与主项目一同构建。要解决此问题,请克隆并构建 CraftFX,然后将其发布到本地 Maven 仓库。

常见问题

Replay FPS 支持哪些 Minecraft 版本?

Replay FPS 支持 Minecraft Java 版 1.20.1–1.20.2,共 2 个版本,可用的加载器:Fabric。下载时注意选择和你游戏版本一致的文件。

Replay FPS 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:仅客户端。

评论

登录后评论和评分

Igrium 的其他作品

查看全部 →