Рассинхронизация в реплее из-за использования кэша

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

Ответ

JackFastGame, просто без синхры ставишь всем героям нужное кол-во опыта, т.к у тебя одна машина и нет живых игроков, ты 1 зритель, остальные все боты и действия синхронизации не требуются для реплея, просто выставление напрямую всем игрокам експы.


Views: 85

quq_CCCP #1 - 1 month ago 0
Голосов: +0 / -0
Проверять на реплей, мемхак вроде у тебя в карте есть? Ну и делать ветвление, ибо локальные действия происходят в реплее только у хоста.
JackFastGame #2 - 1 month ago 0
Голосов: +0 / -0
quq_CCCP:
Проверять на реплей, мемхак вроде у тебя в карте есть? Ну и делать ветвление, ибо локальные действия происходят в реплее только у хоста.
А что делать в случае успешной проверки на реплей? Просто проигнорить часть кода, где идёт сохранение в кэш? В реплей вообще запоминается инфа о том, какие данные игроками были загружены в кэш?
quq_CCCP #3 - 1 month ago 0
Голосов: +0 / -0

JackFastGame, просто без синхры ставишь всем героям нужное кол-во опыта, т.к у тебя одна машина и нет живых игроков, ты 1 зритель, остальные все боты и действия синхронизации не требуются для реплея, просто выставление напрямую всем игрокам експы.
JackFastGame #4 - 1 month ago (изм. ) 0
Голосов: +0 / -0
quq_CCCP:
JackFastGame, просто без синхры ставишь всем героям нужное кол-во опыта, т.к у тебя одна машина и нет живых игроков, ты 1 зритель, остальные все боты и действия синхронизации не требуются для реплея, просто выставление напрямую всем игрокам експы.
Всё работает, спасибо. Только TriggerSleepAction( 2.00 ) и TriggerSyncReady() в реплее обязательно должны выполняться. А вот SyncStoredInteger и прочие не нужны.
Хотя скорее всего без слипа ломается из-за того, что у меня после него идут ещё действия.
quq_CCCP #5 - 1 month ago 0
Голосов: +0 / -0
Просто заведи переменную isReplay и заноси в неё логическое значение на старте игры, будь то игра или репоей с помощью мемхака, далее проверяй в карте на репоей и меняй все, я у себя так сделал, меняются сообщения игроков, таблица и прочее, выводятся дебаг данные.