Вылетает варкрафт (1.26) при загрузке сохраненной игры из за HashTable:
Not enough memory resources are avalible to process this command
Object: GamehashTableIntegerReg
(.?AUGameHashTableIntegerReg@@)


Да, у меня тяжелая генерация, но хеш она не юзает.
А памяти для загрузки hashtable почему то не хватает.

Зато реплеи работают.

Кажется разобрался:
Как ни странно хеш оказался ни при чем.
Проблема была в слишком длинной строке на ~900 русских символов которую я использовал для описания квеста.
`
ОЖИДАНИЕ РЕКЛАМЫ...
26
Проверил сохранение, сделанное сразу после старта (без генерации и "начала игры" ), вылазит аналогичная ошибка.
26
Это универсальное описание ошибки, когда варик не может конкретно описать причину. Либо смотри код всех интеджеров в хэше, так как где-то может быть опечатка, либо отключением и включением компонентов находи дефектный. А также стоит поискать информацию о сейвах и хэше, может быть решение уже находили.

Вот в этих проектах похожие ошибки, кстати: xgm.guru/p/wc3/tomm xgm.guru/p/d2outatime
26
Кажется разобрался:
Как ни странно хеш оказался ни при чем.
Проблема была в слишком длинной строке на ~900 русских символов которую я использовал для описания квеста.
Принятый ответ
33
Jack-of-shadow, кстати тоже замечал такое, делал огромное описание, ошибку не получал, но просто карта переставала грузиться на середине загрузки, 5 дней искал проблему, отключая триггеры по 1
26
По идее это может быть связано с каким-то хэшем, ведь количество символов в строке интеджер и ошибка указывает на интеджер.
26
Bergi_Bear:
Да, с длинными строками известная проблема, я ее обошел путем сложения. Но тут проблема именно при загрузке сохраненной игры.

Вроде все пофиксил, даже освещение и фейд фильтр, но столкнулся похоже с нерешаемой проблемой(


Видимо всетаки придется свою систему сохранений писать, не через загрузку, а через новую игру.

Тест карта


Хотя нет решение есть, это записывать все действия с рельефом и потом повторять их при загрузке через LoadGameEvent. Но в моем случае этих действий слишком много, наверно упрусь в лимиты. Буду пробовать.
Загруженные файлы
18
Jack-of-shadow, а восстанавливать рельеф из карты высот?
Даже подтягивая из файла, все равно придется с ней работать
26
Vlod:
Jack-of-shadow, а восстанавливать рельеф из карты высот?
Попробую щас через массивы если индексов не хватит, то через хеш.
типо того
globals
 int TerrainDeformC   = 0
 float array TerrainDeformX
 float array TerrainDeformY
 float array TerrainDeformD
 float array TerrainDeformZ
 
endglobals

void TerrainDeformCraterJ (float x, float y, float d, float z){
 TerrainDeformC++
 TerrainDeformX[TerrainDeformC] = x
 TerrainDeformY[TerrainDeformC] = y
 TerrainDeformD[TerrainDeformC] = d
 TerrainDeformZ[TerrainDeformC] = z
 TerrainDeformCrater(x, y, d, z, 1, true)
}

//LoadTerrain
void LoadTerrainDeform (){
 Msg(StrY("LoadTerrain: ")+I2S(TerrainDeformC))
 for_c(TerrainDeformC)
  TerrainDeformCrater(TerrainDeformX[c], TerrainDeformY[c], TerrainDeformD[c], TerrainDeformZ[c], 1, true)
 end_c
}
38
В vJass есть большие массивы, главное, поток не порвать, но всегда можно перейти на lua)
28
ScorpioT1000, на самом деле уже нет, максимальный размер массива в vJass совпадает с максимальным размером массива с версии 1.29.
16
ничего интересного, аргумент передается супер-большой, который должен быть индексом (?) массива
26
ScorpioT1000:
В vJass есть большие массивы, главное, поток не порвать, но всегда можно перейти на lua)
Уже пофиксил тем там всего 1500-3000 вызовов TerrainDeformCrater было, так что массива вполне хватило.

А вот SetTerrainType у меня было 32 к вызовов. Так как я их на этапе генерации использую их как разметку, для быстрой проверки местности. Тут пришлось слегка пожертвовать визуалом при загрузке сохранения (ужал до 7 к) . После загрузки сохранения она немного отличается, но это незаметно.
24
Если карта рандомно генерится - почему не запоминать зерно рандома и не рескручивать рандом из него заново для генерации карты после загрузки? Тогда останется запоминать только изменения которые произошли после генерации, в результате действий игрока.
26
prog:
Да я это планирую сделать в дальнейшем, но пока просто исправлял баг обычных сохранений.
38
Можешь заполнять сначала по чанкам, потом уже детальнее)
26
Щас еще обнаружил, что инвентарь куда то пропал. Даже если после загрузки герою дать способность 'AInv' то инвентарь всеравно не появляется.

Починил, оказалось инвентарь пропадал из-за того что герой имел обе способности:
'Aien' (Носильщик) и 'Aher' (Предметы - Герой).

Карта пример

Столько проблем уже с загрузкой нашел, что хоть статью пиши.
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.