⏯️ Про создание реплеев для игр ⏺️

Уровень материала: 🐥 #middle
Хочу поделиться свежим полезным видео с реализацией системы реплеев. И дополнить своими комментариями. Однажды такая фича может потребоваться, и было бы здорово знать, в какую сторону начинать думать.

🔎 Суть реплея:

Чтобы иметь возможность когда-то потом восстановить игровой процесс, необходимо во время этого игрового процесса записывать минимальный набор данных, необходимый для восстановления игровой сессии в конкретный момент времени. Только так.

Чем меньше данных, тем более легковесным получится файл реплея. А это важно, ведь его надо хранить (ROM), читать (CPU), загружать (RAM) и возможно даже передавать по сети (Network).

Например, если поворот персонажа полностью восстанавливается из его направления движения, то достаточно записать только направление движения. И записывать его только тогда, когда оно изменится, а не просто каждые N сек. И т.д. Всё, как при синхронизации данных в мультиплеере.

Лучший вариант, когда игра детерминирована (т.е. при одинаковых вводных будет происходить всегда одно и то же). Тогда достаточно только записывать инпут от игрока с отметками времени и во время реплея его применять. Минимум данных, но детерминированность имеется (или хотя бы вообще возможна) не во всех проектах. Особенно в Unity с её недетерминированной физикой.

📐 Зачем нужен:

Помимо понятной для игрока функции «посмотреть, как эффектно я пробежал этот уровень» или возможности разрешить спорные моменты в соревновательных играх, эта механика может быть полезна в не пользовательских сценариях.

  • В сервисных играх реплей полезен для отправки сессии на валидацию сервером, чтобы уличить мошенника в нечестных манипуляциях.
  • Реплей может помочь с отладкой игры. Или с воспроизведением бага, который нашёл QA или какой-то игрок.
  • Реплеи, собираемые с игроков, можно анализировать и в результате совершенствовать пользовательский опыт (или монетизационные подходы).
  • По реплеям можно тестировать игровой баланс и прорабатывать его детальнее.
  • Реплеи можно использовать для создания маркетинговых материалов, т.к. на таком пост-продакшене можно усилить эффектность геймплея через иную настройку камеры, редактирование окружения, добавление всяческих эффектов и пр.

Т.е. отсутствие возможности реплея в самой игре как механики ещё не гарантирует её отсутствия как части проекта. И это стоит учитывать при проектировании очередного проекта.

————————————

44
9 комментариев

В РТС МАСТ Хев
Да и вообще в сессионках

1

Вообще для всех игр полезно, для дебага, записи ошибок, и т.д. И не только. Для развлечений. Вообще я кстати думал о похожей идее, короч представь…

Допустим есть условный Скайрим, который транслируется по реплею онлайн зрителям, но зритель может сам открыть любую менюшку и направить на предмет, почитать описание интересующих предметов, покрутить карту, и т.д. Прочий интерфейс. А потом когда потыкал все интересующие его менюшки, продолжить смотреть трансляцию.

Это кстати позволит очень сильно экономить на интернет-трафике, ведь вместо того чтобы слать видео-поток, ты шлёшь только состояния игры, позиции персонажей и прочее. Это как правило гораздо более лёгкая инфа чем транслировать видео-поток. Экономия трафика это лишь бонус к возможности управлять интерфейсом. Хотя возможно отрисовка самой игры потребует чуть больше мощности CPU/GPU, чем просто воспроизведение видео, особенно если сравнивать с каким-нибудь 480p. Так что есть свои минусы. Но больше плюсов. К тому же никто не мешает одновременно транслировать И реплей И видео. Тогда те кто на слабых устройствах, могут переключиться в «традиционный» режим видео и продолжать смотреть свои 480p видео-потоки.

Думаю есть ненулевая вероятность что когда-то будет такой твич 2.0 состоящий из транслируемых РЕПЛЕЕВ почти всех игр, вместо видео.

Но для этого нужно чтобы был кто-то ПЕРВЫЙ кто показал бы «как надо делать», на примере одной конкретной игры, а потом все бы интегрировались с неким стандартом. В долгосрочной перспективе это могло бы стать альтернативой твичу.

Если такая платформа была бы, интеграция была бы с ней считай обязательно. Потому что это означало бы доступ игры к оптимизированным стримам. Функции навигирования по менюшка. Оптимизация трафика. Дебаг с записью игровых ситуаций. Огромное количество плюсов)

А до тех пор, это могла бы быть стриминговая платформа одной или нескольких игр :) может когда-то сделают.

1