SDK:FS.h: различия между версиями
Перейти к навигации
Перейти к поиску
мНет описания правки |
мНет описания правки |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 8: | Строка 8: | ||
</pre> | </pre> | ||
=== Ошибка<ref>[ | === Ошибка<ref>[https://www.amk-team.ru/forum/topic/1560-soc-voprosy-po-sdk/?do=findComment&comment=445422 Пост пользователя "raf100" на AMK форуме]</ref><ref>[https://ap-pro.ru/forum/106-9910-686456-16-1411152702 Пост пользователя "DarkSatellite" на форуме AP Production]</ref><ref>[https://www.amk-team.ru/forum/topic/13485-modelirovanie-v-milkshape-3d/?do=findComment&comment=981204 Пост пользователя "GefoS" на AMK форуме]</ref><ref>[https://ap-pro.ru/forum/21-90672-1227782-16-1554404466 Пост пользователя "denis2000" на форуме AP Production]</ref><ref>[https://www.amk-team.ru/forum/topic/1560-soc-voprosy-po-sdk/?do=findComment&comment=1041853 Пост пользователя "V92" на AMK форуме]</ref> === | ||
# | Существует множество заблуждений по поводу причин данного вылета: | ||
# | # Неправильно распределены текстуры по папкам. Например, когда [[*.dds]] файл в папке ''textures/wpn'', имеет имя начинающееся НЕ с префикса '''wpn_''' | ||
# Превышен лимит [[*.thm]] файлов в папке '''SDK''' ''gamedata\textures'' | |||
# У какой-то [[*.dds]] текстуры в папке '''SDK''' ''gamedata/textures'' отсутствует [[*.thm]] файл.<br>Например, если текстура была сохранена сразу из [[:Категория:Графические редакторы|графического редактора]] в формат [[*.dds]] | |||
# У какого-то [[*.thm]] файла отсутствуют закрепленные за ним, детальные текстуры и бампы | |||
# [[*.thm]] файл [[X-Ray SDK 0.4|SDK 0.4]] несовместим с [[X-Ray SDK 0.7|SDK 0.7]] | |||
# [[*.tga]] текстуры импортировались в SDK без выставления параметров, а конкретно не был выставлен материал и вес | |||
# Какая-то текстура неправильного размера, а точнее в её [[*.thm]] файле указан один размер (например, 1024х1024), а она сама другого (например, 512х512).<br>Либо размер текстуры не кратен двойке (например, 438х256) | |||
=== Решение<ref>[ | Проверено что: | ||
# | # Переименование префиксов текстур не вызывает вылета. И по идее, не должно возникать проблем в принципе.<br>Префикс нужен '''SDK''' для распределения текстур по папкам при преобразовании их из [[*.tga]] в [[*.dds]] — просто для удобства | ||
# | # Если превышен лимит [[*.thm]] файлов, конкретно этот вылет <code>(Pos<=Size) && (Pos>=0)</code> — не происходит. Но происходит другой | ||
# '''SDK''' стартует нормально, а вот компиляция уровня прерывается другим вылетом, как раз из-за отсутствия этих самых [[*.thm]] файлов | |||
# Удаление детальных текстур или бампов не приводит к вылету <code>(Pos<=Size) && (Pos>=0)</code> (или к любому другому вылету).<br>Т.к. '''SDK''' не отображает их при рендере сцены, а значит и отсутствие их для '''SDK''' — не является проблемой достойной упоминания даже в логе, не говоря уже о вылете | |||
# '''SDK 0.7''' понимает формат [[*.thm]] файла '''SDK 0.4'''. 100% ли эта совместимость — сказать трудно. Нужна статистическая выборка.<br>А совместимость разных версий [[*.thm]] файлов на разных версиях движка проверяйте самостоятельно | |||
# Не существует сама возможность не задать эти параметры при импорте, т.к. они всегда по умолчанию выставлены.<br>И, да, они по умолчанию работают, не вызывая вылета | |||
# '''SDK''' не учитывает (компиляторы учитывают), совпадает ли размер [[*.dds]] текстуры и размер записанный в её [[*.thm]] файле | |||
Подтверждённая причина вылета: | |||
* Нарушена структура одного из [[*.thm]] файлов<br>Если в его бинарные поля были внесены правки (например, [[:Категория:Текстовые редакторы|текстовым редактором]]) — вылет <code>(Pos<=Size) && (Pos>=0)</code> обеспечен<br>Если правки были внесены исключительно в текстовые поля — вылета может и не быть | |||
* Кроме того, [[*.thm]] файл имеют не только текстуры, но и модели в формате [[*.object]]<br>Вполне вероятно, что ошибка в структуре [[*.thm]] моделей, также приведет к вылету | |||
=== Решение === | |||
К сожалению, в логе отсутствует какое-либо упоминание о имени текстуры или [[*.thm]] файла из-за которого произошёл вылет. | |||
Действовать придется методом исключения, удаляя папку текстур за папкой, пока вылет не пропадёт. А затем и файл, за файлом. | |||
Минимизируйте шанс возникновения вылета, а именно, всегда импортируйте текстуры через '''SDK''': | |||
# Конвертируйте текстуру в формат [[*.tga]], и переместите в папку '''SDK''' ''editors/import'' | |||
# Запустите '''Actor Editor''' | |||
# Выполните ''Scene -> Images -> Image Editor'' | |||
# Выберите из списка нужную текстуру, и нажмите кнопку '''Ok'''. | |||
=== Видео<ref>[https://www.youtube.com/user/genior2011 Канал пользователя "genior2011" на YouTube.com]</ref><ref>[https://www.youtube.com/user/stalkergrez2013 Канал пользователя "Grez" на YouTube.com]</ref> === | |||
{{#ev:youtube|https://www.youtube.com/watch?v=MoUVHctlhdY|400|inline}} | |||
{{#ev:youtube|https://www.youtube.com/watch?v=56yjvpqtEf8|400|inline|||start=581}} | |||
== Источники == | == Источники == | ||
{{ | {{reflist|3}} | ||
[[Категория:Справочник_вылетов]][[Категория:Вылеты X-Ray SDK]] | [[Категория:Справочник_вылетов]][[Категория:Вылеты X-Ray SDK]] | ||
Текущая версия от 15:00, 5 апреля 2019
Expression : assertion failed Function : i:\xray-svn\xrcore\FS.h File : i:\xray-svn\xrcore\FS.h Line : 265 Description : (Pos<=Size) && (Pos>=0)
Существует множество заблуждений по поводу причин данного вылета:
- Неправильно распределены текстуры по папкам. Например, когда *.dds файл в папке textures/wpn, имеет имя начинающееся НЕ с префикса wpn_
- Превышен лимит *.thm файлов в папке SDK gamedata\textures
- У какой-то *.dds текстуры в папке SDK gamedata/textures отсутствует *.thm файл.
Например, если текстура была сохранена сразу из графического редактора в формат *.dds - У какого-то *.thm файла отсутствуют закрепленные за ним, детальные текстуры и бампы
- *.thm файл SDK 0.4 несовместим с SDK 0.7
- *.tga текстуры импортировались в SDK без выставления параметров, а конкретно не был выставлен материал и вес
- Какая-то текстура неправильного размера, а точнее в её *.thm файле указан один размер (например, 1024х1024), а она сама другого (например, 512х512).
Либо размер текстуры не кратен двойке (например, 438х256)
Проверено что:
- Переименование префиксов текстур не вызывает вылета. И по идее, не должно возникать проблем в принципе.
Префикс нужен SDK для распределения текстур по папкам при преобразовании их из *.tga в *.dds — просто для удобства - Если превышен лимит *.thm файлов, конкретно этот вылет
(Pos<=Size) && (Pos>=0)— не происходит. Но происходит другой - SDK стартует нормально, а вот компиляция уровня прерывается другим вылетом, как раз из-за отсутствия этих самых *.thm файлов
- Удаление детальных текстур или бампов не приводит к вылету
(Pos<=Size) && (Pos>=0)(или к любому другому вылету).
Т.к. SDK не отображает их при рендере сцены, а значит и отсутствие их для SDK — не является проблемой достойной упоминания даже в логе, не говоря уже о вылете - SDK 0.7 понимает формат *.thm файла SDK 0.4. 100% ли эта совместимость — сказать трудно. Нужна статистическая выборка.
А совместимость разных версий *.thm файлов на разных версиях движка проверяйте самостоятельно - Не существует сама возможность не задать эти параметры при импорте, т.к. они всегда по умолчанию выставлены.
И, да, они по умолчанию работают, не вызывая вылета - SDK не учитывает (компиляторы учитывают), совпадает ли размер *.dds текстуры и размер записанный в её *.thm файле
Подтверждённая причина вылета:
- Нарушена структура одного из *.thm файлов
Если в его бинарные поля были внесены правки (например, текстовым редактором) — вылет(Pos<=Size) && (Pos>=0)обеспечен
Если правки были внесены исключительно в текстовые поля — вылета может и не быть - Кроме того, *.thm файл имеют не только текстуры, но и модели в формате *.object
Вполне вероятно, что ошибка в структуре *.thm моделей, также приведет к вылету
Решение
К сожалению, в логе отсутствует какое-либо упоминание о имени текстуры или *.thm файла из-за которого произошёл вылет.
Действовать придется методом исключения, удаляя папку текстур за папкой, пока вылет не пропадёт. А затем и файл, за файлом.
Минимизируйте шанс возникновения вылета, а именно, всегда импортируйте текстуры через SDK:
- Конвертируйте текстуру в формат *.tga, и переместите в папку SDK editors/import
- Запустите Actor Editor
- Выполните Scene -> Images -> Image Editor
- Выберите из списка нужную текстуру, и нажмите кнопку Ok.
Источники
- ↑ Пост пользователя "raf100" на AMK форуме
- ↑ Пост пользователя "DarkSatellite" на форуме AP Production
- ↑ Пост пользователя "GefoS" на AMK форуме
- ↑ Пост пользователя "denis2000" на форуме AP Production
- ↑ Пост пользователя "V92" на AMK форуме
- ↑ Канал пользователя "genior2011" на YouTube.com
- ↑ Канал пользователя "Grez" на YouTube.com