Как реализовать систему перемотки времени назад, как в принц персии например?
В одной из частей есть кинжал времени, вот он геймплей назад отматывает.
Я вот как разработчик не могу понять каким способ достичь этого.
У меня есть идеи конечно, но мне кажется, это не лучший вариант..
Например:
Вести лог всех объектов на сцене (спавн, уничтожение, изменение координат и других свойств объекта и время этих манипуляций) и когда это нужно, воспроизводить всё в обратном порядке по времени
Для этого надо хранить рестроспективу сцены, координаты которые менялись с метками времени. Это меньше чем хранить видео. Когда надо отмотать - просто выставляете их объектам в обратном порядке.
Представьте что вам нужно вести запись демки в игре.
Пишете координаты, что где заспавнилось, что задеспавнилось, куда двигалось и вращалось. Делаете в записи обратный ход времени, в простейшем случаее инвертируете логику спавна\деспавна.
Вести лог всех объектов на сцене (спавн, уничтожение, изменение координат и других свойств объекта и время этих манипуляций) и когда это нужно, воспроизводить всё в обратном порядке по времени
А как без этого? Вам нужно прошлое, значит нужна информация об этом прошлом. Значит её надо записывать и хранить. Вопрос лишь в деталях: как часто делать записи, как долго хранить, что именно туда включать и что можно упустить, хранить логи отдельных сущностей или переодически делать "снимки" всего окружения игрока и т.д. Это уже вам решать. Плюс надо подумать, нужна ли обратная анимация всех процессов, или достаточно будет просмотра стоп-кадров.
Про лог ответили выше.
А если говорить про алгоритмы. То тут идеально подойдет кольцевой буфер. "Кинжал" же может отматывать время только на отделенное количество шагов/секунд назад. Вот такого размера кольцевой буфер и инициализируйте. А все что раньше само будет очищаться.