SDK:FS.h

Материал из MODFAQ.RU — моддинг классического S.T.A.L.K.E.R., TES и Fallout
Перейти к: навигация, поиск
Expression : assertion failed 
Function : i:\xray-svn\xrcore\FS.h 
File : i:\xray-svn\xrcore\FS.h 
Line : 265 
Description : (Pos<=Size) && (Pos>=0)

Ошибка[1][2][3][4][5]

Существует множество заблуждений по поводу причин данного вылета:

  1. Неправильно распределены текстуры по папкам. Например, когда *.dds файл в папке textures/wpn, имеет имя начинающееся НЕ с префикса wpn_
  2. Превышен лимит *.thm файлов в папке SDK gamedata\textures
  3. У какой-то *.dds текстуры в папке SDK gamedata/textures отсутствует *.thm файл.
    Например, если текстура была сохранена сразу из графического редактора в формат *.dds
  4. У какого-то *.thm файла отсутствуют закрепленные за ним, детальные текстуры и бампы
  5. *.thm файл SDK 0.4 несовместим с SDK 0.7
  6. *.tga текстуры импортировались в SDK без выставления параметров, а конкретно не был выставлен материал и вес
  7. Какая-то текстура неправильного размера, а точнее в её *.thm файле указан один размер (например, 1024х1024), а она сама другого (например, 512х512).
    Либо размер текстуры не кратен двойке (например, 438х256)

Проверено что:

  1. Переименование префиксов текстур не вызывает вылета. И по идее, не должно возникать проблем в принципе.
    Префикс нужен SDK для распределения текстур по папкам при преобразовании их из *.tga в *.dds — просто для удобства
  2. Если превышен лимит *.thm файлов, конкретно этот вылет (Pos<=Size) && (Pos>=0) — не происходит. Но происходит другой
  3. SDK стартует нормально, а вот компиляция уровня прерывается другим вылетом, как раз из-за отсутствия этих самых *.thm файлов
  4. Удаление детальных текстур или бампов не приводит к вылету (Pos<=Size) && (Pos>=0) (или к любому другому вылету).
    Т.к. SDK не отображает их при рендере сцены, а значит и отсутствие их для SDK — не является проблемой достойной упоминания даже в логе, не говоря уже о вылете
  5. SDK 0.7 понимает формат *.thm файла SDK 0.4. 100% ли эта совместимость — сказать трудно. Нужна статистическая выборка.
    А совместимость разных версий *.thm файлов на разных версиях движка проверяйте самостоятельно
  6. Не существует сама возможность не задать эти параметры при импорте, т.к. они всегда по умолчанию выставлены.
    И, да, они по умолчанию работают, не вызывая вылета
  7. SDK не учитывает (компиляторы учитывают), совпадает ли размер *.dds текстуры и размер записанный в её *.thm файле

Подтверждённая причина вылета:

  • Нарушена структура одного из *.thm файлов
    Если в его бинарные поля были внесены правки (например, текстовым редактором) — вылет (Pos<=Size) && (Pos>=0) обеспечен
    Если правки были внесены исключительно в текстовые поля — вылета может и не быть
  • Кроме того, *.thm файл имеют не только текстуры, но и модели в формате *.object
    Вполне вероятно, что ошибка в структуре *.thm моделей, также приведет к вылету

Решение

К сожалению, в логе отсутствует какое-либо упоминание о имени текстуры или *.thm файла из-за которого произошёл вылет.

Действовать придется методом исключения, удаляя папку текстур за папкой, пока вылет не пропадёт. А затем и файл, за файлом.

Минимизируйте шанс возникновения вылета, а именно, всегда импортируйте текстуры через SDK:

  1. Конвертируйте текстуру в формат *.tga, и переместите в папку SDK editors/import
  2. Запустите Actor Editor
  3. Выполните Scene -> Images -> Image Editor
  4. Выберите из списка нужную текстуру, и нажмите кнопку Ok.


Видео[6][7]


Источники