Итак после 2-х недель борьбы с этой проблемой я таки решил написать сюда в надежде на опыт некоторых юзеров любимого форума.
Суть:
Есть 6 наших карт, формирующих нашу кампанию для Left 4 Dead 1. Первые 4 карты работают прекрасно, смена карт работает как часы, но после добавления последних 2-х карт начались проблемы.
5 и 6 карта при запуске из консоли тоже работают без ошибок и вылетов, но вот при переходе с 4ой карты на 5ую и с 5ой на 6ую игра вылетает всегда с 1 ошибкой:
code:
File:.\memstd.cpp
Line:1641
Assert: *****OUT OF MEMORY! attempted allocation size: 0 ****
Факты:
- вылет происходит в самый последний момент - т.е. я собственно уже вижу 1ый кадр с новой карты и тут же получаю ошибку
- 5ая карта вылетает реже чем 6ая (1 из 3х раз, вместо каждого 2го)
- выключение опции "Многоядерный рендеринг" решает проблему, но только на 1 прогон 3х карт ( переход с 4ой на 5ую, с 5ой на 6ую), если выйти в главное меню и повторить то проблема возвращается
- карты бесспорно перегружены деталями, особенно 6ая, которую мы скорее всего разделим на 2, но вот 5ая по параметрам очень близка к нашей 2ой карте с которой проблем абсолютно нет
- чем больше смен карт произошло перед загрузкой 5ой или 6ой, тем больше вероятность вылета
Попытки исправить:
1) Разделили 6ую карту пополам - не помогло
2) Увеличили lightmap scale до 64 и на 5ой и на 6ой - не помогло
3) Сделали переход с 4ой карты сразу на 6ую (которая теперь в половину легче для рендера чем начальная версия), пропуская 5ую - помогло вылетов не наблюдалось. Таким образом мы пришли к выводу, что проблема на 6ой решена и осталась только на 5ой и решили сосредоточиться как раз на ней
4) Убрали все func_detail на 5ой - не помогло
5) Убрали половину prop_static на 5ой - не помогло
После всех этих действий мы стали сомневаться что проблемма именно в насыщенности карт - ведь теперь 5ая намного легче для обработки чем все остальные карты.
Возникает вопрос что может вызывать столь странные вылеты? Притом именно на смене карт! Очень прошу откликнуться!Хотелось бы услышать ваши истории столкновения с лимитами движка. А главное каковы эти лимиты? Т.к. пока у меня в некоторых аспектах об этом смутные представления.
P.S.: Пока приложу логи всех карт - потом добавлю еще инфы.