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

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

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

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

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

Тип контента


Категории

  • Правки для ОП-2.2
  • Вопросы по правкам / настройке ОП-2.1
  • ЧаВо по форуму
  • Шпаргалка AMK: Основы
  • Шпаргалка AMK: Ковыряние
  • Шпаргалка AMK: Оптимизация
  • Шпаргалка AMK: Работа с консолью
  • Справочник вылетов (Line 1 - Line 100)
  • Справочник вылетов (Line 101 - Line 200)
  • Справочник вылетов (Line 201 - Line 400)
  • Справочник вылетов (Line 401 -)
  • [CoP] Библиотека моделей оружия

Форумы

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

Искать результаты в...

Искать результаты, которые...


Дата создания

  • Начать

    Конец


Последнее обновление

  • Начать

    Конец


Фильтр по количеству...

Зарегистрирован

  • Начать

    Конец


Группа


Звание


Карта банка


BTC (Bitcoin)


ETH (Ethereum)


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


Реальное имя


Город


Интересы

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

  1. faniloko

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

    Дорогие друзья! Прежде, чем написать сообщение с вопросом "а почему у меня не работает"/"а почему такой вылет", проверьте написанное в FAQ по основным проблемам. Если описанный в сообщении вылет/проблема есть в FAQ, не обессудьте - буду тереть. KD87
  2. Благодарность за помощь в сборе информации для оформления - @HellRatz, @WolfHeart, @range, @RayTwitty, @Опричник, Молния в вакууме
  3. Тема создана для модмейкеров, столкнувшихся с неизвестными вылетами движка X-Ray, и его SDK. Скрытый текст Платформа: ТЧ/ЧН/ЗП или SDK. Версия: игры или SDK Оригинал или мод (указать какой) Лог вылета. При каких обстоятельствах произошёл вылет. Тема для публикации решений вылетов и ошибок: https://www.amk-team.ru/forum/topic/12733-instrukcii-po-vyletam-i-oshibkam/ Тема по ошибкам (не вылетам) SDK: https://www.amk-team.ru/forum/topic/13442-masterskaya-po-razboru-oshibok-ne-vyletov-x-ray-sdk/ Нерешенные вылеты: https://modfaq.ru/Категория:Нерешённые_вылеты [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() Гайды: https://modfaq.ru/Поиск_решения_вылета https://modfaq.ru/Поиск_упоминаний_вылетов_и_ошибок
  4. Graff46

    GUI for X-Ray SDK

    Графическая оболочка для быстрого вызова Actor Editor, Level Editor, и компиляторов для выбранных локаций. Данная программа тестировалась на X-Ray SDK 0.7 RePack by DaaGuda V2. Для работы с программой нужно настроить её конфиг - guiconf.ini Скрытый текст Конфиг выполнен в виде *.ini файла. Настройка распределены по секциям. Секции: [paths] - Содержит пути до нужных расположений, его нужно настраивать под себя обязательно. sdk - Путь до папки с бинарниками Actor Editor, Level Editor comp - Путь до компиляторов lvls - Путь до файла с описанием локаций (game_levels.ltx). Остальные секции содержат параметры для разных режимов компиляции локаций [loc] компиляция локации основная [aimap] компиляция АИ сетки [spawn] компиляция спавна [detail] компиляция травы Скрытый текст В верхней части интерфейса программы находятся 2 кнопки LE и AE запускающие Level editor и Actor editor соответственно. В списке ниже появляются локации прописанные в конфигах СДК, при выборе локации разблокируются кнопки в нижней части интерфейса программы для операций над локацией. Отдельно следует сказать про сборку спавна: При нажатии на кнопку "Spawn" появится окно с 2-мя списками (вверху и внизу). В верхнем списке находятся доступные локации, а в нижнем локации для которых будет собираться спавн. Для того чтобы добавить локацию в нижний список - в верхнем списке сделайте двойной клик на элементе списка с именем нужной локации, соответственно для того чтобы убрать локацию из нижнего списка - сделайте двойной клик на элементе списка с именем нужной локации. После того как локации выбраны - нужно нажать кнопку "ОК". Нужно быть внимательным при добавлении локаций в список для компиляции спавна (нижний список) т. к. программа не обрабатывает случай когда одна локация добавилась несколько раз. Для редактирования исходников программы нужен HiAsm GitHub
  5. Подключение ранее перенесенных локаций к "Сталкеру" в 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
  6. AI-Map в X-Ray: теория, практика, ошибки Статья по возможности расскажет о том, что такое Аи-Карта, как ее правильно сгенерировать, как скорректировать до рабочего состояния. Больше рассчитана на людей, которые более-менее знакомы с СДК, но все равно старался писать максимально подробно. 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. Тема создана для модмейкеров, столкнувшихся с неизвестными ошибками X-Ray SDK. Скрытый текст SDK: версия и компонент. Ошибка. При каких обстоятельствах произошла ошибка. Тема для публикации решений вылетов и ошибок: https://www.amk-team.ru/forum/topic/12733-instrukcii-po-vyletam-i-oshibkam/ Тема вопросов по неизвестным вылетам: https://www.amk-team.ru/forum/topic/13415-masterskaya-po-razboru-vyletov-x-ray/ Нерешенные ошибки: https://modfaq.ru/Категория:Нерешённые_ошибки

AMK-Team.ru

×
×
  • Создать...