|
|
Строка 282: |
Строка 282: |
| ==== Ошибка ==== | | ==== Ошибка ==== |
| По пути указанному в <code>$game_data$</code> выбранного профиля файла '''converter.ini''', не найдена папка ''gamedata\textures\'''det'''''. | | По пути указанному в <code>$game_data$</code> выбранного профиля файла '''converter.ini''', не найдена папка ''gamedata\textures\'''det'''''. |
| + | |
| А так-же, причиной может стать переполнение этой папки. | | А так-же, причиной может стать переполнение этой папки. |
| | | |
| ==== Решение ==== | | ==== Решение ==== |
| Проверить наличие папки с указанными именем по указанному пути. | | Проверить наличие папки с указанными именем по указанному пути. |
| + | |
| + | В случае переполнения, достаточно удалить, перенести, на время декомпиляции, хотя-бы одну текстуру.<ref>[https://www.amk-team.ru/forum/topic/13149-cop-voprosy-po-sdk/?do=findComment&comment=1434562 Пост пользователя "WolfHeart" на AMK форуме]</ref> |
| |} | | |} |
| {| class="mw-collapsible mw-collapsed wikitable" | | {| class="mw-collapsible mw-collapsed wikitable" |
Текущая версия на 00:23, 25 августа 2022
X-Ray Converter
|
Разработчик
|
bardak
|
Модифицировали
|
Loxotron, Kolmogor, NeoH, mnn, XiaNi, gr1ph00n, RedPython, abramcumner, Freack, xrNatteFrost, K.D., Charsi
|
Версия
|
от 18 октября 2017 года
|
Тип
|
Конвертер
|
Платформа
|
Windows: Vista/ 7/ 8/ 8.1/ 10
|
Форматы файлов
|
*.ogf, *.object, *.bones, *.omf, *.skls, *.skl, *.dm, *.dds, *.tga, *.ogg, *.wav, *.thm
|
История версий
|
X-Ray Converter[1][2] — это многофункциональная утилита для работы с форматами файлов игры и X-Ray SDK.
Для использования конвертера, создайте в его корневой директории *.bat или *.cmd файл.
[+] Дополнительная настройка
|
Для работы ключей -level , -dds2tga и -ogg2wav , необходимо задать путь к директории с X-Ray SDK.
- Откройте любым текстовым редактором файл fsconverter.ltx
- Найдите строку:
$sdk_root$ = false| false| X:\
- Исправьте путь в ней на свой. Например:
$sdk_root$ = false| false| D:\X-Ray_SDK_0.7\editors\
Примечание
- Для SDK 0.5 / 0.7 используйте файл fsconverter_cs-cop.ltx, переименовав его в fsconverter.ltx.
В нём исправлена ошибка path $game_config$ does not exist
Для правильной работы ключа -level , ещё также необходимо задать путь к директории с распакованными игровыми архивами для выбранной версии игры (билда).
- Откройте файл любым текстовым редактором converter.ini
- Найдите в нём секцию соответствующую необходимой версии игры. Например, для Зова Припяти это секция:
[3870_config]:3456_config
$game_data$ = X:\_builds_\CoP\gamedata\
$game_levels$ = X:\_builds_\CoP\gamedata\levels\
Исправьте пути в ней на свои. Например:
$game_data$ = D:\S.T.A.L.K.E.R. Call of Pripyat\gamedata\
$game_levels$ = D:\S.T.A.L.K.E.R. Call of Pripyat\gamedata\levels\
- Для последующей совместимости полученного уровня с используемой версией SDK, обязательно допишите в секцию параметр
spawn_version .
spawn_version = cs — для SDK 0.6
spawn_version = cop — для SDK 0.7
Примечание
- По умолчанию, если строка не указана, читается, как для SDK 0.4.
|
Возможности
[+] Преобразование ogf в object
|
converter [-ogf] [-object] <оригинал> [-out <результат>]
Пример:
converter -ogf balon_01.ogf -object
Если ключ -out <результат> не задан, имя результирующего файла генерируется из исходного путём замены расширения на *.object
Замечания/проблемы:
- для OGF v3 (сборки 1098, 1114, 1154) не восстанавливается bind pose скелета (просто потому что не предусмотрена форматом), но часто её можно (и нужно) реконструировать вручную из idle-анимации.
- для OGF v4+ (ЧН, в том числе сборка 3120) не восстанавливаются метки в анимациях (неизвестно, как они хранятся в обновлённом *.object и на данный момент нет в публичном доступе соответствующего X-Ray SDK). Кроме того, текущий X-Ray SDK игнорирует информацию о третьей и четвёртой влияющих на вершину костях.
- нет гарантии, что у двухсторонних поверхностей правильно определится "главная" сторона, однако на практике обычно всё хорошо.
|
[+] Преобразование скелета из ogf в bones
|
converter [-ogf] -bones <оригинал> [-out <результат>]
Если ключ -out <результат> не задан, имя результирующего файла генерируется из исходного путём замены расширения на *.bones
|
[+] Преобразование всех анимаций из ogf или omf в skls
|
converter [-ogf|-omf] -skls <оригинал> [-out <результат>]
Если ключ -out <результат> не задан, имя результирующего файла генерируется из исходного путём замены расширения на *.skls
Замечания:
- анимация сохраняется в виде ступенчатых кривых и никакого преобразования в сплайны не производится (а надо бы).
|
[+] Преобразование отдельных анимаций из ogf или omf в skl
|
converter [-ogf|-omf] -skl <имя_анимации> <оригинал> [-out <результат>]
Если ключ -out <результат> не задан, имя результирующего файла генерируется из исходного путём замены расширения на *.skl и добавления суффикса с именем анимации.
Замечания/проблемы:
- Нельзя задать анимацию, в имени которой используются пробелы.
- См. выше про форму задания кривых.
|
[+] Преобразование dm в object
|
converter [-dm] [-object] <оригинал> [-out <результат>]
Если ключ -out <результат> не задан, имя результирующего файла генерируется из исходного путём замены расширения на *.object
Замечания:
- Информация о границах масштабирования детальной модели теряется, однако можно её посмотреть с помощью ключа
-info (вместо -object ).
|
[+] Распаковка и упаковка игровых архивов
|
converter -unpack <архив> [-11xx|-2215|-2945|-2947ru|-2947|-xdb] [-flt <маска>]
Ключ -flt служит для извлечения файлов по маске. Примеры:
converter -unpack -xdb gamedata.db0 -flt .ogf
converter -unpack -2215 gamedata.xp0 -flt \levels\
Команда для упаковки:
converter -pack <папка> [-2947ru|-2947ww|-xdb|-xdb_ud <файл>] -out <путь>
Пример:
converter -pack gamedata -2947ru -out gamedata.db1
Заметка:
|
ВНИМАНИЕ! Для использования — требуется дополнительная настройка!
[+] Преобразование игровых уровней в формат Level Editor
|
converter -level <номер_сборки>:<имя_уровня> [-out <имя_сцены>] [-mode maya|le|le2|raw] [-terrain]
Примеры:
converter -level default:l01_escape -out l01_escape -mode le
converter -level 1844:military_game -out military_game -mode le
Ключ -mode задаёт режим работы:
-
maya - декомпилировать только геометрию уровня
-
le - декомпилировать в формат LE
-
le2 - декомпилировать в формат LE (для l12_stancia_2)
-
raw - декомпилировать в формат LE (отладочный режим)
Ключ -with_lods обрабатывается в зависимости от значения -mode . Если он задан совместно с -mode maya , программа выдаст ещё и MU-модели. С остальными режимами его наличие заставляет converter разбивать LOD-текстуры, что необходимо для полной пересборки.
Ключ -terrain - в объект террейна добавляются только полигоны с текстурой террейна. Без ключа к террейну могут добавляться полигоны, близкие к объектам детейла (травы), например, бордюры.
Отладочные параметры: -dbgcfrm, -dbgmrg
Замечания/проблемы:
- Геометрия уровней из 1098, 1114, 1154 часто содержит ошибки, на которых валится современный xrLC. По крайней мере часть из них диагностируется при декомпилировании и сохраняется в стандартном формате LE в файле $log$\converter_<имя_сцены>.err
- Деревья из ранних сборок (1098-1154) нельзя использовать с современными шейдерами для крупной растительности. Следует использовать современные MU-модели.
- Геометрия уровней из сборок 2215-3312 (ТЧ) не содержит ошибок вроде нулевых треугольников или потяжек текстур, однако в редких случаях они могут появиться при пересборке с помощью xrLC на этапе оптимизации. Наблюдается, например, в шахтах лифтов на l11_pripyat.
- Геометрия уровней из сборки 3456 и выше (ЧН) наоборот, иногда содержит ошибки (с точки зрения xrLC из X-Ray SDK 0.4).
- Неправильно назначается compiler shader для собранных в режиме draft уровней.
- Абажуры ламп, тайники -- фиксированная геометрия, то есть изменения будут видны только после полной пересборки уровня.
- Декали (wallmark.part) восстанавливаются только в случае наличия избыточного level.wallmarks.
- Не обрабатывается случай с пересекающимися областями звукового окружения (level.snd_env/sound_env.part). В оригинальной игре уровней с таким свойством нет.
- У моделей детальных объектов форсируется флажок two-sided для нормальной отрисовки в LE.
- Сетка навигации AI (level.ai/ai_map.part) некоторых уровней (например, l08_yantar) утоплена в геометрии. Вопрос о причине открыт.
|
[+] Множественное преобразование текстур из dds в tga
|
converter -dds2tga [-with_solid] [-with_bump]
Утилита читает все *.thm файлы в $textures$ и воссоздаёт *.tga из *.dds в $game_textures$. Уже существующие *.tga файлы не перезаписываются. Ключ -with_solid предписывает обрабатывать ещё и непрозрачные текстуры, что нужно при пересборке с -gi
|
[+] Множественное преобразование звуков из ogg в wav/thm
|
converter -ogg2wav
Утилита воссоздаёт *.wav/*.thm файлы в $sounds$, используя *.ogg из $game_sounds$. Уже существующие *.wav/*.thm не перезаписываются.
|
Установка
Распакуйте архив converter 18102017.7z в удобную для вас директорию.
Переместите файлы "Converter Extra" из архива в директорию выбранной вами версии конвертера.
Например, Win32-Release/converter
Примечание
- Первый запуск после любых изменений в настройках желательно всегда делать с ключом
-ro
(работа без записи на диск).
- Владельцам видеокарт от NVIDIA! Для ускорения разбиения текстур лодов, используйте CUDA — эта версия конвертера, использует библиотеку NVIDIA Texture Tools с технологией CUDA.
Результаты декомпиляции уровня l01_escape из ТЧ с разбиением текстуры лодов (система: Intel Core i5-4590, GTX 1060 6Gb):
Win32-Release = 162 секунды
Win32-Release_CUDA = 37 секунд
x64-Release = 130 секунд
x64-Release_CUDA = 38 секунд
Возможные ошибки и их исправление
[+] [bug] unimplemented code path at ..\xr_entity_script.cxx
|
Ошибка
Может возникнуть при использовании ключа -level .
Решение
Попробуйте временно убрать из папки с декомпилируемым уровнем файл level.spawn, и попробуйте снова.
|
[+] path $game_config$ does not exist
|
Ошибка
По пути указанному в $game_data$ выбранного профиля файла converter.ini, не найдена папка указанная $game_config$ в fsconverter.ltx
Скорее всего, вы до этого работали с ЧН/ЗП, и вам понадобилось поработать с ТЧ, но вы забыли исправить имя папки configs на config .
Решение
Проверить наличие папки с указанными именем по указанному пути.
|
[+] path $maps$ does not exist
|
Ошибка
По пути указанному в $game_data$ выбранного профиля файла converter.ini, не найдена папка указанная $maps$ в fsconverter.ltx
Скорее всего, в fsconverter.ltx указана старая исходная директория $server_data_root$ , а не $sdk_root$ . И папка levels , а не maps
Решение
Проверить наличие папки с указанными именем по указанному пути.
|
[+] [bug] unexpected code path at ..\level_tools_details.cxx
|
Ошибка
По пути указанному в $game_data$ выбранного профиля файла converter.ini, не найдена папка gamedata\textures\det.
А так-же, причиной может стать переполнение этой папки.
Решение
Проверить наличие папки с указанными именем по указанному пути.
В случае переполнения, достаточно удалить, перенести, на время декомпиляции, хотя-бы одну текстуру.[3]
|
[+] unspecifed output file
|
Ошибка
В *.bat\*.cmd файле запуска конвертера не задан необходимый ключ -out
Решение
Проверить его наличие ключа, и правильность указания
|
[+] can't set scene name explicitly for multiple input levels
|
Ошибка
В *.bat\*.cmd файле запуска конвертера задан ключ -out , но не задано "имя сцены" (см. Преобразование игровых уровней в формат Level Editor).
Решение
Проверить чтобы после ключа было указано "имя сцены" (это имя папки или путь до неё относительно папки конвертера).
|
[+] [bug] assertion failed at ..\level_tools.cxx
|
Ошибка
Актуальна только для старых версий конвертера.
Решение
Используйте крайнюю версию конвертера.
|
[+] path $objects$ does not exist
|
Ошибка
По пути указанному в $objects$ файла fsconverter.ltx, не найдена указанная папка.
Решение
Проверить наличие папки с указанными именем по указанному пути.
|
[+] [bug] unexpected code path at ..\xr_ogf.cxx
|
Ошибка
Актуальна только для старых версий конвертера.
Решение
Используйте крайнюю версию конвертера.
|
[+] [bug] unexpected code path at ..\xr_ini_file.cxx
|
Ошибка
Нарушена структура файла level.ltx декомпилируемого уровня[4][5][6].
Решение
Откройте файл любым текстовым редактором, и удалите его содержимое.
|
[+] [bug] unexpected code path at ..\xr_level.cxx
|
Ошибка
В папке с декомпилируемым уровнем отсутствует директория meshes с файлами вида brkbl#0.ogf, прописанными в файле level.spawn уровня.
Решение
На время декомпиляции, убрать из папки уровня файл level.spawn[7]
|
[+] [bug] assertion failed at ..\xr_packet.cxx:151
|
Ошибка
Ошибка в файле level.spawn декомпилируемого уровня.
Решение
На время декомпиляции, убрать из папки уровня файл level.spawn[8]
|
Источники