Архив сообщества
2011 — 2019

Обновления статусов

Аватар Zippo Lighter
Zippo Lighter

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

31.05.2016, 20:1231 May
Копиц

Вроде в овервотче просто возращает туда, где ты стоял три секунды назад? Пока что я думаю о том, что можно записывать данные о положении персонажа три секунды назад, " в тупую" как говорится.

Копиц

Действие-то просто, сейвить одну точку, не ресурсозатратное.

antonikon

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

AsCiMaToR

В доте еще осложняется тем, что пока ты мертв, таймер не тикает.

PlIn

Это как раз просто

Jarl

Жуткий костыль Грубо (кто точно вспомнит где он там находился во момент бега?) очерчивать ломанную (объединять сонаправленные векторы, учитывать простои, как нулевые векторы) перемещения, перезаписывая момент после N секунд. Каждая "вершинка" ломанной - сохранение здоровья, нескольких прочих часто изменяемых параметров. Любое их изменение - членение вектора новой вершиной.

Jarl

^^^Это для мов и шутанов

antonikon

Но ведь запись вида: "время - изменение параметра" будет проще и точнее. Будь то позиция ил и здоровье.

Jarl

Ну да. Тогда лишь траекторию движения, грубо совмещая близкие по направлению векторы.

antonikon

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

Kinrany

Близзард в движке Старкрафта хранит вообще всю историю игры. В Овервотч то же самое, скорее всего, так что для отката ничего особенного делать не надо.

Kinrany

Если игра не дико сложная, то по сравнению со всякой графикой хранить состояние игры во все предыдущие моменты времени - очень дёшево.

Neray

Всё намного проще. Просто просчитываем каждому юниту карту движения. В той же вашей сорс КСочке это и происходит.

antonikon

Для стратегий, хранят историю приказов, а всё остальное считается как в игре. И генератор инициализировать с тем же числом.