
Replay FPS
Мод Replay FPS улучшает отображение вида от первого лица в Replay Mod. Забудьте о дерганой картинке при рендеринге реплеев - теперь движения будут плавными и естественными.
Replay FPS
На самом деле стоило бы назвать "Replay FPV", но в момент создания я думал о шутерах от первого лица
О чем это
Replay Mod - популярный мод для Minecraft: Java Edition, который позволяет записывать игровой процесс и потом просматривать его. Штука мощная, но есть у нее одна серьезная проблема - вид от первого лица.
По умолчанию, когда ты рендеришь реплей от первого лица игрока, картинка получается очень дерганой. Все потому, что Майнкрафт обновляет позиции игроков всего 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.
Итог
Если ты снимаешь видео для YouTube или просто любишь пересматривать свои эпичные моменты в Майнкрафте - этот аддон реально полезен. Особенно если играешь от первого лица и хочешь, чтобы ролики выглядели профессионально. Без него вид от первого лица в реплеях выглядит так себе, а с ним - почти как живая трансляция.
