Zippo Lighter31.05.2016, 20:1231 May
Хочу задать вопрос програмистам. Как в играх работают абилки которые возвращают во времени? Например в доте ульт вивера, или в Овервотче скилл Трейсер. Есть какие-либо предположения по коду? И возможно ли подобную вещь в ССке накодить?

Вроде в овервотче просто возращает туда, где ты стоял три секунды назад? Пока что я думаю о том, что можно записывать данные о положении персонажа три секунды назад, " в тупую" как говорится.
Действие-то просто, сейвить одну точку, не ресурсозатратное.
Это если совсем простой метод. Но если надо откатывать много и далеко, то сохранение всех кординат будет жрать много памяти. Поэтому надо сохранять информация об изменении скорости.
В доте еще осложняется тем, что пока ты мертв, таймер не тикает.
Это как раз просто
Жуткий костыль Грубо (кто точно вспомнит где он там находился во момент бега?) очерчивать ломанную (объединять сонаправленные векторы, учитывать простои, как нулевые векторы) перемещения, перезаписывая момент после N секунд. Каждая "вершинка" ломанной - сохранение здоровья, нескольких прочих часто изменяемых параметров. Любое их изменение - членение вектора новой вершиной.
^^^Это для мов и шутанов
Но ведь запись вида: "время - изменение параметра" будет проще и точнее. Будь то позиция ил и здоровье.
Ну да. Тогда лишь траекторию движения, грубо совмещая близкие по направлению векторы.
В случае перемещения по тайлам, можно тупо позицию писать. Другое дело шутаны, где уже надо задавать скорость и из неё рассчитывать позицию.
Близзард в движке Старкрафта хранит вообще всю историю игры. В Овервотч то же самое, скорее всего, так что для отката ничего особенного делать не надо.
Если игра не дико сложная, то по сравнению со всякой графикой хранить состояние игры во все предыдущие моменты времени - очень дёшево.
Всё намного проще. Просто просчитываем каждому юниту карту движения. В той же вашей сорс КСочке это и происходит.
Для стратегий, хранят историю приказов, а всё остальное считается как в игре. И генератор инициализировать с тем же числом.