Перейти к контенту

Поиск в системе

Результаты поиска по тегам 'sdk'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • S.T.A.L.K.E.R.
    • AMK мод
    • Школа моддинга
    • Мастерская ТЧ
    • Мастерская ЧН
    • Мастерская ЗП
    • AMK English Version
  • Общий форум
    • Флейм
    • Административный раздел
  • Сетевые баталии
    • Сетевые баталии
  • Metro 2033 и Metro: Last Light
  • Другие игры
    • FPS / Action
    • RPG / RTS / TBS
    • Гонки / Симуляторы
    • Квесты/Аркады
    • Онлайн игры
    • Разное
    • Консоли
  • Обсуждение сайта Клуб modders-wiki.ru
  • OGRE 3D Клуб разработчиков
  • Форум клуба Клуб "Звуковиков"
  • CryEngine Клуб разработчиков
  • Modding software Клуб modders-wiki.ru
  • Unity Клуб разработчиков
  • NeoAxis 3D Клуб разработчиков
  • Textures Клуб modders-wiki.ru
  • Форум клуба Клуб Бункер Бобра
  • Torque 3D Клуб разработчиков
  • Общая тема Клуб разработчиков
  • X-Ray Engine Клуб modders-wiki.ru
  • X-Ray SDK Клуб modders-wiki.ru
  • Configs Клуб modders-wiki.ru
  • Scripts Клуб modders-wiki.ru
  • Unreal Engine Клуб разработчиков
  • Sounds Клуб modders-wiki.ru
  • Приемный покой Клуб "Безумный Психиатр"
  • Meshes Клуб modders-wiki.ru
  • Spawns Клуб modders-wiki.ru
  • Lumberyard Клуб разработчиков
  • Source Клуб разработчиков
  • Blender Клуб разработчиков
  • Форум клуба Клуб "TEXCOORDN;"
  • Levels Клуб modders-wiki.ru
  • Технологии Клуб modders-wiki.ru

Найдено 7 результатов

  1. [SoC] Вопросы по SDK

    X-Ray SDK v0.4скачать Глобальный патч v0.4 (16 Dec 2009) для X-Ray SDK v0.4 скачать Декомпилятор уровней, конвертер анимаций, моделей и еще кучи всего скачать Скрипты импорта/экспорта объектов для 3ds max (den-stash): Тут можно найти последнюю версию: ссылка Плагины импорта/экспорта геометрии в Milkshape 3D (bardak, Kamikazze): скачать Плагины импорта/экспорта геометрии в Maya (bardak, surfer): скачать Плагины экспорта геометрии из Maya/Lightwave (официальные от GSC): скачать Официальный xrAI для ТЧ: скачать Ускоренные компиляторы для ТЧ, присутствует обход ошибки Invalid Face (Mortarion,Haron,Macron,Bardak): скачать xrLC + xrDO_Light + xrAI (Sep 27 2014) Авторы: GSC Правки и сборка под x64: K.D. ЧН: https://yadi.sk/d/vK-lttohbhNHu(без pdb https://yadi.sk/d/t5f3vuL-bhNJt ) ЗП: https://yadi.sk/d/uaDOZDzEbhNKa(без pdb https://yadi.sk/d/iCtXQ9bgbhNL4 ) build 5714, Sep 27 2014 ! исправлена замена каналов в итоговой текстуре террейна build 5578, May 14 2014 ~ сохранение текстур переделано с nvdxt на nvtt build 5571, May 7 2014 ! убрана надпись LevelBuilder из лога build 5570, May 6 2014 ! переделано детектирование процессора и его фичей ! теперь при вылете компилятор не пытается продолжать работать + добавлен ряд новых ключей запуска (-norgb, -lmap_quality) + при отсутствии текстур (tga, thm) xrLC слетает не сразу, а по окончании фазы загрузки + добавлена инициализация xrDebug для формирования стека вызовов и минидампа при вылете + добавлен расчет номера билда аналогично игре + изменено имя лог-файла на конфигурации x64 build 5707, Sep 20 2014 ~ при отсутствии необходимых файлов (build.cform и т.д.) компилятор выдает сообщение build 5578, May 14 2014 ~ сохранение текстур переделано с nvdxt на nvtt build 5571, May 7 2014 + добавлена поддержка x64 + добавлен ряд новых ключей запуска (-norgb, -nosun) + добавлена инициализация xrDebug для формирования стека вызовов и минидампа при вылете + добавлен расчет номера билда аналогично игре + изменено имя лог-файла на конфигурации x64 ! убрана надпись LevelBuilder из лога Sep 27 2014 ~ исправлено падение xrAI на старте Sep 20 2014 + поддержка build.cform, полученного новым xrLC ТЧ: https://yadi.sk/d/NeOThjvxbgvde(без pdb https://yadi.sk/d/qrHM0AnlbhNH3 ) Имя файла: thm for all textures SoC.rar Размер: 155.48 МБ Ссылка: >>Click Me<< Предназначены для расставления на своих картах в редакторе карт, шейдеры и текстуры уже настроены. by UX.Loki http://www.stalkerin.gameru.net/downloads/...lker_Content.7z Обновленные исходники рук с костями для 3д макса 8.0 и выше в формате .max, теперь вам будет гораздо легче создать собственный худ. Модель привязана к костям, сделана камера для контроля анимаций (вид HUD-а как в игре) by Tambovski http://www.stalkerin.gameru.net/downloads/...D_HANDS_new.rar В комплекте лестницы, hom-кубик occ и прочая тематичная дребедень + полезная инфа. Разархивировать в папку с SDK. by macron http://yadi.sk/d/Y7kMpHcG7XkBU Оригинал: Kostya V Переписал: krovosnork Настройка СДК. 1. Установите СДК на свой компьютер. 2. Лучше всего устанавливать СДК по такому адресу (в будущем тогда будет меньше мороки с настройками): C:\Program Files\X-Ray SDK 3. Установите Глобальный патч v0.4 для X-Ray SDK v0.4 4. Возьмите распакованную версию игры Сталкер ТЧ (gamedata) и поставьте с заменой в X-Ray SDK\level_editor. Это упростит работу в будущем. 5. Теперь понадобится конвертер от Бардака 6. С помощью него преобразовываем текстуры dds2tga. Как - читаем ридми. Необходимо только запустить конвертер на преобразование, остальное он сделает сам. Это необходимо для того, чтобы в СДК появились недостающие текстуры, которых будет много не хватать, если этого не сделать. 7. Ставим компиляторы: Официальный xrAI для ТЧ:скачать Ускоренные компиляторы для ТЧ, присутствует обход ошибки Invalid Face (Mortarion,Haron,Macron,Bardak): скачать xrLC + xrDO_Light + xrAI (Sep 27 2014) Авторы: GSC Правки и сборка под x64: K.D. build 5714, Sep 27 2014 ! исправлена замена каналов в итоговой текстуре террейна build 5578, May 14 2014 ~ сохранение текстур переделано с nvdxt на nvtt build 5571, May 7 2014 ! убрана надпись LevelBuilder из лога build 5570, May 6 2014 ! переделано детектирование процессора и его фичей ! теперь при вылете компилятор не пытается продолжать работать + добавлен ряд новых ключей запуска (-norgb, -lmap_quality) + при отсутствии текстур (tga, thm) xrLC слетает не сразу, а по окончании фазы загрузки + добавлена инициализация xrDebug для формирования стека вызовов и минидампа при вылете + добавлен расчет номера билда аналогично игре + изменено имя лог-файла на конфигурации x64 build 5707, Sep 20 2014 ~ при отсутствии необходимых файлов (build.cform и т.д.) компилятор выдает сообщение build 5578, May 14 2014 ~ сохранение текстур переделано с nvdxt на nvtt build 5571, May 7 2014 + добавлена поддержка x64 + добавлен ряд новых ключей запуска (-norgb, -nosun) + добавлена инициализация xrDebug для формирования стека вызовов и минидампа при вылете + добавлен расчет номера билда аналогично игре + изменено имя лог-файла на конфигурации x64 ! убрана надпись LevelBuilder из лога Sep 27 2014 ~ исправлено падение xrAI на старте Sep 20 2014 + поддержка build.cform, полученного новым xrLC ТЧ: https://yadi.sk/d/NeOThjvxbgvde(без pdb https://yadi.sk/d/qrHM0AnlbhNH3 ) ЧН: https://yadi.sk/d/vK-lttohbhNHu(без pdb https://yadi.sk/d/t5f3vuL-bhNJt ) ЗП: https://yadi.sk/d/uaDOZDzEbhNKa(без pdb https://yadi.sk/d/iCtXQ9bgbhNL4 ) 8. Открываем СДК. Это делается путем запуска батника LevelEditor в X-Ray SDK\level_editor. 9. Создаем ЛОДы для деревьев и камней. Статья Видео Настройка конвертера. Создаем папку X-Ray SDK\converter и копируем туда файлы конвертера. Затем настраиваем его. Если установили СДК в C:\Program Files\X-Ray SDK, то в файле fsconverter.ltx ничего уже настраивать не надо. Если же сдк установлен в другую папку, то в файле fsconverter.ltx находим строчку $sdk_root$= false| false| c:\program files\x-ray sdk\level_editor\ и прописываем путь к сдк. В файле converter.ini находим такие строки и исправляем их (укажите путь к своему сдк, если он установлен в другую папку): ; 2947+ (финалка включая обновления) [2947_config]:2945_config $game_data$ = c:\program files\x-ray sdk\level_editor\gamedata\ $game_levels$ = c:\program files\x-ray sdk\level_editor\gamedata\levels\ [3120_config]:2947_config $game_data$ = c:\program files\x-ray sdk\level_editor\gamedata\ $game_levels$ = c:\program files\x-ray sdk\level_editor\gamedata\levels\ Все, теперь конвертер настроен. Как им пользоваться читаем в ридми. Подготовка уровня 1. Сделайте в 3Д редакторе какой-нибудь террейн. Затекстурьте его и эспортируйте в СДК. 2. Открываем наш новый уровень в Левел Едиторе. 3. Заходим в Properties\Scene\Options и меняем Name prefix и Level path на нужные нам названия. Выбираем Quality. 4. Добавляем Glow. Назначаем ему текстуру. 5. Затем жмем Edit Mode\Light и добавляем освещение на уровень. Можно поставить несколько в разных углах и хватит. 6. Далее добавляем переход с уровня. (Пропустите этот шаг, если не собираетесь подключать локацию к остальным) Edit Mode\Spawn Element\ai\level changer и ставим этот level changer в любом месте, где хотим сделать переход. Потом жмем Edit Mode\Shape выбираем, допустим, сферу и ставим ее в том же месте, где и level changer. Затем обратно на Edit Mode\Spawn Element и нажимаем Commands\Attach Object, а потом опять на сферу. После этого сфера и level changer объединяться. 7. Теперь нажимаем на level changer правой кнопкой мыши и выбираем properties. В нем выбираем в Level to change уровень, на который хотим перейти. В Level point to change пишем название граф поинта, на котором появится ГГ после перехода. Заходим в custom data перехода и пишем там: [pt_move_if_reject] path = название уровня_way_if_reject 8. Нажимаем Edit Mode\Way Points, ставим 1 вейпоинт рядом с level changer, теперь жмем point mode и ставим второй. Теперь у нас получился путь, который мы прописали в custom data level changer, заходим в свойства и обзываем его также как и в custom data, то есть название уровня_way_if_reject. 9. Расставляем графпоинты. Edit Mode\Spawn Element\ai\graph point. Ставим один граф-поинт рядом с переходом и в свойствах прописываем ему название. (Его можно использовать как точку спавна при переходе на локацию) 10. Далее расставляем граф-поинты по уровню. Необходимо ставить их там, где предполагаются места стоянок, а также по периметру уровня. (Для тестовой локации будет достаточно нескольких граф-поинтов) 11. Далее идем в Edit Mode\Spawn Element\ и спавним на локации какой-нибудь предмет (например, винторез). 12. Теперь надо сделать АИ-сетку. Нажимаем Edit Mode\Object и выделяем все объекты на уровне (Selection\Select All). Далее Edit Mode\AI Map и вносим все выделенные объекты в список. Snap List\Comands\Add Selected To List. Ставим АИ-нод и нажимаем Generate Full. 13. После создания АИ-сетки нажимает Edit Mode\Sector. Выбираем Remove Default, а после Create Default. Все, приготовления закончились. Теперь начнем компиляцию. Компиляция 1. В СДК делается Build этого уровня. Compile->Build 2. Затем компилируем геометрию с помощью xrLC. Нужно записать название локации в батник xrLC, при необходимости добавить дополнительные ключи (если используете x64 компиляторы, список и предназначение ключей есть в ридми) 3. Далее прописываем в конфигах свой уровень. Прописать надо в файлах game_graphs.ltx и game_levels.ltx. 4. Теперь переходим к работе с xrAI. В папке level_editor создаем батники: (Путь может отличаться, если вы используете x64 компиляторы) 1) Сборка черновой сетки ИИ: Команда: @start bins\compiler_ai\xrAI.exe -draft -f <имя_уровня> На выходе: gamedata\levels\<имя_уровня>\level.ai. 2) Сборка ИИ-графа: Команда:@start bins\compiler_ai\xrAI.exe -g <имя_уровня> На выходе: gamedata\levels\<имя_уровня>\level.{graph|gct.raw} 3) Склейка ИИ-графов карт в глобальный игровой граф: Команда:@start bins\compiler_ai\xrAI.exe -m На выходе: gamedata\game.graph и gamedata\levels\*\level.gct (см. ниже для случая с картами без исходников) 4) Сборка all.spawn Команда:@start bins\compiler_ai\xrAI.exe -s На выходе: gamedata\spawns\all.spawn Все карта скомпилирована. Теперь надо собрать геймдату своего уровня. Обязательно необходимо скопировать из level_editor\gamedata в свою геймдату следующие файлы: - config\game_graphs.ltx и game_levels.ltx - spawns\all.spawn - из папки levels скопировать папку с новым уровнем (build.* файлы не нужны) - из папки levels необходимо скопировать в соответствующие папки файлы level.gct для каждого уровня, если вы подключали свою локацию к оригинальным. - game.graph - в папку textures скопировать все свои новые текстуры, которые использовали для своего уровня. Теперь получившуюся папку gamedata помещаем в папку с игрой и запускаем новую игру. Дорогие друзья! Прежде, чем написать сообщение с вопросом "а почему у меня не работает"/"а почему такой вылет", проверьте написанное в FAQ по основным проблемам. Если описанный в сообщении вылет/проблема есть в FAQ, не обессудьте - буду тереть. KD87 ================================================================================ Сюда же: Почему у меня даже на Windows 7 x64 СДК использует только 2 Гб памяти и не дает работать с очень большими локами? Причина: не хватает оперативной памяти, точнее, памяти, выделенной под приложение. Обычно происходит по двум причинам - винда x86 выдает приложению не более 2 Гб оперативки, а приложение, скомпиленное 32битным компилятором, не может адресовать более 2 Гб памяти. Если физической памяти много (4 Гб и более) решаем так: Заставляем винду выдавать побольше памяти приложению: -устанавливаем x64-версию Windows. -на x86-версиях можно выполнить следующее: XP: в boot.ini добавьте ключ /3gb к конфигу текущей операционной системы. Vista/Win7: в командной строке введите BCDEDIT /Set IncreaseUserVa 3072 Теперь винда сможет давать 3 Гб приложениям. Внимание! Обычно все путем, но иногда программы могут начать работать странно! Могут начаться глюки! Использовать на свой страх и риск! Заставляем приложение адресовать более 2 Гб памяти: -добавляем в экзешник флаг /LARGEADDRESSAWARE. Сделать это можно разными способами, проще всего - готовым патчем: патч ================================================================================ При экспорте модели из AE в ogf происходит примерно такое: Возможная причина: в Вашей модели более 60 000 фейсов (если смотреть в AE). В любом случае проблема в модели, точная причина пока не установлена. ================================================================================ Вопрос: При экспорте OGF появляется такое сообщение: Ответ: Когда будете в SDK выбирать кости и делать Generate Shape, выбирате только те кости, к которым есть привязка... в данном случае - выбираем все кости, кроме тех на которые ругается сдк, то есть root, connectbone01, connectbone02 соответсвенно... ================================================================================ Вопрос: Взял с карты, импортированой в 3ds Max - любой обьект. Выравниваю пайвот по обьекту (center to object). Далее помещаю обьект в центр координат, экспортирую. А в LE, при спавне этого обьекта - он оказывается хз где, а не по пайвоту. Подскажите как правильно выровнять надо. Ответ: После того, как поставите объект куда надо - идём туда, где "включали пайвот" и нажимаем Reset Pivot - непосредственно перед экспортом. И экспортируйте на здоровье. Если объектов - много - выделяем их все, и также "сбрасываем" Pivot. ИЛИ Центрировать пайвот по обьекту, поставить в центр и в утилитах нажать Reset xForm. ================================================================================ Вопрос: Во время работы выводится ошибка invalid float operation, в логе появляется запись следующего вида: Далее подобная же ошибка происходит при попытке установки на карту любого объекта. Что делать? Ответ: Как правило, эта ошибка вызывается файлом rt_object_props.ltx. Закройте SDK и удалите его. ================================================================================ Вылет при открытии СДК: Причина: отсутствие файла $no_sound.ogg в папке \gamedata\sounds\ ================================================================================ Cовместил SDK с игрой, но вылетает с ошибкой. Полный репорт ошибки: Ответ: Вы просто забыли удалить либо переместить все .db фаилы в другую папку. ================================================================================ Вопрос: SDK не работает под Vista/Win7, что делать? Ответ: Ставим на диск с фаиловой системой fat32, не открываем пока редактор, что нужно устанавливаем в level_editor\rawdata\, не забываем впихнуть в папку с редактором d3dx9_31.dll. Создание нового левела на висте - переименовываем пример mp_atp_test.level и папку под него, редактируем level.ini, детальные объекты придется делать самому, а не открывать заготовку. Также смотрите: Запуск СДК под Vista/Win7 с помощью VMWare Worksation: читать Запуск СДК под Vista/Win7 с помощью Microsoft Compatibility Toolkit: читать ================================================================================ Вопрос: После прекомпиляции в редакторе пишет ошибку: Ответ: Сделайте HOM-объекты на локации. Но к сведению... HOM-объекты для компиляции необязательны, то есть игра прекомпилит уровни и переваривает их и без них, так что ставьте на свое усмотрение. Если у вас пишет Invalid Scene!, то это никак не связано с тем, что вы не поставили сектора и порталы (HOM), а проблема в чем-то другом. Но! Если на карте уже есть HOM, то вам явно стоит разобраться с секторами. ================================================================================ Вопрос: Как запустить Shader Editor, или "А вот это выскочило, когда я попытался запустить .exe-файл": Ответ: Создать в папке ...LevelEditor .bat-файл, в котором написать: @start bins\ShaderEditor.exe Если у вас подобная ошибка с другими .bat фаилами, возможно, вам нужно установить OpenAL 1.1. ================================================================================ Вопрос: Вылетает ошибка при валидации: Ответ: когда что-то меняется из статической геометрии, надо пересчитать сектора и порталы. Edit mode - sector - remove default - create default. Edit mode - portals - compute all. FATAL ERROR [error]Expression : fatal error [error]Function : out_of_memory_handler [error]File : .\xrDebugNew.cpp [error]Line : 318 [error]Description : <no expression> [error]Arguments : Out of memory. Memory request: 65536 K ..Prepare skeleton geometry Bone: bone001 - Part: 0 ..Split meshes FATAL ERROR [error]Expression : assertion failed [error]Function : I:\xray-svn\editors\ECore\Editor\ExportSkeleton.cpp [error]File : I:\xray-svn\editors\ECore\Editor\ExportSkeleton.cpp [error]Line : 72 [error]Description : P<u16(-1) stack trace: Duplicate face found. Removed. Duplicate face found. Removed. Duplicate face found. Removed. Duplicate face found. Removed. Duplicate face found. Removed. Duplicate face found. Removed. ............. Duplicate face found. Removed. Duplicate face found. Removed. Duplicate face found. Removed. Duplicate face found. Removed. ..Calculate TB Split statistic: - Split 0: [Bones: 1, Links: 1, Faces: 1648, Verts: 2018, BrPart: 0, Shader/Texture: 'models\model'/'belt\brezent_a'] - Split 1: [Bones: 1, Links: 1, Faces: 312, Verts: 584, BrPart: 0, Shader/Texture: 'models\model'/'belt\plast_z'] - Split 2: [Bones: 1, Links: 1, Faces: 312, Verts: 584, BrPart: 0, Shader/Texture: 'models\model'/'belt\plast_k'] - Split 3: [Bones: 1, Links: 1, Faces: 52332, Verts: 70652, BrPart: 0, Shader/Texture: 'models\model'/'belt\stal_k'] - Split 4: [Bones: 1, Links: 1, Faces: 3724, Verts: 4352, BrPart: 0, Shader/Texture: 'models\model'/'belt\brezent_p'] - Split 5: [Bones: 1, Links: 1, Faces: 5248, Verts: 7048, BrPart: 0, Shader/Texture: 'models\model'/'belt\plast_b'] ..Export skeleton geometry ..Export skeleton geometry (Make Progressive...) FATAL ERROR [error]Expression : assertion failed [error]Function : i:\xray-svn\xrcore\_stl_extensions.h [error]File : i:\xray-svn\xrcore\_stl_extensions.h [error]Line : 43 [error]Description : _Pos<size() stack trace: ..Export skeleton geometry (Compute bone bounding volume...) Export complete. ..Export skeleton geometry (Compute bone bounding volume...) Bone 'root' has invalid shape. Bone 'connectbone01' has invalid shape. Bone 'connectbone02' has invalid shape. Export failed. FATAL ERROR [error]Expression : b [error]Function : X:\stalker_addon\sources\engine\xrCore\Xr_ini.cpp [error]File : X:\stalker_addon\sources\engine\xrCore\Xr_ini.cpp [error]Line : 670 [error]Description : name[...] already exist in section[...\x-raysdk(3-cs)\editors\maps\z_test.level] stack trace: FATAL ERROR [error]Expression : assertion failed [error]Function : I:\xray-svn\xr_3da\Environment_misc.cpp [error]File : I:\xray-svn\xr_3da\Environment_misc.cpp [error]Line : 81 [error]Description : !sounds.empty() || !effects.empty() FATAL ERROR Expression : hXRSE_FACTORY Function : I:\xray-svn-trunk\editors\LevelEditor\Edit\ESceneSpawnTools.cpp File : I:\xray-svn-trunk\editors\LevelEditor\Edit\ESceneSpawnTools.cpp Line : 38 Description : Can't load library: Arguments : xrSE_Factory.dll !Level doesn't contain HOM objects! Expression : F Function : I:xray-svn-trunkxrCoreELocatorAPI.cpp File : I:xray-svn-trunkxrCoreELocatorAPI.cpp Line : 63 Description : Can't open file: Arguments : fs.ltx Error: Scene has 80301 non associated face! При использовании любых компиляторов (xrLC, xrDO_Light, xrAI) вылет: Последние строчки в логе: Причина: Все компиляторы X-Ray используют типовую функцию загрузки геометрии уровня - с текстурами и прочим. Так что либо нету используемых на локации thm либо tga-текстур. ================================================================================ Вопрос: У меня выбивает ошибку "Scene must be empty before editing library" при входе в Objects->Library Editor подскажите что делать? Ответ: В главном меню File -> Clear. ================================================================================ Вопрос: В СДК 0.4, 0.5 (0.6) при расстановке объектов они появляются прямо перед камерой в воздухе, и их приходится постоянно спускать на землю. Ответ: Нажмите на верхней панели LE кнопку Object Snap Toggle. ================================================================================ Вопрос: При попытке использования некоторых объектов стандартной библиотеки (например, из набора statics\dead_body\) выдается ошибка о недостающей текстуре. Ответ: Не включенные в SDK текстуры можно найти в распакованных архива игры. Скопируйте нужные в editor\gamedata\textures. ================================================================================ Вопрос: Поставил объект, а на карте после компиляции его нет, что делать? ( Ответ: Такое бывает, если неправильно заданы свойства объекта. Идем в Objects->Library Editor, находим наш объект, например автобусная остановка в objects(не входит в набор сдк), жмем properties и внизу окна есть выбор между surfaces и Main options, выбираем последнее, теперь меняем Object Type с Dynamic на Static. Вот теперь объект должен нормально отображаться, такой баг частенько случается с модельками на сайте lproject, так что имейте ввиду, когда ставите модели оттуда, что нужно иногда исправлять их исходные параметры. FATAL ERROR Expression: BT.pSurface Function: xrLoad File:...xray-svn\xrAI\compiler_load.cpp Line 209 Descr.: Can't load surface 26 supported formats loading: fx\fx_fire.thm; какая-то thm ================================================================================ Ответ: Весь смысл заключается в том, что в СДК оставили много лишнего, т.е. для текстур оставили сгенерированные thumbail-ы, а самих текстур нет. И вроде бы всё просто - нужно просто их добавить, но редактор понимает только *.tga файлы. Нам поможет утилита dds2tga, которая может пакетно преобразовывать dds файлы в tga. Выявляем(смотрим выше в логе компилятора над надписью "FATAL ERROR") все текстуры на которые ругается редактор, далее берём их из распакованной игры и помещаем в папку утилиты dds2tga (рекомендуется сразу положить екзешник dds2tga в папку Import SDK), запускаем CONV_ALL.BAT, в этой же папке появятся файлы *.tga. Копируем их в папку import/(или rawdata/textures/нужная_папка) пакета SDK. Запускаем Level Editor и даём команду images\ check new textures. ================================================================================ Вопрос: Компилятор бессловесно вылетает в середине компиляции! В логе ошибок нет, а последнее, что он просчитывал, приблизительно такого вида: Ответ: У вас проблемы с объектами, либо каких-то из них попросту нет, либо они криво созданны в 3dsmax, либо настроенны неправильно, либо они гдето очень неудачно пересекаются с другими объектами, смотрите как настраивать правильно объекты в level editor в шестом вопросе этого FAQ. ================================================================================ Карта не компилируется. Компилятор слетает с ошибкой: Ответ: Геометрия карты содержит 145 вырожденных треугольников (invalid face'ов). В моделях НЕ должно быть: очень длинных тонких треугольников; потяжек текстур; несвязанных рёбрами вершин. Как это исправить? Импортируем список ошибок, полученный при декомпиляции карты converter'ом, в LE (Compile-->Import Error List), затем подгружаем куски геометрии с подсвеченными полигонами в 3d-редактор и вручную приводим к соответствию вышеуказанным требованиям. Или же просто используем компиляторы с обходом данной ошибки - для SoC и для CS/CoP. ================================================================================ Вылет на стадии дробления геометрии: конец лога... без каких либо Fatal Error... Причина: Как показала практика, причина данной проблемы техническая - недостаточная мощность компьтера. Какая конфигурация должна быть? Чем мощнее - тем лучше. ================================================================================ Причина: не хватает указанного файла .thm. Чтобы решить проблему, берём одноимённую текстуру в формате .dds, конвертируем в .tga и кладём в папку import. Затем в LE или АЕ жмём Images-->Check New Textures. Если видим окно с надписью Found 1 new texture(s), то радуемся и жмём ОК. После этого откроется библиотека текстур. Чаще всего, при импорте текстур из оригинальной игры, настройка не требуется, поэтому жмём ОК. Если же это какая-нибудь новая текстура, тогда настраиваем её по образцу из оригинала. FATAL ERROR [error]Expression : assertion failed [error]Function : b_BuildTexture::Vflip [error]File : d:\xray-svn\xrlc\build.h [error]Line : 30 [error]Description : pSurface * New phase started: Build UV mapping... | | model 'trees\new_trees\trees_sosna_1_02' - REF_lighted. | Processing... | | model 'trees\new_trees\trees_spil_01' - 2 subdivisions | | model 'props\objects\musor\trash_kamaz_fura' - REF_lighted. | | model 'props\objects\musor\trash_lada_lod' - 2 subdivisions | | model 'props\objects\musor\trash_lada_lod' - REF_lighted. | | ::compact:: 248 verts removed | | ::compact:: 377 verts removed | | ::compact:: 70 verts removed | | ::compact:: 67 verts removed | | ::compact:: 72 verts removed | | ::compact:: 108 verts removed | | ::compact:: 102 verts removed | | ::compact:: 15 verts removed | | ::compact:: 38 verts removed Expression : fatal error Function : CBuild::PreOptimize File : D:\xray-svn\xrLC\xrPreOptimize.cpp Line : 132 Description : <no expression> Arguments : * FATAL: 145 invalid faces. Compilation aborted * New phase started: Subdividing geometry... | Subdividing in space... | | ! ERROR: model #178287 - split fail, faces: 4948, s1/s2:20/4928 | | ! ERROR: model #178287 - split fail, faces: 4948, s1/s2:20/4928 | | ! ERROR: model #178287 - split fail, faces: 4948, s1/s2:20/4928 | | ! ERROR: model #178287 - split fail, faces: 4948, s1/s2:20/4928 | | ! ERROR: model #178287 - split fail, faces: 4948, s1/s2:20/4928 | | ! ERROR: model #178287 - split fail, faces: 4948, s1/s2:20/4928 | | ! ERROR: model #178288 - split fail, faces: 5156, s1/s2:5139/17 | | ! ERROR: model #178288 - split fail, faces: 5156, s1/s2:5120/36 FATAL ERROR [error]Expression : THM [error]Function : CBuild::Load [error]File : D:\xray-svn\xrLC\Build_Load.cpp [error]Line : 282 [error]Description : rawdata\textures\corp\corp_stalker.thm ================================================================================ Причина: Причина: где-то на локации очень неудачно расположен space restrictor, который делит АИ-сетку на несвязанные части. Компилируйте с ключом -no_separator_check или же правьте в СДК. ================================================================================ Причина: Много неслинкованных нодов на АИ-сетке. FATAL ERROR [error]Expression : nodes.size() + m_internal.size() == level_graph().header().vertex_count() [error]Function : CSpaceRestrictorWrapper::verify_connectivity [error]File : I:\xray-svn\xrAI\space_restrictor_wrapper.cpp [error]Line : 268 [error]Description : Restrictor separates AI map into several disconnected components [error]Arguments : esc_selo2_sr FATAL ERROR [error]Expression : assertion failed [error]Function : CSpaceRestrictorWrapper::verify_connectivity [error]File : I:\xray-svn\xrAI\space_restrictor_wrapper.cpp [error]Line : 258 [error]Description : nodes.size() + m_internal.size() <= level_graph().header().vertex_count() ================================================================================ Причина: в gamemtl.xr не хватает материала с id = 94. Для разбора файла gmdc в помощь: ================================================================================ Причина: в level.ps_static есть партикл, которого нет в particles.xr. Решения три: -удалить level.ps_static. Будет работать, но пропадут статичные партиклы на карте. -разобрать level.ps_static, удалить партикл. -разобрать particles.xr, добавить партикл. ================================================================================ Причина: all.spawn не соответствует game.graph. Когда компилировали AI, видно, забыли пересобрать спавн. ================================================================================ Причина: game.graph не соответствует кросс-таблице одной из локаций. Скорее всего - забыли закинуть в геймдату level.gct после правки в СДК и компиляции AI. Помните, level.gct нужно обновить для всех локаций, а не только для тех, которые подвергались правке. ================================================================================ Вопрос: Ошибка после запуска игры с новыми левелами: Ответ: -В версии за 10.09.08 аивраппера бардака, если соединять новые левелы, level_changer'ы(переходы между уровнями) нормально не работали, в текущей версии исправлено. -Вы забыли добавить в геймдату файл game.graph. -В спавне указан неуществующий game_vertex_id. ================================================================================ Причина: нет рпонтов для игроков, им негде спавниться. Расставьте в LE. Expression : fatal error Function : CLevel::Load_GameSpecific_CFORM File : E:\stalker\patch_1_0004\xr_3da\xrGame\Level_load.cpp Line : 167 Description : <no expression> Arguments : Game material '94' not found Expression : SG Function : CRender::model_CreateParticles File : E:\stalker\patch_1_0004\xr_3da\xrRender_R1\FStaticRender.cpp Line : 156 Description : Particle effect or group doesn't exist Arguments : hit_fx\hit_water_00 FATAL ERROR [error]Expression : header().graph_guid() == ai().game_graph().header().guid() [error]Function : CALifeSpawnRegistry::load [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\alife_spawn_registry.cpp [error]Line : 167 [error]Description : Spawn doesn't correspond to the graph : REBUILD SPAWN! FATAL ERROR [error]Expression : cross_table().header().game_guid() == game_graph().header().guid() [error]Function : CAI_Space::load [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\ai_space.cpp [error]Line : 121 [error]Description : graph doesn't correspond to the cross table FATAL ERROR [error]Expression : ai().game_graph().header().levels().end() != I [error]Function : CALifeGraphRegistry::setup_current_level [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_graph_registry.cpp [error]Line : 91 [error]Description : Graph point level ID not found! stack trace: FATAL ERROR [error]Expression : rpoints[0].size() [error]Function : game_sv_Deathmatch::Create [error]File : D:\prog_repository\sources\trunk\xrGame\game_sv_deathmatch.cpp [error]Line : 99 [error]Description : rpoints for players not found ================================================================================ Вопрос: Как запустить карту консольно, то есть через батник? Ответ: Для SP-карт это делается следующим образом: @start bin\XR_3DA.exe -start server(%1/single/alife/new) client(localhost) где %1 название общего gamedata\spawns\*.spawn (например, в финалке нужно подставить - all). Для MP-карт: @start bin\XR_3DA.exe -ltx user_net.ltx -start server(%1/deathmatch) client(localhost/name=%2) где %2 - ваш никнэйм в игре. Некоторые другие параметры командной строки можно найти тут. В скобках можно указывать и другие режимы игры: teamdeathmatch и artefacthunt. ================================================================================ Вопрос: Как создать LOD'ы или "Поставил дерево, камень из библиотеки объектов GSC.. не компилит": Ответ: читаем ================================================================================ Вопрос: Где в SDK запрятан редактор ANM-фаилов? Ответ: 1). Создаем новый объект. 2). Задаем ему тип dynamic. 3). Добавляем на карту и отмечаем флаг motionable. 4). Заходим в его свойства и видим редактор anm. ================================================================================ Вопрос: Как именно надо делать модель в 3ds Max, чтоб в сталкере она работала? Ответ: Вот что для этого надо: - 3Ds Max 7,8. (+ SP3 Recommended) - Сутки свободного времени (как минимум) - Крепкие нервы. Условия: - ВСЕ Элементы модели должны быть затекстурены, иначе при экспорте будет ошибка: "Bad Submaterial. Export Failed" - НИКАКИХ групп сглаживания. Иначе в СДК будет ошибка: "Invalid Smooth group! MAX Type" И крэш компилятора. - НИКАКИХ оперпаций типа "Boolean", "ProBoolean", "Connect" и т. п... Чревато ошибкой "Invalid Faces". - НИКАКИХ "потяжек" текстур. Это ещё одна разновидность "Invalid Faces" - Экспортятся только меши, поли, и примитивы. Никаких групп и ассемблов! - X-Ray Materials в максе использовать КРАЙНЕ нежелательно. Плагин глючный, и часто "роняет" макс. Материал "Standart" вполне подойдёт. А шейдеры и прочий хлам - настраивать в Actor Editor. - Чем меньше полигонов в модели - тем лучше. ================================================================================ Вопрос: Какой 3d-редактор является "родным" для Сталкера? Ответ: Однозначно - Maya. ================================================================================ Вопрос: На статике нет детальной текстуры, а в SDK есть! Что делать? Ответ: Чтобы были видны детальные текстуры на драфте, нужно компилировать с параметром Jitter samples 4-medium. ================================================================================ Вопрос: А как прописать детальную текстуру? Ответ: Images-->Check New Textures-->OK. Выбираем нужную текстуру и настраиваем: Type - terrain Details - Use As Diffuse Texture - Выбираем нужную из папки detail Scale - Масштабирование текстуры, например мп атп = 24.5, затон 110 ОK. ================================================================================ Вопрос: После компиляции на максимальных поверхности становятся "гранеными". Что делать? Ответ: Используйте ключ -nosmg. ================================================================================ Вопрос: Гружу анимки stalker_animation.skls в модель нпс. Нажимаю сохранить в оmf, в логе куча ошибок: .......... Invalid Bone Part of motion: 'norm_torso_7_run_1'. Invalid Bone Part of motion: 'norm_torso_6_run_0'. Invalid Bone Part of motion: 'norm_torso_7_run_0'. Invalid Bone Part of motion: 'dmg_norm_run_ls_0'. Invalid Bone Part of motion: 'dmg_norm_run_rs_0'. Export failed. Собственно лекарство: В АЕ грузим модель, потом тыкаем Bone Parts. В появившемся окошке жмем Reset To Default и раскидываем кости по группам как на скрине, Invalid scene! либо скачиваем этот файл и грузим его через Load From. Все! Теперь можно добавлять/удалять анимации в библиотеки .omf без проблем.
  2. xrLC x64 CoP

    Обсуждение: http://modders-wiki.ru/X-Ray_Level_Compilers_x64_CoP
  3. xrLC x64 SoC

    Обсуждение: http://modders-wiki.ru/X-Ray_Level_Compilers_x64_SoC
  4. Приветствую пользователей форума AMK! В этой теме, хочу предложить вам вместе обсудить известные и неизвестные "вылеты" игр S.T.A.L.K.E.R., то по какой причине они происходят, и как их правильно решить. Как оказалось, по одной строчке Line, могут быть противоположно разные причины происхождения вылета (разные Description или/и Arguments), а не только случаи когда причина одна, и отличаются лишь проблемные файлы. По моему мнению, вопрос далек от закрытия, поэтому стоит подробнее его разобрать. Результаты впоследствии можно внести в имеющийся раздел "Справочник вылетов", впрочем никто не запрещает переосмысливать уже представленные там объяснения и решения. Они, как оказалось, тоже порой могут быть далеки от идеала. Просьба перед публикацией кода ошибки проверять, нет ли по его строке Line решения в "Справочнике вылетов". Если оно есть но не помогло вам или у вас отличается описание вылета - тогда можете представить его для обсуждения в этой теме. Возможно, его действительно стоит разобрать подробнее и точнее. В любом случае заранее спасибо всем, кто примет участие в обсуждении. Альтернативная тема Тема для обсуждения "вылетов" только оригинальных (не модифицированных) версий движка. По разбору "ошибок" (не вылетов) X-Ray SDK, обращаться в соответствующую тему: http://www.amk-team.ru/forum/topic/13442-masterskaya-po-razboru-oshibok-ne-vyletov-x-ray-sdk/ ВНИМАНИЕ! Список вылетов требующих подробного разбора: [error]Expression : child [error]Function : xrServer::Perform_destroy [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_sls_clear.cpp [error]Line : 22 [error]Description : child registered but not found [10248] [error]Expression : chunk [error]Function : CRender::level_Load [error]File : D:\prog_repository\sources\trunk\Layers\xrRenderPC_R1\FStaticRender_Loader.cpp [error]Line : 31 [error]Description : Level doesn't builded correctly. [error]Expression : chunk [error]Function : CRender::level_Load [error]File : D:\prog_repository\sources\trunk\Layers\xrRenderPC_R2\r2_loader.cpp [error]Line : 33 [error]Description : Level doesn't builded correctly. Expression : m_scale_bounds.x>0 && m_scale_bounds.y>0 Function : CMapSpot::Load File : E:\priquel\sources\engine\xrGame\map_spot.cpp Line : 32 Description : alife_presentation_military_spot Expression : assertion failed Function : CActor::OnEvent File : E:\priquel\sources\engine\xrGame\Actor_Events.cpp Line : 40 Description : O Expression : xr_strlen(p.m_game_or_spawn) && !xr_strcmp(p.m_alife,"alife") && !xr_strcmp(p.m_game_type,"single") Function : CALifeSimulator::CALifeSimulator File : E:\stalker\sources\trunk\xr_3da\xrGame\alife_simulator.cpp Line : 52 Description : Invalid server options! [error]Expression : assertion failed [error]Function : CSE_ALifeDynamicObject::switch_online [error]File : E:\priquel\sources\engine\xrGame\alife_dynamic_object.cpp [error]Line : 53 [error]Description : !m_bOnline Expression : assertion failed Function : CSE_ALifeDynamicObject::switch_offline File : D:\prog_repository\sources\trunk\xrGame\alife_dynamic_object.cpp Line : 60 Description : m_bOnline expression : l_tID_Block.m_tpIDs + l_tID_Block.m_tCount != l_tpBlockID Function : CID_Generator<unsigned int,unsigned char,unsigned short,unsigned char,unsigned short,0,65534,256,65535,0>::tfGetFromBlock File : e:\priquel\sources\engine\xrgame\id_generator.h Line : 68 Description : Requesting ID has already been used! ЦИТАТА: Расставлял в СДК динамический свет на локации, после сборки спавна и подстановки в игру, получаю стабильный вылет при загрузке локации Удалил все источники света, кроме одного, вылет всеравно остался. Убрал вообще свет, вылета как ни бывало Лог говорит о том, что дублируются id-шники каких-то объектов. [error]Expression : assertion failed [error]Function : I:\xray-svn-trunk\editors\ECore\Editor\EThumbnail.h [error]File : I:\xray-svn-trunk\editors\ECore\Editor\EThumbnail.h [error]Line : 74 [error]Description : Valid() Expression : m_object Function : CServerEntityWrapper::load File : E:\priquel\sources\engine\xrGame\server_entity_wrapper.cpp Line : 75 Description : Can't create entity. Arguments : sim_faction [error]Expression : assertion failed [error]Function : CUIFrameLine::UpdateSize [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\ui\UIFrameLine.cpp [error]Line : 89 [error]Description : back_width > 0 ЦИТАТА: при открытии раздела контакты происходит вылет [error]Expression : assertion failed [error]Function : CBuild::Load [error]File : .\Build_Load.cpp [error]Line : 98 [error]Description : B.dwMaterialGame<65536 Expression : ini_file.section_exist(section) Function : CTradeParameters::process File : e:\stalker\patch_1_0004\xr_3da\xrgame\trade_parameters_inline.h Line : 111 Description : cannot find section h? [error]Expression : assertion failed [error]Function : CUIMMShniaga::CreateList [error]File : D:\prog_repository\sources\trunk\xrGame\ui\UIMMShniaga.cpp [error]Line : 114 [error]Description : pF ЦИТАТА: удалил файл system.ltx мода Simbion для ЗП [error]Expression : !compressed [error]Function : CStreamReader::open_chunk [error]File : D:\prog_repository\sources\trunk\xrCore\stream_reader.cpp [error]Line : 117 [error]Description : cannot use CStreamReader on compressed chunks Expression : assertion failed Function : CDetailManager::Load File : E:\stalker\patch_1_0004\xr_3da\xrRender\DetailManager.cpp Line : 118 Description : dtH.version == DETAIL_VERSION Expression : r_bytes==(int)size Function : FileDownload File : E:\stalker\patch_1_0004\xrCore\FS.cpp Line : 119 Description : Can't read file data: Arguments : d:\games\s.t.a.l.k.e.r. - shadow of chernobyl\gamedata\config\buf.txt ЦИТАТА: вылет на Кордоне [error]Expression : assertion failed [error]Function : CUIActorMenu::SendEvent_Item_Drop [error]File : D:\prog_repository\sources\trunk\xrGame\ui\UIActorMenuInventory.cpp [error]Line : 129 [error]Description : pItem->parent_id()==recipient ЦИТАТА: Частенько такой вылет, если при шмоне нажать G Expression : fatal error Function : mem_usage_impl File : E:\stalker\sources\trunk\xrCore\memory_usage.cpp Line : 156 Description : Arguments : bad node in heap Expression : fatal error Function : mem_usage_impl File : E:\stalker\patch_1_0004\xrCore\memory_usage.cpp Line : 156 Description : <no expression> Arguments : bad node in heap Expression : Ran out of memory Function : Fvisual::Load File : E:\stalker\patch_1_0004\xr_3da\xrRender\FVisual.cpp Line : 159 Description : HW.pDevice->CreateIndexBuffer(iCount*2,dwUsage,D3DFMT_INDEX16,D3DPOOL_MANAGED,&p_rm_Indices,0) [error]Expression : assertion failed [error]Function : CUIWindow::AttachChild [error]File : D:\prog_repository\sources\trunk\xrGame\ui\UIWindow.cpp [error]Line : 205 [error]Description : pChild [error]Expression : fs [error]Function : CRender::LoadBuffers [error]File : D:\prog_repository\sources\trunk\Layers\xrRenderPC_R2\r2_loader.cpp [error]Line : 212 [error]Description : Could not load geometry. File 'level.geom?' corrupted. ЦИТАТА: сменил статическое освещение на динам и теперь вылетает [error]Expression : assertion failed [error]Function : IReaderBase<class IReader>::r_chunk_safe [error]File : e:\stalker\patch_1_0004\xrcore\FS.h [error]Line : 221 [error]Description : dwSize==dest_size ЦИТАТА: Первый заход в Припять и 100% вылет Пробовал и на динамие, и на статике, и после сна. Expression : assertion failed Function : CSE_Abstract::Spawn_Read File : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_Object_Base.cpp Line : 236 Description : M_SPAWN==dummy16 Expression : file Function : CResourceManager::_CreatePS File : D:\prog_repository\sources\trunk\Layers\xrRender\ResourceManager_Resources.cpp Line : 240 Description : c:\stalker\stalker call of pripyat\gamedata\shaders\r2\deffer_impl_lmh_flat_d.ps Expression : assertion failed Function : CPHSkeleton::RestoreNetState File : E:\stalker\patch_1_0004\xr_3da\xrGame\PHSkeleton.cpp Line : 254 Description : bone<obj->PHGetSyncItemsNumber() Expression : R Function : CResourceManager::_CreatePS File : E:\stalker\patch_1_0004\xr_3da\ResourceManager_Resources.cpp Line : 273 Description : e:\s.t.a.l.k.e.r\gamedata\shaders\r2\deffer_impl_lmh_flat.ps Expression : R Function : CResourceManager::_CreatePS File : E:\stalker\sources\trunk\xr_3da\ResourceManager_Resources.cpp Line : 273 Description : d:\games\s.t.a.l.k.e.r. shadow of chernobyl\gamedata\shaders\r2\deffer_impl_lmh_flat.ps Expression : assertion failed Function : CLocatorAPI::ProcessArchive File : E:\stalker\patch_1_0004\xrCore\LocatorAPI.cpp Line : 318 Description : A.hSrcFile!=INVALID_HANDLE_VALUE Expression : assertion failed Function : CLocatorAPI::archive::open File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp Line : 406 Description : hSrcFile!=INVALID_HANDLE_VALUE Expression : assertion failed Function : CLocatorAPI::archive::open File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp Line : 408 Description : hSrcMap!=INVALID_HANDLE_VALUE Expression : assertion failed Function : CLocatorAPI::ProcessArchive File : E:\stalker\patch_1_0004\xrCore\LocatorAPI.cpp Line : 322 Description : A.size>0 Expression : assertion failed Function : CUILine::GetLength_inclusiveWord_1 File : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UILine.cpp Line : 410 Description : pos.word_1.exist() Expression : hSrcFile!=INVALID_HANDLE_VALUE Function : CVirtualFileReader::CVirtualFileReader File : E:\stalker\sources\trunk\xrCore\FS.cpp Line : 454 Description : d:\games\s.t.a.l.k.e.r. - Вариант Омега\gamedata\sounds\music\menu_l.ogg Arguments : The system cannot find the path specified. [error]Expression : hSrcFile!=INVALID_HANDLE_VALUE [error]Function : CVirtualFileReader::CVirtualFileReader [error]File : E:\priquel\sources\engine\xrCore\FS.cpp [error]Line : 530 [error]Description : c:\program files\gsc world publishing\stalker\gamedata\configs\misc\trade\trade_trader_agr_stalker.ltx [error]Arguments : The system cannot find the path specified. ЦИТАТА: Устоноил все предметы у торговцев. Игра жесть тормозить стала. Во время игры удалил этот файл и вот первый вылет на версии 1.5.04 Expression : data Function : CVirtualFileReader::CVirtualFileReader File : E:\stalker\patch_1_0004\xrCore\FS.cpp Line : 462 Description : d:\Игры\s.t.a.l.k.e.r\gamedata\textures\ui\ui_npc_unique.dds Arguments : n/a ЦИТАТА: при начале разговора с петренко вылетает Возможное решение: Не прописаны координаты иконки морды лица для Петренко. Посмотри в файле gamedata\config\ui\ui_npc_unique.xml Expression : hSrcFile!=INVALID_HANDLE_VALUE Function : CVirtualFileReader::CVirtualFileReader File : E:\priquel\sources\engine\xrCore\FS.cpp Line : 533 Description : d:\games\stalker - clear sky\gamedata\meshes\dynamics\weapons\wpn_beretta92fs\wpn_beretta92fs_hud.ogf Arguments : n/a Expression : hSrcFile!=INVALID_HANDLE_VALUE Function : CVirtualFileReader::CVirtualFileReader File : D:\prog_repository\sources\trunk\xrCore\FS.cpp Line : 537 Description : c:\program files (x86)\bitcomposer games\s.t.a.l.k.e.r. - call of pripyat\gamedata\scripts\swm_attachments - ?????.script Arguments : n/a Expression : slot<=LastSlot() Function : CInventory::Activate File : D:\prog_repository\sources\trunk\xrGame\Inventory.cpp Line : 534 Description : wrong slot number Expression : assertion failed Function : CUICellContainer::GetItemPos File : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UIDragDropListEx.cpp Line : 583 Description : 0 ЦИТАТА: при попытке установить в слот обрез двустволки Возможное решение: Похоже не помещается в слот оружие [error]Expression : assertion failed [error]Function : CUICellContainer::GetItemPos [error]File : E:\priquel\sources\engine\xrGame\ui\UIDragDropListEx.cpp [error]Line : 702 [error]Description : 0 ЦИТАТА: при обыске трупа стабильный вылет [error]Expression : assertion failed [error]Function : CUICellContainer::GetItemPos [error]File : D:\prog_repository\sources\trunk\xrGame\ui\UIDragDropListEx.cpp [error]Line : 769 [error]Description : 0 ЦИТАТА: при попытке заменить первоначальный костюм,даже просто снять его вылет Expression : assertion failed Function : CALifeSimulator__release File : deep deep in space Line : 666 Description : Object to release is a zero pointer ЦИТАТА: во время начала боя на арене,версия 1.0006. Поставил пак оружия на ЧН руках или Удалил болт, заспавнил детектор bolt_d1 и вылет Сам скрипт которым спавнил\удалял function test() local item_in_slot = db.actor:item_in_slot(10) if not item_in_slot then return end if item_in_slot:section() == "detector_simple" or item_in_slot:section() == "detector_advances" or item_in_slot:section() == "detector_elite" then amk.remove_item(bolt) amk.spawn_item_in_inv("bolt_d1") end end Возможное решение: у болта нет серверной части, это чисто клиентский объект, его нельзя удалить без вот таких последствий. Expression : assertion failed Function : CLocatorAPI::_initialize File : E:\stalker\patch_1_0004\xrCore\LocatorAPI.cpp Line : 655 Description : path_exist("$app_data_root$") Expression : assertion failed Function : CLocatorAPI::_initialize File : E:\priquel\sources\engine\xrCore\LocatorAPI.cpp Line : 685 Description : path_exist("$app_data_root$") Expression : assertion failed Function : CLocatorAPI::_initialize File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp Line : 807 Description : path_exist("$app_data_root$") ЦИТАТА: редактирую текстуру в photoshop'е захожу в игру Expression : error handler is invoked! Function : handler_base File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp Line : 764 Description : floating point error Expression : error handler is invoked! Function : handler_base File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp Line : 764 Description : pure virtual function call ЦИТАТА: При удалении трупа, если в данный момент гг его обыскивает (открыт инвентарь) [error]Expression : assertion failed [error]Function : i:\xray-svn\xrcore\FixedVector.h [error]File : i:\xray-svn\xrcore\FixedVector.h [error]Line : 38 [error]Description : id<count ЦИТАТА: При попытке загрузить модель в Actor Editor SDK 0.6 [error]Expression : assertion failed [error]Function : i:\xray-svn\xrcore\_stl_extensions.h [error]File : i:\xray-svn\xrcore\_stl_extensions.h [error]Line : 43 [error]Description : _Pos<size() Expression : assertion failed Function : I:\xray-svn\editors\ECore\Editor\ui_main.cpp File : I:\xray-svn\editors\ECore\Editor\ui_main.cpp Line : 49 Description : m_ProgressItems.size()==0 http://ap-pro.ru/forum/106-602-598935-16-1393752422 http://www.amk-team.ru/forum/topic/1560-soc-voprosy-po-sdk/?do=findComment&comment=800153 http://www.amk-team.ru/forum/topic/5533-soobschestvo-mapperov/?do=findComment&comment=600493 [error]Expression : assertion failed [error]Function : CDB::MODEL::build [error]File : D:\prog_repository\sources\trunk\xrCDB\xrCDB.cpp [error]Line : 86 [error]Description : (Vcnt>=4)&&(Tcnt>=2) ЦИТАТА: при компиляции локации в SDK 0.7 Возможное решение: Судя по всему проблема с геометрией у одного из объектов. [error]Expression : assertion failed [error]Function : I:\xray-svn-trunk\editors\ParticleEditor\ParticleEffectActionsImpl.cpp [error]File : I:\xray-svn-trunk\editors\ParticleEditor\ParticleEffectActionsImpl.cpp [error]Line : 97 [error]Description : vers==PARTICLE_ACTION_VERSION [error]Expression : assertion failed [error]Function : X:\stalker_addon\sources\trunk\editors\ECore\Editor\EditMeshRender.cpp [error]File : X:\stalker_addon\sources\trunk\editors\ECore\Editor\EditMeshRender.cpp [error]Line : 101 [error]Description : f_index<m_FaceCount ЦИТАТА: При попытке настроить объект созданный в 3ds Max, в SDK 0.7 [error]Expression : norm_id<m_FaceCount*3 [error]Function : X:\stalker_addon\sources\trunk\editors\ECore\Editor\EditMeshRender.cpp [error]File : X:\stalker_addon\sources\trunk\editors\ECore\Editor\EditMeshRender.cpp [error]Line : 106 [error]Description : Normal index out of range. ЦИТАТА: При попытке настроить объект созданный в 3ds Max, в SDK 0.7 [error]Expression : fv.pindex<(int)m_VertCount [error]Function : X:\stalker_addon\sources\trunk\editors\ECore\Editor\EditMeshRender.cpp [error]File : X:\stalker_addon\sources\trunk\editors\ECore\Editor\EditMeshRender.cpp [error]Line : 107 [error]Description : Point index out of range. ЦИТАТА: При попытке настроить объект созданный в 3ds Max, в SDK 0.7 [error]Expression : fv.pindex<int(m_VertCount) [error]Function : X:\stalker_addon\sources\trunk\editors\ECore\Editor\EditMeshRender.cpp [error]File : X:\stalker_addon\sources\trunk\editors\ECore\Editor\EditMeshRender.cpp [error]Line : 113 [error]Description : - Face index out of range. ЦИТАТА: При попытке настроить объект созданный в 3ds Max, в SDK 0.7 skiping ui\ui_cm_connection_error.thm(already exists) Expression : assertion failed Function : X:\stalker_addon\sources\trunk\editors\xrEProps\ItemList.h File : X:\stalker_addon\sources\trunk\editors\xrEProps\ItemList.h Line : 134 Description : !tvItems->MultiSelect [error]Expression : assertion failed [error]Function : i:\xray-svn\xrcore\_vector3d.h [error]File : i:\xray-svn\xrcore\_vector3d.h [error]Line : 189 [error]Description : square_magnitude() > std::numeric_limits<T>::min() ЦИТАТА: after camming to certain positions in the SDK Can't load: 'c:\program files (x86)\x-ray cop sdk\editors\import\wpn_hand_exo.ogf' invalid bones count FATAL ERROR [error]Expression : assertion failed [error]Function : X:\stalker_addon\sources\trunk\Layers\xrRender\../../xrEngine/SkeletonMotions.h [error]File : X:\stalker_addon\sources\trunk\Layers\xrRender\../../xrEngine/SkeletonMotions.h [error]Line : 235 [error]Description : p_ [error]Expression : assertion failed [error]Function : I:\xray-svn\editors\ECore\Editor\Device.cpp [error]File : I:\xray-svn\editors\ECore\Editor\Device.cpp [error]Line : 306 [error]Description : FALSE==g_bRendering ЦИТАТА: При добавлении/удалении предметов на уровень в Level Editor SDK 0.4 [error]Expression : fatal error [error]Function : X:\stalker_addon\sources\engine\editors\LevelEdito r\Edit\UI_LevelTools.cpp [error]File : X:\stalker_addon\sources\engine\editors\LevelEdito r\Edit\UI_LevelTools.cpp [error]Line : 327 [error]Description : <no expression> [error]Arguments : THROW [error]Expression : fatal error [error]Function : X:\stalker_addon\sources\trunk\editors\LevelEditor\Edit\UI_LevelTools.cpp [error]File : X:\stalker_addon\sources\trunk\editors\LevelEditor\Edit\UI_LevelTools.cpp [error]Line : 332 [error]Description : <no expression> [error]Arguments : THROW [error]Expression : Device lost [error]Function : X:\stalker_addon\sources\trunk\editors\ECore\Editor\device.cpp [error]File : X:\stalker_addon\sources\trunk\editors\ECore\Editor\device.cpp [error]Line : 343 [error]Description : HW.pDevice->Present( NULL, NULL, NULL, NULL ) ЦИТАТА: Make AI Map в SDK 0.7 Expression : sz<(tgt_sz-1) Function : I:\xray-svn\xrCore\FS.cpp File : I:\xray-svn\xrCore\FS.cpp Line : 349 Description : Dest string less than needed. [error]Expression : fatal error [error]Function : X:\stalker_addon\sources\trunk\xrCore\Xr_ini.cpp [error]File : X:\stalker_addon\sources\trunk\xrCore\Xr_ini.cpp [error]Line : 455 [error]Description : <no expression> [error]Arguments : Can't open section '_group'. Please attach [*.ini_log] file to your bug report [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ...p sdk\editors\gamedata\scripts\se_smart_cover.script:50: attempt to index field '?' (a nil value) Expression : error handler is invoked! Function : invalid_parameter_handler File : .\xrDebugNew.cpp Line : 791 Description : ЦИТАТА: при експорте здания в Level Editor может ли это быть из за того что у меня некоторые объекты пересекаются и он не может экспортировать? Потому что например если экспортировать ту часть, где я еще не халтурил, то все норм экспортируются? Похож на: http://modders-wiki.ru/xr:Line_804 * New phase started: Freeing resources being allocated level 1 pihan_test FATAL ERROR Expression : assertion failed Function : CLevelGraph::vertex_position File : x:\clearsky\src\engine\utils\xrai\level_graph_inline.h Line : 99 Description : iFloor((source_position.z - header().box().min.z)/header().cell_size() + .5f) < (int)m_row_length * New phase started: Freeing resources being allocated FATAL ERROR Expression : !m_level_spawns.empty() Function : CGameSpawnConstructor::load_spawns File : .\game_spawn_constructor.cpp Line : 109 Description : There are no valid levels (with AI-map and graph) in the section 'levels' in the 'game.ltx' to build spawn file from! ЦИТАТА: при сборке спавна Expression : !m_level_spawns.empty() Function : CGameSpawnConstructor::load_spawns File : .\game_spawn_constructor.cpp Line : 139 Description : There are no valid levels (with AI-map and graph) in the section 'levels' in the 'game.ltx' to build spawn file from! http://www.amk-team.ru/forum/topic/5533-soobschestvo-mapperov/?do=findComment&comment=1068112 Expression : m_level_changers.empty() Function : CGameSpawnConstructor::verify_level_changers File : .\game_spawn_constructor.cpp Line : 166 Description : Some of the level changers setup incorrectly ЦИТАТА: xrAI ТЧ List of the level changers which are invalid for some reasons exit_to_garbage_01 FATAL ERROR Expression : m_level_changers.empty() Function : CGameSpawnConstructor::verify_level_changers File : .\game_spawn_constructor.cpp Line : 196 Description : Some of the level changers setup incorrectly ЦИТАТА: Взял Кордон и ничего в нём не меняя (после декомпиляции) попробовал собрать all.spawn, но упёрся в одну ошибку 472 graph points loaded Building cross table Saving cross table Loading cross table Building graph Generating edges 1834 edges built Checking graph connectivity Optimizing graph edges before optimization : 1834 FATAL ERROR Expression : assertion failed Function : CGameGraphBuilder::process_tripple File : .\game_graph_builder.cpp Line : 597 Description : _min(edge->weight(),graph().edge(edge->vertex_id(),tripple.second.second) ? graph().edge(edge->vertex_id(),tripple.second.second)->weight() : (*I).weight()) <= tripple.first ЦИТАТА: При компиляции level.graph http://www.amk-team.ru/forum/topic/1560-soc-voprosy-po-sdk/?p=915137 * New phase started: LIGHT: Implicit... * New phase started: LIGHT: LMaps... FATAL ERROR expression : assertion failed Function : lc_net::get_next File : D:\prog_repository\sources\trunk\utils\xrLC_Light\net_lightmaps_add_task.cpp Line : 48 Description : from < size ЦИТАТА: при сетовой компиляции Expression : assertion failed Function : OGF::Optimize File : I:\xray-svn\xrLC\OGF_Face.cpp Line : 153 Description : x_faces.size() == faces.size()
  5. Приветствую пользователей форума AMK! В этой теме, хочу предложить вам вместе обсудить известные и неизвестные ошибки инструментария разработчика X-Ray SDK и всех его компонентов, причем заметьте - именно ошибок, а не вылетов. К ним относятся записи в логе, которые пишутся красным, а также окошки возникающие в процессе работы, без стандартного описания, как у "вылетов", и которые можно пропустить. Необходимо разобрать и понять, по какой причине они происходят, и как их правильно решить. По моему мнению, вопрос ошибок SDK рассмотрен недостаточно, и их следует изучить и описать подробнее. Тема для обсуждения ошибок только оригинальных (не модифицированных) версий X-Ray SDK Soc/CS/CoP. По разбору "вылетов" SDK, обращаться в соответствующую тему: http://www.amk-team.ru/forum/topic/13415-masterskaia-po-razboru-vyletov-x-ray/ ВНИМАНИЕ! Список ошибок требующих подробного разбора: Object 'level\lw_1_1', surface 'terrain_lw1_1' contain static engine shader - 'levels\lw1_1_er'. Export interrupted. Game MTL = objects\glass Возможное решение: для статики материалы должны браться из папки "материалс" ERROR: group 'group_0000; - has empty reference. Corrupted file? Invalid smooth group found (Maya type). Object: 'mp_corpus.object'. Vertex: [0.03, -0.00, -0.06] Моделировал домик (вернее две его комнаты) и столкнулся с проблемой групп сглаживания. На официальном портале sdk.stalker-game.com (кстати там тоже не хотят учить Мауа) написано, что каждый полигон должен принадлежать к какой-нибудь группе сглаживания. при импортировании в LevelEditor Update object thumbnail. Stale data. добавлял обьекты в scene->objects->object library Surface: 'mtl_gate_j01a_S' contains bad game material. при build Возможное решение: Открыть ActorEditor . В нём File > Load > загрузить свой объект. После чего, в свитке Object Items выбирать Surfaces > 01-mtl_gate_j01a_S. Далее, в свитке Item Properties (он в низу находится) кликнуть два раза в поле Game Material. Открыть новое окно и в нем выбирать нужный матрериал для своего объекта. PS: По умолчанию - Default Duplicate object name already exists: 'lights_camp_fire_omni_r1_r2_0001' выдели все объекты и нажми ренейм алл ERROR: Invalid breakable object: 'physics\large_trash\koleso_01' Декомпилировал локацию, открыл в SDK 0.4, в log'е написало, что не хватает некоторых объектов. Я их добавил в level_editor\gamedata Снова открыл локу, в log'е пишет ошибки. Мало того, они есть на локации и вполне нормально смотрятся. Compile -> Build проходит. Я так понимаю эта ошибка ни на что не влияет. Есть мнение, что в игре эти объекты не будут разрушаться. Что-то в модели не то с частями/группами. Bone 'bip01_tail' has non-dynamic game material. Если перекинуть модель с билда - то при создание огф в сдк По логике, заменить материал (Game mtl) на динамический, default_object, например. как у кости менять материалы? Возможное решение: Там же в акторедиторе у модели должна быть вкладка bones. Выбираешь кости, можно с шифтом сразу все, и меняешь Game Material. стояло дефаулт - поставил дефаул_обжект - прокатило. Object 'stalker_content\deco_interior\int_stuffed_animal_himera', surface 'prop_trofy_board_S' contain invalid game material. На этапе прекомпиляции Make Game Возможное решение: точно такая же ошибка была, я посмотрел эти файлы через Actor Editor и оказалось, что у них не настроен материал, ну понятное дело я присвоил материал и всё заработало. Так что попробуй присвоить материал. Making details... Making details... (merge textures) Making details... (export geometry) Making details... (export slots) ERROR: Detail Objects export failed. Возможное решение: вместо операции DO Commands -> First Initialize, сделал DO Commands -> Reinitialize All. Все сбилдилось. Failed to build object: 'buildings\building_small\small_18' при build Can't export object as breakable. Object have N-Link face(s). Возможное решение: Привязка должна быть жесткая, т.е. каждый вертекс только к одной кости
  6. AI-Map в X-Ray: теория, практика, ошибки Статья по возможности расскажет о том, что такое Аи-Карта, как ее правильно сгенерировать, как скорректировать до рабочего состояния. Больше рассчитана на людей, которые более-менее знакомы с СДК, но все равно старался писать максимально подробно. Использованы материалы с ModDB 1. Теория 1.1 Что такое AI-Map? АИ-Карта - площадь на уровне, заполненная аи-узлами (нодами), контролирующие или ограничивающие перемещение НПС/Мутантов (Далее - боты) по уровню. В сталкере существует два типа сущности: либо что-то онлайн, либо оффлайн. Онлайн обычно ограничивается видимостью вокруг ГГ (В оригинале 150 метров). В онлайне боты перемещаются по аи-карте, в оффлайне же они перемещаются по точкам - графпоинтам. Когда моб попадает в видимость ГГ, он переходит из оффлайна в онлайн - это те самые моменты, когда игра зависает иногда на несколько секунд и движок переключает объекты из оффлайн в онлайн. Аи-карта должна быть цельной, не имеющая разрывы между нодами. Рис. 1 - Аи-карта в СДК (Редактор уровней для игры) На картинке видно, как аи-сетка огибает статические объекты. Это не ошибка редактора, так и должно быть. Дело в том, что мобы в игре не видят статические объекты, они видят только аи-карту и перемещаются строго по ней. По этому, если аи-сетка будет проходить сквозь статический объект (Дерево, автомобиль, дом и т.п) то моб спокойно пройдет сквозь него. Рис. 2 - Соединение нодов между собой На изображении видно соединение нодов между собой и направление каждого из них. В зависимости от количества сторон, куда может вывести нод, ноду причисляется свой цвет: 1) Полностью серый нод - все 4 направления; 2) Нод с 1 оранжевым ребром - 3 направления; 3) Нод с 2 синими ребрами - 2 направления; 4) Нод с 3 зелеными ребрами - 1 направление. В самом худшем случае нод имеет красный цвет, это означает, что нод не соединен с основной сеткой. Его нужно либо удалить, либо присоединить к основной карте. 1.1.2 Немного интересных фактов о АИ-Сетке (Спасибо Desertir): 1. При проекции на плоскость XZ представляет собой ноды 0.7х0.7 2. Ноды (или лв) нумеруются с юга на север, с запада на восток. 3. Нулевой вертекс самый западный, однако не всегда самый южный. 4. Вертекс имеет координаты X и Z кратные 0.7 (размеру ноды). 5. Если лв различаются только координатой У (на разной высоте), то нумерация чередуется (что нумеруется первым, верхний или нижний, пока не известно). 1.2 Какой максимальный размер АИ-Карты? Общий максимальный размер карты в среднем включает в себя 3.000.000 - 3.500.000 млн. плотно заполненных аи-нодов, что равняется уровню примерно равному 1.3 х 1.3 км (На данный момент GSC выложили исходные коды в свободный доступ, что увеличивает вероятность увеличения этого ограничения в ближайшем будущем). Так же следует учитывать и точки для оффлайна - графпоинты, чем больше аи-сетка, тем больше должна быть их плотность. Ограничения компиляторов xrAI (Возможно, на данный момент) не дают возможность сделать большой уровень, который можно наполнить жизнью, потому что если превысить среднее значение нодов в 3 млн и более 400 графпоинтов - компилятор будет валиться с ошибками. Конечно, никто не мешает сделать большой уровень сам по себе как таковой (Геометрия), тем более недавно выпущенные х64 компиляторы позволяют тянуть более тяжелую геометрию уровня, но наполнить его событиями не получится, либо нужно ограничивать размер АИ-Карты. 1.3 Что такое графпоинты и для чего они нужны? Если моб становится оффлайновым (Уходит из зоны видимости ГГ, заданным в alife.ltx), то движок переводит его в режим "оффлайн" и моб отправляется ходить по графпоинтам, от точки к точке перемещаясь, как бы живя своей жизнью. Графпоинты - особые точки, которые существуют только на АИ-Карте. Графпоинты видны в СДК, их можно редактировать расставляя как угодно или удаляя их, но в итоге после компиляции под формат игры, графпоинты не будут являться частью игрового уровня или all.spawn: компилятор xrAI переводит графпоинты в вершины игры/уровня (в глобальный граф). Все оффлайновые мобы могут перемещаться по этим точкам, не считаясь с переходами между уровнями (Как для ГГ), то есть для них графпоинты каждого уровня одна большая бесшовная карта, по которой они ходят, по этому и происходят в сталкере многие оффлайн-события, особенно в модах (Типа АМК) без участия игрока, например НПС с Кордона ушел в Бар, на Складах убили сталкеров, пока ГГ был в Припяти и т.д. Следует заметить, что расставляя граф-поинты в СДК, они должны находиться строго на АИ-карте, не должны проваливаться под сетку или висеть над ней, каждый граф должен стоять на ноде - иначе будут ошибки. Рис. 3 - Выделены все графпоинты на локации Кордон. 1.4 Какие файлы относят к АИ в игровых архивах (Или gamedata)? *gamedata/levels/level_name/level.ai - Сами ноды уровня, которые образуют единую карту, запечатаны в этот файл. *gamedata/levels/level_name/level.graph (Только ТЧ) - содержит в себе графпоинты с уровня. В папке с локацией в игре не нужен, нужен только для работы в СДК и xrAI. *gamedata/game.graph (Только ТЧ) - в этот файл запечатаны все т.н вершины (графпоинты) с локаций, подключенных к игре (Собирается из level.graph-ов). Глобальный граф. *gamedata/levels/level_name/level.gct (Только ТЧ) - является кросс-таблицей уровня. level.gct.raw - этот файл создает xrAI и является копией (промежуточной версией?) основного файла. В играх серии "Чистое Небо" и "Зов Припяти" дела обстоят немного иначе, все файлы относящиеся к АИ кроме карты уровня запечатываются в all.spawn. 2. Практика 2.1 Создание AI-Map Итак. Будем считать, что с общими понятиями этого аспекта игры мы разобрались. Настало время поработать по делу и создать свою АИ-Карту для, возможно, своего уровня. Поехали. Для того, чтобы создать сетку, Вы должны убедиться, что Ваш уровень готов к игре: на нем стоят все статические объекты, локацию окружает фейк-стена. Если все готово, то идем далее: Шаг 1. Подготовка уровня. Обязательно нужно "окутать" локацию фейк-стеной (Должна быть замкнута между собой, не иметь дыр), она не даст пройти аи-сетке за нее, что ограничит нас от лишней работы - удаление вручную АИ-Нодов, которые залезли за пределы игрового уровня. Специально создавать ее не обязательно, если Вы делали уровень (Может, был готовый) как полагается, то вокруг забора уже должна быть фейк-стена, которая не даст ГГ перепрыгнуть через забор. Просто копируем ее и опускаем ниже, чтобы она вошла где-то на половину в землю. После генерации АИ-Карты скопированный фейк-объект можно удалить! Рис. 4 - Фейк-стена для АИ-сетки скопированная из стены для ГГ Шаг 2. Выделение объектов Итак, уровень готов, на нем есть все нужные объекты. Идем дальше. Теперь нам нужно добавить все статические объекты уровня в снап-лист, т.е объекты, которые АИ-Сетка будет огибать во время генерации (Прим.: если в статическоем объекте есть дыра, например это здание с дверным проемом, то Аи-Сетка туда заберется и сгенерируется). Вообще, самый простой вариант - это сделать Ctrl+A выделив тем самым все объекты на локации, но мы пойдем немного иным и разумным путем. Дело в том, что кусты на уровне при таком выделении тоже соответственно будут выделены, что не очень хорошо, ведь ГГ может ходить сквозь кусты, так почему мобы не могут? Плюс порой это может вызвать эффект неожиданности, если на тебя из кучи кустов вдруг выпрыгнет кровосос! По этому делаем немного иначе, находясь в режиме работы с объектами (Кнопка Object) заходим в Object List и выделяем мышкой сами все объекты, кроме кустов. Т.к список объектов сортируется по алфавиту, то кусты порой могут оказаться в середине списка, например, и их нужно обойти и не выделить. Сделать это можно зажав Ctrl перед началом выделения и тогда можно выделять объекты выборочно, а нужные объекты конечно смотрим по названию. Рис. 5 - Выделены все объекты, кроме кустов через Object List. Шаг 3. Генерация АИ-Карты Уровень готов, нужные объекты выделены, пора сгенерировать саму аи-сетку. Переходим во вкладку AI Map, далее жмем Commands > And Select To List (Добавить выбранное в список), Рис. 6 - Добавление объектов в список все наши объекты добавляются в снап-лист. Далее жмем на кнопку добавления (Чайник вверху слева, либо горячая кнопка А(ф)) и добавляем на террейн как минимум 1 аи-нод, но лучше раскидать их несколько штук по уровню. Рис. 7 - Одиночные ноды расставленные перед генерацией. Для лучшего покрытия уровня нодами, жмем Ignore Constraints, далее жмем Generate Full - и ждем генерации Аи-Карты для уровня. Процесс может занять несколько минут, зависит от тяжести уровня (ПК, на сколько мне кажется, роли не играет, СДК живет своей жизнью) Рис. 8 - Сгенерированная карта на уровне Как видно на рисунке выше, аи-сетка расстелилась по уровню, прошла под кустами, но обошла дорожные знаки. Теперь в игре мобы будут пробегать сквозь кусты, как и ГГ, но оббегать вокруг препятствие в виде знаков. Рис. 9 - Карта внутри фейк-стены Как и говорилось ранее, аи-сетка не залезает за замкнутую фейк-стену. По желанию можно "разгладить" сетку нажав на кнопку Smooth Selected (Предварительно выделив все ноды с помощью Ctrl+A), но лично я все же не рекомендую это делать, иногда сглаживание проходит не очень выгодно и красиво. Лучше выделять одиночные ноды руками и сглаживать так, чем все сразу. Теперь можно так же удалить копию фейк-стены - она нам больше не нужна. 3. Корректировка сгенерированной Аи-Карты К сожалению, инструмент СДК для работы со сталкером не идеален, и имеет свои ошибки, аи-карта не исключение. Я настоятельно рекомендую, после генерации аи-карты, проверить ее на предмет ошибок. Распространенный тип ошибок и мелких косяков, а так же их исправление, рассмотрим ниже. 3.1. Корректировка 1. Не соединенные ноды Часто бывает, что ноды не соединяются между собой, даже если находятся близко друг к другу. Что на это влияет я так и не понял (Я понимаю, если место стыка находится в трудном месте, на высоте или еще где, а то бывает на ровном месте). Рис. 10 - Не линкованные между собой ноды Как видно из рисунка выше, на краю сетки есть ноды, которые ведут в 1 сторону. Т.е моб попадая на этот нод, не пойдет вдоль например, а развернется назад. Нам конечно это не нужно, по этому начинаем исправлять: 1. Выделяем все Аи-Ноды (Ctrl+A), 2. Затем жмем на среднюю кнопку (+) (К сожалению, ее названия я не знаю, называю ее просто "плюс") (Рис. 11) Рис.11 - Кнопка исправляющая данную ошибку. 3. Смотрим на результат. Рис. 12 - Результат с исправленными нодами Соответственно это исправит такие косяки не только в этом месте, но и в других подобных, возможно которые и не заметишь сразу. 3.2 Корректировка 2. Одиночные ноды Еще одна частая ошибка аи-карты, когда появляются одиночные ноды. Появляться они могут по разным причинам, например во время генерации случайно залезает выше по объекту, и даже коррекция описанная выше не помогает. Я же их расставил специально для примера. В обычном же картостроении, на хорошем большом уровне, их очень часто можно не заметить, опять прибегаем к помощи СДК. Рис. 13 - Одиночные ноды получившиеся после генерации карты Для того, чтобы выделить все одиночные ноды, жмем на Select 0-Link (Находятся справа от кнопки (+) ), данная кнопка выделит все нулевые ноды. Затем жмем Delete на клавиатуре - готово, одиночные ноды удалены. 3.3 Корректировка 3. Лишние ноды (Удаление) Еще один частый глюк СДК, когда аи-сетка произвольно залезает на объекты, которые не должна. Рис. 14 - Аи-сетка на пеньке Как видим с картинки выше, аи-сетка забралась на пенек. Не трудно догадаться, что в игре будет выглядеть не очень красиво, когда НПС или мутант будет бегать по пеньку. В таких случаях, к сожалению, автоматика СДК не поможет - такие места нужно искать самому и исправлять их: 1. Выделяем ноды (Кнопка-стрелочка вверху слева, или горячая кнопка S) Рис. 15 - Выделены лишние ноды 2. Жмем Delete на клавиатуре. 3. Смотрим результат Рис. 16 - Конечный результат, теперь мобы будут обходить пенек 3.4 Корректировка 4. Одиночное (ручное) добавление нодов Порой возникают случаи, когда нужно добавить ноды на уровень. Если аи-сетка создавалась правильно, такие случаи в основном исключены, но никто не от чего не застрахован. Возможно нужно добавить парочку нодов туда, куда СДК автоматически не смог их положить. Я для примера прокладываю "тропинку" к зданию. Чтобы это сделать, нужно опять же находясь в режиме редактирования Аи-Карты (Кнопка Ai Map) нажать на чайник или горячую клавишу А(ф), при условии что все статические объекты до сих пор находятся в снап-листе. Это ограничивает Вас от мороки навроде новой генерации сетки и т.д Рис. 17 - Результат ручного добавления (Новые ноды подсвечены) 3.5 Корректировка 5. Одиночная (ручная) линковка нодов между собой Иногда бывает ситуация, когда ноды не линкованны между собой. Это бывает во многих случаях, например если добавляете некоторые новые ноды вручную, и они не хотят соединяться с основной сеткой. Рис. 18 - Нелинкованные ноды (В моем случае после ручного добавления новых нодов они не соединяются с новой сеткой) Отчетливо видим ошибку. Чтобы мобы смогли зайти в будущем в здание, нужно соединить ноды находящиеся в дверном проеме. Чтобы исправить эту проблему, делаем следующее (Правка похожа на самую первую корректировку): 1. Выделяем ноды, которые нужно соединить между собой Рис. 19 - Выделены необходимые ноды (Подсвечены) 2. Затем жмем на кнопку (+) 3. Смотрим результат Рис. 20 - Результат корректировки 3.6 Корректировка 6. Генерация по определенным объектам Иногда бывают случаи, когда Аи-Карта не генерируется в некоторых местах. Например в зданиях. Благо, это тоже исправляется. Рис. 21 - Внутри здания нет Аи-Сетки Кстати, если все основные работы с основной сеткой были проведены, то для этой корректировки можно и нужно очистить снап-лист, далее мы добавим в него только нужные объекты для генерации. Жмем Commands > Clear List, подтверждаем удаление. Рис. 22 - Очистка снап-листа. Далее вручную выделяем нужные объекты, в моем случае это: дом, мебель. Выделять ВСЕ объекты уровня не нужно! Когда все выделяем, добавляем выделенные объекты с снап-лист, ставим внутрь дома как минимум 1 нод, но я рекомендую (При чем очень настоятельно) расставить по ноду в каждую комнату, чтобы сетка сгенерировалась в каждой комнате, ибо из-за дверных проемов она не всегда пролезает автоматически через него и генерируется в других помещениях. Рис. 23 - Выделены нужные объекты, обновлен снап-лист, добавлены ноды. , выделяем вручную каждый новый нод (Зажав L Ctrl) и жмем Generate Selected (Не Full!) Рис. 24 - Результат выборочной генерации только внутри здания (Основная сетка не была затронута) Теперь, вроде, все ок. Видим правда глюк - на тумбочку залез один нод. Нехорошо. Надо убрать. Как это сделать мы знаем, проходили в 3 корректировке аи-карты. А, хотя стоп, погодите...! Нашел еще один глюк. Как и говорил ранее, аи-сетка иногда может не проходить сквозь дверные проемы и т.п, это мы наблюдаем сейчас. Рис. 25 - Аи-Карта не соединилась из-за узкого прохода Исправить это легко, все из предыдущих корректировок - добавляем в дверной проем по 2 нода (Не забыв нажать Ignore Constraints, как всегда), и тут они либо сами между собой залинкуются, либо выделим их и ближайшие к ним ноды и нажмем на "плюс". Рис. 26 - Исправленная сетка в дверном проеме Вот и все - комнаты соединены между собой. Проделываем эту работу с каждой комнатой и наблюдаем результат. Аи-Карта расстелена по зданию и присоединена к основной сетке, чего не смог сделать СДК. Теперь мобы будут посещать домик. Рис. 27 - Конечный результат 3.7 Корректировка 7. Двигаем "летающие" ноды на место Еще один глюк, который возникает довольно часто - это летающие ноды. Благо это попадается очень редко, почти всегда в лице паре-тройке экземпляров, в основном в зданиях, на объектах, или после ручного добавления нода в узкий проем. Рис. 28 - Летающий нод Нехорошо. Будем исправлять. А то некрасиво как-то будет в игре, если моб попадет на этот нод и резко подлетит вверх, а потом вниз, верно? Выделяем этот нод, затем жмем кнопку отвечающую за перемещение объектов (Вверху на панели инструментов) и как обычный объект двигаем нод вниз по оси Y, и равняем его примерно с остальными. Готово! Рис. 29 - Результат смещения ноды вниз 3.8 Корректировка 8. Неправильная линковка нодов Еще одна редкая, но все же ошибка - когда ноды соединяются между собой по нескольку раз или же на далеких расстояниях, что в игре может вызвать адские глюки и некрасивые моменты. Рис. 30 - Пример такой ошибки Ноды с лестницы соеденились с нодами внизу, которые, в свою очередь, присоединены к основной сетке снизу. О как! Теперь правим: 1. Выделяем все три нода на лестнице, которые соединены к нижним 2. Удаляем 3. Ставим заново поштучно Либо можно не удалять а поставить новые ноды поверх старых, они автоматически перелинкуются в правильную сторону. Такие дела. Рис. 31 - Исправленные ноды, теперь они ведут в правильную сторону Такие ошибки к сожалению могут возникать не только не лестницах, а на различных выступах, ямках, обрывах и т.д - смотрите внимательнее и исправляйте эти недоразумения. 3.9 Корректировка 9. Аи-сетка на вышках и т.д Еще один, не то, чтобы глюк, но недоработка (имхо) аи-сетка не генерируется на вышках, например, вертикальных лестницах и т.д. Все это приходится делать руками. Рис. 32 - Аи-сетка на платформе, которая не соединена с основной сеткой на террейне Чтобы соединить два куска сетки между собой, делаем следующее: 1. Ставим нод снизу лестницы (Должно быть вкл. Ignore Constraints, не забываем), по надобности такой же нод сверху Рис. 33 - Новый нод - будущий мост между двумя кусками 2. Выделяем новый нод, передвигаем его к верху лестницы (Как показано было в ранних корректировках), затем выделяем самый ближний к нему нод и нажимаем на кнопку (+), итог: Рис. 34 - Теперь соединены 2 куска между собой Правда в игре это будет выглядеть не очень хорошо, если НПС или мутант полезет по лестнице, но допускать разъединения сетки нельзя, по этому выбора нет. Так же можно перетащить нод-"мост" на центр лестницы и повернуть его (Через обычный инструмент поворота на панели инструментов): Рис. 35 - Повернутый нод Скорее всего это немного украсит перемещение НПС по лестнице, но на практике не проверял. Ну вот, вроде и все! После всех правок, АИ-сетка должна быть отточена до мелочей, не иметь глюков и ошибок, нпс и мутанты будут бродить везде где положено, ну и прочие хорошие вещи. Кстати, учитывайте: АИ-Сетка не должна иметь разрывов (Например аи-сетка в здании не соединена с аи-сеткой на террейне) - будут вылеты xrAI. Между ними обязательно должен быть хотя бы один нод, соединяющий два куска. Можно билдить аи-сетку, компилировать. 4. Исправление ошибок при компиляции Момент с компиляцией я упущу, пусть это будет описано в статье про подключение уровней. Последним шагом рассмотрим ошибки, которые могут возникнуть, если что-то все-таки проглядели и не исправили. Напомню, что лучше всего будет после сборки аи-сетки проверять ее на наличие ошибок, благо xrAI (Ну или аивраппер) позволяет это делать. Если Вам написали AI-map is valid!, то могу поздравить - Ваша аи-карта готова для дальнейших действий, если же Вам написали ошибку, то: При получении ошибки вида (Скажу честно, другие ошибки мне не попадались, по этому пишу только о ней) Node 13705[-210.000000][36.516769][-151.899963] cannot be reached from the node 794[-255.500000][32.622856][-83.999969] говорит нам о том, что все-таки Аи-Карта не цельная. То есть пропустили место, и на Аи-Карте есть "островок" который отделен от основной Например сетка в домике отделена от сетки на террейне. Надо присоединить. Благо координаты нам пишут, осталось только найти проблемное место и исправить. Я обычно исправляю так: ставлю на карту узкий предмет, типа торчащей вверх палки, трубы, знака, чтобы диаметр(ширина) объекта не превышала размер одного нода. Затем вытягиваю его высоко вверх, чтобы было видно издалека куда он переместился, прописываю ему координаты выданные мне в логе: -255,50; 32.62; -83,9 и жму Enter, объект перемещается на проблемное место. Если на месте, куда переместился объект, не видно ошибок, значит прописываю ему вторые координаты выданные логом: -210; 36.51; -161,8. Нахожу ошибку и удаляю. Так же подобную ошибку могут вызывать такие места, смотрите внимательнее: * Два нода в одном месте * Неправильное линкование нодов (Описывалось ранее в корректировках) Возможное решение генерации АИ-сетки на тяжелых уровнях со сложной геометрией, когда СДК вылетает. (от sneik): Необходимое условие: это наличие полностью готовой локации, уже скомпиленой на максимальном качестве желательно. 1) Разбираем ее в СДК формат конвертером, можно без ключа -with_lods. 2) Запускаем СДК и загружаем уровень, выделяем все объекты и вносим в список аи-мап, ставим нод(ы), отключаем отображение объектов (Скрываем через ПКМ в СДК 0.4 или нажимаем на глазик в 0.7), и пробуем с генерировать сетку в обычном режиме, а вдруг повезет! Если нет, то: 3) закрываем СДК и лезем в папку rawdata\objects\levels\название уровня 4) Открываем папку с кусками геометрии, нажимаем ПКМ и выбираем сортировка по размеру, все "тяжелые" объекты будут первыми по списку 5) Смотрим на первый объект, самый тяжелый, например локация_part0001, запоминаем номер 6) Открываем СДК и опять подгружаем уровень. Находим этот объект и удаляем его. (Желательно объект который удалили перетащить на рабочий стол в отдельную папку, потом они пригодятся и искать будет проще). 7) Опять создаем список для аи мап, но уже в нем не будет одного объекта, того что удалили. Пробуем опять с генерировать. Получилось - отлично! Нет: 8) Удаляем по списку следующий объект и повторяем всю операцию заново, и так до тех пор, пока СДК не сможет с генерировать основную сетку. Дальше делаем все то что описано в уроках этой темы. 9) Все, основная сетка готова, приступаем к изготовлению сетки на объекты которые были удалены. 10) С рабочего стола перетаскиваем папку с объектами которые были удалены, запускаем СДК открываем уровень и выбираем из нашей папки первый по списку объект и ставим его в любое место на локе, нажимаем энтер и выставляем координаты (Местоположение) и ротацию (поворот) на 0, объект встанет на свое место где он и был. 11) Опять делаем по урокам из этой темы, отрезаем под объектом лишние ноды. Выбираем этот объект и в носим его в список аи мап, только его одного, других не надо. Генерируем на этом объекте аи сетку, редактируем ее а потом линкуем с основной сеткой, точки соприкосновения должны быть! Если это здание то соединяем ноды на входе. Для того что бы соединять ноды надо внести в список дополнительный объект, обычно террейн, для этого надо нажать +\-. 12) Когда сетка будет готова для первого объекта его можно удалить, и ставить следующий, повторив выше описанную операцию. И так по списку ставим все объекты и делаем для них сетку. 13) В последний раз проверяем всю сетку, убедившись что все нормально, приступаем к билду. Лезем в вкладку Scene и выставляем максимальное качество. Лезем в вкладку Object потом нажимаем Object List и удаляем все что там есть, то есть все объекты на локации, вплоть до террейна, только надо оставить один объект, какую-нибудь маленькую железяку, кирпич, без разницы. 14) Билдим, естественно на локе должны стоять глоу и лайтс. Компилим как обычный уровень, это займет без геометрии всего несколько секунд, компилим аи-сетку. Все, файл level.ai готов! Кидаем его в паку с уровнем и опять разбираем его, но только теперь уже для спавна, то есть для заселения. Ставим точки графа свой спавн и компилим алл.спавн. Кидаем в геймдату и запускаем, смотрим что натворили! Все! Более подробное представление о организации Аи-Сетки, принципиальных ограничениях (От malandrinus) Ссылка на пост Рекомендации к генерации Аи-Сетки (От CuJIbBEP) Ссылка на пост Альтернатива методу, если автогенерация сетки заканчивается вылетом о нехватки памяти (От h0N0r) Создание нод с зажатой клавишей alt + регулировка их количества с помощью brush size (в свойствах сетки). Напоминает создание ландшафта в редакторе для HoMM Подгонка геометрии в 3d max под аи-ноды Ссылка на пост
  7. Подключение ранее перенесенных локаций к "Сталкеру" в SDK Метод подойдет к абсолютно любой версии игры. Скачать шпаргалку здесь Итак, заметил, что многие прибегают к непонятным телодвижениям по решению этого вопроса с AI Wrapper(ом). Внимание! Локация уже должна быть играбильна/перенесена на вашу версию игры (ТЧ в нашем случае). Для примера разберем подключение к ТЧ (информация взята из файла которым можете скачать выше). 1. Находим нужные нам уровни, подойдут из других модификаций на ТЧ, а также перенесенные сингл локации “одиночки”. 2. Добавляем их в редактор (СДК) и переводим в формат СДК ЛЕ. Как настроить converter много где уже описано. Допустим сделали, у меня в батнике получился такой список: Скрытый текст converter -level marsh -out marsh_de -mode le converter -level zaton -out zaton_de -mode le converter -level pripyat -out pripyat_de -mode le converter -level jupiter -out jupiter_de -mode le converter -level l10_radar -out l10_radar_de -mode le converter -level l07_military -out l07_military_de -mode le converter -level l05_bar -out l05_bar_de -mode le converter -level l06_rostok -out l06_rostok_de -mode le converter -level aver -out aver_de -mode le converter -level puzir -out puzir_de -mode le converter -level av_peshera -out av_peshera_de -mode le converter -level peshera -out peshera_de -mode le pause 3. Отредактируем наши файлы game_maps_single.ltx, game_levels.ltx и game_graphs.ltx согласно списку наших локаций 4. Далее редактируем сами локации в СДК. Открываем наши уровни, по очереди, редактируя их оригинальный спавн. На нашей локации в редакторе делаем так: переходим в спавн локации, переходим в список нашего спавна. Выделяем все граф.поинты, и жмем на их свойства... Если увидим в Location 1 "mixed" или “…”, то меняем это на имя своей локации (возьмется из файла game_graphs.ltx). В параметре Connection также нечего не должно быть. Если будет слово миксед то нужно найти этот граф и удалить/заменить его. Скрытый текст Чутку отступлю, зачем нам файл game_graphs.ltx? Если мы захотим настроить маску для определенного монстра или группировки и при этом автор подключенных локаций, кругом, в свои граф_поинты ставил “…” (общий граф) то у нас чего не выйдет. Если локация будет иметь свои собственные графы, проблем с маской потом не возникнет. Делаем АИ переходы/настраиваем переходы по графам примерно таким образом: На Болоте делаю: Имя: exit_bol_2, ссылка на уровень: l03_agroprom ссылка на граф: exit_agr_1 А на Агропроме тоже самое, но на Болота: Имя графа: exit_agr_1 Имя локи: l14_marsh Имя графа: exit_bol_2 Важно! Не забываем нажимать после окончания редактирования Make Game на каждой нашей локации!! 1. Запускаем наш батник по сборке level.graph для каждой локации. У меня он выглядит так: Скрытый текст @start bins\compiler_ai\xrAI.exe -g marsh @start bins\compiler_ai\xrAI.exe -g zaton @start bins\compiler_ai\xrAI.exe -g jupiter @start bins\compiler_ai\xrAI.exe -g pripyat @start bins\compiler_ai\xrAI.exe -g l03_agroprom @start bins\compiler_ai\xrAI.exe -g l04_darkvalley @start bins\compiler_ai\xrAI.exe -g l05_bar @start bins\compiler_ai\xrAI.exe -g l06_rostok @start bins\compiler_ai\xrAI.exe -g l07_military @start bins\compiler_ai\xrAI.exe -g l08_yantar @start bins\compiler_ai\xrAI.exe -g aver @start bins\compiler_ai\xrAI.exe -g puzir @start bins\compiler_ai\xrAI.exe -g av_peshera @start bins\compiler_ai\xrAI.exe -g peshera Pause Если везде нас “поздравляют”, можно переходить к сбору глобального game.graph(а) Для этого запускаем наш батник (команда @start bins\compiler_ai\xrAI.exe -m) Должно везде быть VALID. Если видите INVALID, то где-то ошиблись – пересмотрите ту локацию, и сделайте для нее снова Make Game. Повторите для этой локации сборку level.graph(а) После этого повторите сборку game.graph(а), и так пока вас не “поздравят”. Если вдруг поменяете имя графов, то пересобрать нужно будет не только локацию где меняли имена, а и те на которые есть АИ переходы. Итак. У нас есть уже game.graph. Собираем all.spawn Запускаем соответствующий батник для сборки (команда @start bins\compiler_ai\xrAI.exe -no_separator_check -s). После поздравления у нас все готово для переноса правленых файлов в игру. В конфиги переносим свои: game_maps_single.ltх, game_levels.ltx и game_graphs.ltx В стандартные/оригинальные уровни кидаем файлы: level.game, level.gct, level.graph, level.spawn. Добавленные локации к игре, кидаем полностью. Еще не забудем про сам алл.спавн, (скорей всего и shaders.xr, вы поймете сами нужно ли его было редактировать из-за добавленных локаций, я этот вопрос пропустил, думаю, там все и так ясно). Копируем нужные нам текстуры, я это делаю с помощью Texture Copier, список беру из подгружаемых текстур в СДК. Если террейн будет “плыть”, то пропишите текстуру в textures.ltx. P.S.: По поводу масок можно почитать тут, этот вопрос, по моему, разобрали вполне. Cпасибо @D1mon за наВодку. Настроенная сборка СДК (на XP) + инструменты всякие: https://yadi.sk/d/Mzjusk7dPrsV5/X-Ray SDK_04 pack
×