Концептуально, как работает воспроизведение в игре? - PullRequest
142 голосов
/ 17 июня 2010

Мне было любопытно, как в игре может быть реализовано воспроизведение.

Первоначально я думал, что будет просто список команд для каждого действия игрока / игрока, которое было предпринято в игре, и затем он «перезапускает» игру и позволяет движку рендериться как обычно. Тем не менее, я посмотрел на повторы в играх FPS / RTS, и после тщательного осмотра даже такие вещи, как частицы и графические / звуковые глюки, являются согласованными (и эти глюки обычно в согласованы).

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

Ответы [ 12 ]

1 голос
/ 06 августа 2010

Проблема наличия последовательного повторения такая же (ну, проще), как и в последовательной многопользовательской игре.

Как уже упоминалось ранее, повторы в играх RTS сохраняются путем записи всего ввода (который имеетЭффект. Прокрутка не дает никакого эффекта.) Многопользовательский режим также передает все входные данные

Запись всех входных данных, а не просто предположение - есть библиотека для чтения повторов Warcraft3, показывающая это.этот ответ.

0 голосов
/ 17 июня 2010

Я полагаю, что с определенными приращениями игра будет делать снимок состояния всего (ВСЕ).Затем, когда происходит воспроизведение, можно использовать простую линейную интерполяцию, чтобы заполнить «дыры».По крайней мере, я так думаю, что это будет сделано.

Вы правы, что запись входных данных будет ненадежной / не гарантирует такой же выход.В игре обязательно нужно отслеживать состояние всех объектов (или хотя бы важных)

...