Проблема: часть хэш-ключей в game cache не записывается на диск.
Т.е. во время игры все данные в кэше работают нормально.
Но когда я вызываю SaveGameCache чтобы все сохранить, то часть данных записывается нормально, а часть пропадает и в следующей игре этой части нету - GetStoredInteger возвращает 0 для части значений.
Есть какой-то алгоритм для выбора этих ключей?

Я бы при старте вычищал кешь перед загрузкой, то он имеет багу - создаваться не пустым.
Так же процесс сохранение ресуросемкий, не стоит делать в циклах и так далее.
      string talentkey = ConvertTalentNumberToKey(n) //
        string creakey = ConvertCreatureToKey(i) //
Вот это всеще не советую юзать, у меня ломалось взятие имени абилки, поэтому прямо вбивайте в код ключи, никогда не пытайтесь читать строковые ключи откуда-либо, начинаются непонятные баги (вероятно упущение со строками, в JASM машине).
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
23
Похожие вопросы:

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

надеюсь, суть намёка понятна
ответ
~8gabriel8:
Camby, чем вас не устраивает способ Blizzard? Переносите в кэше героя с предметом, предмет перемещаете в нужное место, а героя из игры убираете.
ответ
ProximityCat:
Ну суть в том, что загруженную прелоадом информацию можно сохранить в кеш, а потом уже синхронизировать.
ответ
А её и не надо создавать
Смотри в сторону счетчика игр (ливнул/ доиграл до конца)
в коде всё есть и хорошо разжевано, что непонятно - спрашивай
Только тут начало идёт от какого-то 1940 (не помню число, надо с 0 начать считать), как начнёшь ковырять, сразу всё поймёшь

22
Vlod, не, такая проблема не только внутри циклов.
Даже если сохранять по одному за раз.
Записываю - Сохраняю кеш - вывожу дебагом - число на месте
Затем загружаю кеш с диска - в половине случаев число на месте, а в половине ноль.
Не в цикле, отдельно.
18
Ок, а если после записи проверять чтением успех. В случае неудачи - повторить попытку. Также можно увеличить таймаут между записями, если он есть.

Или у тебя определенные ключи не работают?
22
Vlod, вроде того. причем нет какого-то принципа почему ключ не подходит, дело не в длине.
задержка перед загрузкой с диска для проверки у меня была 3 секунды.
Одни ключи сохраняются, а другие нет.
Как пример, пара "гуль" + "талант1" работает, а "скелет лучник" + "2" не работает.
либо "настройки" + "язык" не работает, а "настройки" + "смещение текста" работает, хотя ключ длиннее.
При чем проблема именно в сохранении данных на диске, в сам кеш в озу все сохраняется и выгружается нормально
11
biridius, в таких делах еще б надо версию в вопросе писать в 1.31 изменения по части кэша произошли.
24
biridius, я очень надеюсь, что вы не пользуетесь кирилицей в ключах и это просто пример в комментарии выше.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.