MC Toolkit

Руководства / Команды и данные

Катсцены без мода: ключевые кадры, интерполяция и трюки со спектатором

В ванилле камера движется только одним способом — функцией телепортации с тиками, — а реестр таймлайнов задаёт настроение вокруг неё. Для чего годится каждый из них и какое сглаживание избавляет от механического вида.

В ванилле нет объекта камеры, поэтому катсцена — это иллюзия, построенная на телепортациях, с таймлайном, который меняет мир вокруг неё.

Способ 1: телепортировать игрока каждый тик

Старый универсальный способ. Переведите игрока в режим спектатора, а затем ведите его по траектории:

gamemode spectator @s
tp @s 100.0 70.0 200.0 -90.0 10.0

по одному tp за тик из цепочки функций. Это работает на любой версии и не требует ничего особенного. Все проблемы связаны с плавностью:

  • 20 ключевых кадров в секунду. Десятисекундный кадр — это 200 строк tp.
  • Линейные шаги выглядят механически. Настоящее движение камеры замедляется на входе и выходе.
  • Поворот плохо переносится через границу. Переход от yaw 170 к -170 — это поворот на 20 градусов, но наивная интерполяция прокрутит 340 градусов не в ту сторону. Нормализуйте разницу углов в диапазон -180…180 перед шагом.

Генерация этих строк — как раз задача инструмента ключевых кадров: вы расставляете несколько позиций, а он выдаёт функцию по тикам с применённым сглаживанием.

Сглаживание

Разница между любительской и смотрибельной камерой — в кривой интерполяции. Между двумя ключевыми кадрами, при t от 0 до 1:

linear      t
ease-in-out t < 0.5 ? 2t²  :  1 − 2(1−t)²
smoothstep  t² × (3 − 2t)

smoothstep — безопасный вариант по умолчанию. Применяйте его к позиции и повороту вместе, иначе камера прибудет раньше, чем закончит поворачиваться.

Способ 2: таймлайны — для всего, кроме камеры

В недавних версиях появился реестр timeline, и так и тянет прочитать его как дорожку камеры:

data/<namespace>/timeline/intro.json

Это не так. Таймлайн работает по мировым часам и задаёт ключевые кадры для атрибутов окружения — цвета неба и тумана, фонового звука и музыки, света — с нативной интерполяцией. Он не может двигать игрока, поэтому сама камера всё ещё делается способом 1. Что таймлайн делает хорошо — это настроение катсцены: гасит небо, смещает туман и меняет музыку в такт телепортациям, без отдельной команды на каждый тик.

Расплата — он существует только в недавних версиях, поэтому карта, рассчитанная на старые клиенты, вынуждена имитировать настроение через /time и /weather.

Удержать игрока на месте

Траектория телепортации борется с двумя вещами:

  • Ввод игрока. Спектатор позволяет игроку улететь прямо во время кадра. Повторная телепортация каждый тик перекрывает это — одна из причин, почему грубый метод живёт так долго.
  • Загрузка чанков. Камера, летящая в незагруженное место, показывает пустоту. /forceload траекторию перед съёмкой и уберите после.

Скрыть HUD

Режим спектатора и F1 дают почти всё. Для чистого кадра ресурспак, обнуляющий спрайты HUD, убирает прицел и хотбар без каких-либо действий игрока — см. руководство по HUD.

Расставьте ключевые кадры на траектории и экспортируйте функцию по тикам, а затем постройте таймлайн, задающий сцену вокруг неё, с помощью Cutscene & Timeline Builders.

Конструкторы катсцен и таймлайнов →

Другие руководства

Смотреть все →