
Replay FPS
Активный0.0
Установок
Последнее обновление
Версии
Replay FPS
Хотя правильнее было бы назвать его "Replay FPV", но в момент создания я думал о шутерах от первого лица
О модификации
Мод Replay Mod — это популярное дополнение для Minecraft: Java Edition, позволяющее записывать игровой процесс для последующего воспроизведения. Несмотря на широкие возможности, он имеет существенный недостаток при работе с камерой от первого лица.
При стандартном воспроизведении записи с точки зрения игрока движение кажется неестественно плавным и замедленным. Это связано с тем, что Minecraft обновляет позиции игроков всего 10 раз в секунду, поэтому игра вынуждена интерполировать недостающие данные.
Данное дополнение решает эту проблему.
Сохраняя данные камеры на стороне клиента вместе с основной информацией о записи, можно зафиксировать движения локального игрока с большей детализацией, что значительно улучшает качество воспроизведения от первого лица.
Использование
Это дополнение не требует дополнительных действий от пользователя помимо стандартных функций Replay Mod. Просто установите его вместе с основным модом и используйте как обычно. Однако стоит помнить, что улучшения, предоставляемые этим дополнением, будут применяться только к игроку, который записывал повтор, и только если у этого игрока было установлено данное дополнение во время записи.
Примечание: В текущей версии (0.2.0) для доступа к меню настроек необходимо установить Mod Menu.
Технические особенности
Клиентская запись
Проблема с отображением движения от первого лица возникает из-за того, что Replay Mod записывает только игровые пакеты, передаваемые между сервером и клиентом. В большинстве случаев это выглядит так же, как наблюдение за игрой в реальном времени. Однако при воспроизведении от первого лица сервер не отправляет достаточно данных для точного воссоздания исходного движения. Именно поэтому наблюдение за другим игроком в стандартной версии игры приводит к аналогичной "размытости" изображения.
Решение заключается в сохранении дополнительного потока данных вместе с потоком пакетов. Этот поток состоит из серии каналов, каждый из которых содержит непрерывные значения с постоянной частотой дискретизации. Эти каналы записываются непосредственно клиентом во время захвата, полностью обходя систему пакетной передачи сервер-клиент. Это не только позволяет захватывать образцы с гораздо более высокой частотой, чем это возможно с пакетами, но и дает возможность записывать данные, которые изначально не синхронизируются с сервером.
Для эффективного хранения этих объемных данных был разработан специальный бинарный формат. При записи повтора с использованием этого дополнения файл "client-capture" (ccap) добавляется в архив записи вместе с данными пакетов. Спецификация этого файла доступна в репозитории проекта.
Пакеты
Некоторые данные нецелесообразно хранить в непрерывном потоке. Дискретные формы данных, такие как изменения содержимого горячей панели, сохраняются как пользовательские пакеты, которые внедряются в поток пакетов записи. Эти так называемые "фейковые пакеты" сериализуются в PacketByteBuf во время записи, но вместо отправки на сервер сохраняются локально в файле записи. Во время воспроизведения Replay Mod передает эти фейковые пакеты обратно в Minecraft как обычные пакеты, где пользовательский обработчик может их проанализировать и применить к миру.
Помимо фейковых пакетов, можно регистрировать "перенаправители пакетов" для изменения способа применения стандартных пакетов во время воспроизведения. Это позволяет обрабатывать и применять многочисленные пакеты, которые обычно не используются при воспроизведении записи, для восстановления исходного клиентского опыта.
Сборка
Как и большинство модов, для сборки этого проекта достаточно открыть консоль в корневой директории и ввести ./gradlew build
. Однако сборка может завершиться ошибкой из-за отсутствия зависимости под названием 'CraftFX'. Это зависимость подпроекта ccap_viewer
, который на данный момент собирается вместе с основным проектом. Чтобы исправить это, склонируйте и соберите CraftFX, а затем опубликуйте его в Maven Local.