
Replay FPS
Replay Mod的一个附加组件,用于改进第一人称视角的处理方式。
回放FPS
其实应该叫“回放FPV”,但我当时脑子里想的是第一人称射击游戏
简介
回放模组(Replay Mod)是Minecraft: Java Edition的一款热门模组,可让你捕捉游戏过程供后续回放。尽管回放模组功能强大,但在第一人称游戏体验方面存在明显不足。
默认情况下,当你从玩家的第一人称视角渲染回放片段时,画面会显得异常迟钝。这是因为Minecraft每秒钟只正确更新玩家位置10次,因此游戏必须对缺失的数据进行插值补偿。
本插件旨在解决这一问题。
通过在主回放数据之外额外存储客户端侧的摄像头数据,本地客户端的移动可以被更详细地捕捉,从而带来更好的第一人称回放体验。
使用方法
本插件不包含回放模组以外任何面向用户的功能。只需将其与回放模组一起安装,然后正常使用即可。不过请注意,本插件提供增强效果仅适用于录制回放的玩家,并且仅在该玩家录制时安装了本插件的情况下生效。
注意:在当前版本(0.2.0)中,必须安装模组菜单(Mod Menu)才能访问配置菜单。
技术细节
客户端捕捉
第一人称移动通常看起来很差的原因在于,回放模组仅记录服务器与客户端之间通信的游戏数据包。在大多数情况下,这看起来与实时观察游戏完全一致。然而,就第一人称视角而言,服务器发送的数据不足以准确重现原始移动。事实上,这也是在纯净版中观察其他玩家时会出现同样迟钝感的原因。
解决方案是在数据包流之外额外存储一个数据流。该数据流由一系列通道构成,每个通道以恒定的采样率保存一个连续值。这些通道在捕捉时由客户端直接写入,完全绕过了服务器-客户端数据包系统。这不仅允许以远高于数据包所能达到的频率捕捉样本,还使得捕获那些通常不与服务器同步的数据成为可能。
为了以实际可行的方式存储大量数据,开发了一种自定义二进制格式。当使用本插件捕捉回放时,一个“客户端捕捉”(ccap)文件会被插入回放存档中,与数据包数据共存。该文件的规范可在此仓库中找到。
数据包
然而,有些数据不适合存储在连续流中。离散形式的数据,例如快捷栏内容的变化,会被存储为自定义数据包,并注入到回放数据包流中。这些所谓的“伪数据包”在录制时会序列化为PacketByteBuf,但它们不会被发送到服务器,而是被本地保存到回放文件中。在回放过程中,回放模组会将这些伪数据包作为普通数据包提供给Minecraft,并由自定义处理器解析和应用到世界中。
除了伪数据包,还可以注册“数据包重定向器”来覆盖原版数据包在回放期间的应用方式。这使得许多在回放中通常不可用的数据包,可以被解析并应用于重建原始客户端体验。
构建
与大多数模组类似,要构建此项目,只需在根目录打开控制台并输入./gradlew build。不过,构建可能会因缺少名为“CraftFX”的依赖而失败。这是ccap_viewer子项目的依赖项,目前它与主项目一同构建。要解决此问题,请克隆并构建CraftFX,并将其发布到Maven本地仓库。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。