介绍
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 的其他作品
查看全部 →
Replay FPS
一个 Replay Mod 附属模组,可改进第一人称视角的处理方式。
Loading Window
A dead-simple mod that adds an AWT loading window before Minecraft's main window opens.
Igrium’s Replay Exporter
An addon to the Replay Mod that allows it to export into Blender and other 3D software.
VideoLib
A library enabling video playback in Minecraft
评论
登录后评论和评分