Модостроение. Создание и редактирование локаций
|
|
denis2000 | Дата: Пн, 10.10.2011, 21:29 | Сообщение # 1 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Создание, редактирование, перенос локаций и добавление в игру Работа с SDK и дополнительными программами для создания, редактирования и добовления локаций Если у вас появились вопросы по созданию, редактированию, переносу локаций, а так же по добавлению их в игру. Задавайте их в этой теме - умные головы, модосторители и просто разбирающиеся в программировании люди вам ответят.
Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7
Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML [cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл: 1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R]) 2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx" 3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо) Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#" Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut]
[cut=Декомпиляция уровней в формат SDK. Спасибо VERvolF]Для декомпиляции игровых карт в формат LevelEditor'a используется консольная утилита converter.exe, входящая в пакет X-ray Game asset tools pack или X-ray Engine Tools (converter). Последнюю версию искать на сайте
Настройка Конвертера.
Открываем любым текстовым редакором файл converter.ini, в нем находим строки: Code ; 2947+ (финалка включая обновления) [2947_config]:2945_config $game_data$ = c:\temp\1\gamedata.3312\ $game_levels$ = c:\temp\1\gamedata.3312\levels\
; 3456+ (Clear Sky включая обновления) [3456_config]:2947_config $game_data$ = c:\temp\1\gamedata.3502\ $game_levels$ = c:\temp\1\gamedata.3502\levels\ fake_mu_gamemtls = 34xx_fake_mu_gamemtls fake_gamemtls = 34xx_fake_gamemtls Здесь $game_data$ - путь до папки gamedata с распаковаными ресурсами игры, $game_levels$ - до папки levels в gamedata соответственно. Необходимо указать полные пути.
В файле fsconverter.ltx находим следующую строку: Code $sdk_root$ = false| false| c:\program files\x-ray sdk\level_editor\ Здесь $sdk_root$ - путь до полного SDK (русифицированный не работает нормально с converter.exe). Правим путь на свой, не забывая поставить слэш в конце.
Более конкретная настройка СДК см. Ссылки.
Декомпиляция.
Конвертер полностью настроен, теперь нужно создать .bat-файл для конвертирования в формат SDK. Для этого создаем текстовой файл, пишем внутри команду и меняем формат файла с .txt на .bat: Code converter -level <имя_карты> -out <имя_сцены> -mode maya|le|le2 -with_lods pause Здесь <имя_карты> - имя папки с картой в каталоге gamedata\levels\, например l08_yantar (локация Янтарь из ТЧ), <имя_сцены> - имя карты после декомпиляции, можно не писать, в этом случае имя карты после декомпиляции не изменится. Далее выдержка из docs\converter.txt:
Quote Ключ -mode задаёт режим работы: maya - декомпилировать только геометрию карты. le - декомпилировать в формат LE. le2 - декомпилировать в формат LE (для l12_stancia_2). raw - декомпилировать в формат LE (отладочный режим).
Ключ -with_lods обрабатывается в зависимости от значения -mode. Если он задан совместно с -mode maya, программа выдаст ещё и MU-модели. С остальными режимами его наличие заставляет converter разбивать LOD-текстуры, что необходимо для полной пересборки. Также ключ ''-with_lods'' следует использовать если планируется дальнейшая перекомпиляция уровня.
Отладочные параметры: -dbgcfrm, -dbgmrg.
То есть команда для декомпиляции в формат SDK, например, уровня l08_yantar будет выглядеть так: Code converter -level l08_yantar -out l08_yantar_decompiled -mode le -with_lods Если все сделано правильно, то после запуска батника пойдет процесс декомпиляции.
Найти декомпилированную карту можно будет в каталоге $sdk_root$\maps (файл, читаемый SDK) и $sdk_root$\rawdata\objects\levels (обьекты, используемые данным уровнем). Ну а далее думаю всё и так понятно - в ЛЕ жмём File -> Open и открываем нашу карту. [/cut][cut=Создание LOD-текстур]Изначально в пакете SDK отсутствуют LOD'ы. Их придется создать самостоятельно. В свитке Scene Level Editor'a кликаем Objects-->Library Editor (Объекты-->Библиотека объектов). В открывшемся диалоговом окне выбираем нужный объект, ставим флажок Preview (Предпросмотр). Нажатием кнопки Make LOD (High Quality) или Make LOD (Low Quality) запускаем процесс создания LOD-текстур соответственно в высоком или низком качестве. Созданные LOD'ы можно найти в \rawdata\textures\lod\ (.tga) и \gamedata\textures\lod\ (.dds и .thm).
Если у объекта отсутствует .thm-файл с картинкой-превьюшкой, то можно создать его нажатием кнопки Make Thumbnail (Создать миниатюру), выбрав перед этим удобный ракурс для "съемки". [/cut]
[cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти? Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда. Для того чтоб найти LOG необходимо зайти вот сюда:
В Win хр лог находится:
C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs
Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.
В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs
Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка: ... $app_data_root$ = true | false| $fs_root$| users\(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx) ... $logs$ = true| false| $app_data_root$| logs\(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи) ... [/cut][cut=Получение более подробной информации о вылете (ХОВАН)] Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...) Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так: Code function abort(fmt, ...) local reason = string.format(fmt, ...) error_log(reason) end Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией
Первый: Code Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil) Второй: Code Expression : 0 Function : ErrorLog File : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp Line : 49 Description : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic' [/cut]
Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы, статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца", возможно Ваш вопрос уже рассматривался.
Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки. Помните чем подробнее вопрос, тем точнее ответ.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
InvuL | Дата: Вс, 03.02.2013, 19:26 | Сообщение # 106 |
Отмычка
Пользователи
Сообщений: 25
| Люди, как сделать для *.dds текстуры *.thm файл, инет перерерыл, не нашёл. Мне нужен файл trees_fuflo.thm, я знаю как *.thm для файлов *.object, если можете скинте ссылку на этот файл, а вот для dds...
trees_fuflo.thm denis2000
|
|
|
Эти 0 пользователя(ей) поблагодарили InvuL за это полезное сообщение: |
|
|
dmitry778 | Дата: Вс, 03.02.2013, 19:49 | Сообщение # 107 |
Советник «Свободы»
Свобода
Сообщений: 727
| InvuL, Качай. Сам парился с ней.
СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
|
|
|
Эти 0 пользователя(ей) поблагодарили dmitry778 за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 03.02.2013, 19:54 | Сообщение # 108 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| InvuL, Помести текстуру в формате tga в папку rawdata\textures и открыв например Actor Editor и выбрав Images -> Image Editor делаешь текстуру в формате dds плюс thm.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
InvuL | Дата: Пт, 08.02.2013, 09:28 | Сообщение # 109 |
Отмычка
Пользователи
Сообщений: 25
| При компиляции спавна происходит вылет: [cut] Код Expression : assertion failed Function : CGraphMerger::CGraphMerger File : D:\prog_repository\sources\trunk\utils\xrAI\xr_graph_merge.cpp Line : 597 Description : tpGraphs.size() [/cut] Как я понял, это что то связано с геймграфами, но у меня на карте их только 3.
|
|
|
Эти 0 пользователя(ей) поблагодарили InvuL за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 08.02.2013, 10:44 | Сообщение # 110 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| InvuL, Правильно настрой файлы game_graphs.ltx, game_levels.ltx, game_maps_single.ltx
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
InvuL | Дата: Пт, 08.02.2013, 11:01 | Сообщение # 111 |
Отмычка
Пользователи
Сообщений: 25
| Я не знаю как правильно настраивать их надо, много форумов перерыл, понять не мог, но как то настроил. Вот: [cut=game_maps_single.ltx] Код ... [level_maps_single] ; stohe_selo = zaton = jupiter = jupiter_underground = pripyat = labx8 = yantar_single = ; plecha_selo = ; weapons_test =
...
;[yantar_single] ; global_rect = 307.0, 90.0, 717.0, 500.000000 ; music_tracks = zaton_musics ; weathers = dynamic_default [/cut] При том если я раскоментирую строки yantar_single, то при компиляции спавна вылет: [cut=Вылет] Код Expression : fatal error Function : CInifile::Load File : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp Line : 274 Description : <no expression> Arguments : Duplicate section 'yantar_single' found. [/cut] [cut=game_graph.ltx] Код ...
[location_3]
...
140 = "pri_sim_11" 141 = "pri_sim_12" 142 = "yantar_single" 143 = "yan_smart_terrain_1" 144 = "yan_sim_1" 145 = "yan_sim_2" 146 = "yan_sim_3"
... [/cut] [cut=game_levels.ltx] Код [levels]
...
level183 level184 tgm_bug_test_3 tgm_jupiter_test
level185 level186
...
[level185] name = yantar_single caption = "yantar_single" offset = 12000.0, 1000.0, 10000.0 weathers = [default] id = 185
[level186] name = yan_smart_terrain_1 caption = "yan_smart_terrain_1" offset = 12000.0, 1000.0, 10000.0 weathers = [default] id = 186 [/cut]
Ну что же тут не так?
Сообщение отредактировал InvuL - Пт, 08.02.2013, 11:03 |
|
|
Эти 0 пользователя(ей) поблагодарили InvuL за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 08.02.2013, 23:29 | Сообщение # 112 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| InvuL, Где-то продублировал секцию yantar_single
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
InvuL | Дата: Вс, 10.02.2013, 07:53 | Сообщение # 113 |
Отмычка
Пользователи
Сообщений: 25
| Проблема: Я нормально переконвертировал карту, взял спавн только этой карты, пытаюсь через ACDC разобрать спавн, а он мне выдаёт, когда читает секции alife: [cut] Код FATAL ERROR! Function : stkutils::entity::_read_m_spawn Line : 94 Expression : defined $class_name Description : unkown class for section mp_medkit [/cut]
Я нашёл эту аптечку, удалил её с карты, сохранил, заного ВСЁ перекомпилировал, всёравно при разборе НОВОГО спавна находит аптечку, хотя я на карте через список объектов, все спавно элементы проверил, и просто камерой обшарил, аптечки нигде нету, как это можно исправить, или обойти?
Удалите ВСЕ объекты относящиеся к мультиплеерной игре. denis2000
Добавлено (10.02.2013, 07:53) --------------------------------------------- Удалил уже всё что можно на карте, всёравно при распаковке спавна вылет, НО уже другой: [cut] Код FATAL ERROR! Function : stkutils::ini_file::value Line : 424 Expression : defined $self->{sections_hash}{$section} Description : sections is undefined [/cut]
Не известное распаковщику имя секции. Выложи файлы spawn.part и way.part своей локации. denis2000
|
|
|
Эти 0 пользователя(ей) поблагодарили InvuL за это полезное сообщение: |
|
|
Red_Devil | Дата: Пн, 11.02.2013, 14:52 | Сообщение # 114 |
Гражданский
Пользователи
Сообщений: 10
| Всем привет. Меня интересует почему в СДК не все объекты из сталкера? К примеру всяких домов, навесов, и прочих зданий там нет. Только всякие школы и многоэтажки, и из Лиманска дома, а ангаров, деревянных домиков и прочих строений там нет. Я на торренте нашел пак, там написано, что все объекты из сталкера присутствуют, скачал (14Гб!), нашел там файлы в формате *.object засунул их по адресу в СДК SDK\editors\rawdata\objects\ но после открытия СДК в нем никаких изменений по кол-вы объектов не произошло. Подскажите что не так я сделал? Или может есть у кого ссыль на объекты или сами объекты строений. Поделитесь плиз. Очень нужно.
|
|
|
Эти 0 пользователя(ей) поблагодарили Red_Devil за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 11.02.2013, 22:22 | Сообщение # 115 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (Red_Devil) Меня интересует почему в СДК не все объекты из сталкера? Зачем? Если в игровых архивах итак все есть! Цитата (Red_Devil) файлы в формате *.object засунул их по адресу в СДК SDK\editors\rawdata\objects\ Именно так и все работает!
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Karma | Дата: Ср, 20.02.2013, 15:21 | Сообщение # 116 |
Удаленные
| Вобщем перехожу я на ЗП-шный СДК. Было все нормально, пока после загрузки локации не вылезло это: [cut noguest=При загрузке локации вылазиет это окно, что это могло значить?][/cut]
Игнорируйте. denis2000
|
|
|
Эти 0 пользователя(ей) поблагодарили Karma за это полезное сообщение: |
|
|
Игорь_Го | Дата: Пн, 25.02.2013, 14:35 | Сообщение # 117 |
Отмычка
Пользователи
Сообщений: 26
| Всем привет. Сделал террейн, сделал несколько строений и хоться на террейне сделать площадочки под эти строения. Надо, чтобы НПС-ы бегали внутри этих строений, т.е внутри них будет ai-сетка, а отсель вопрос: как совместить расположение строений с этой сеткой на террейне? Али нужно сделать сетку, потом ужо размещать строения и вырезать площадки?
Как по науке эт делается?
1. Аи-сетка делается в последнюю очередь. 2. Хотите по науке есть видеоуроки по работе в SDK в соседней теме. denis2000
|
|
|
Эти 0 пользователя(ей) поблагодарили Игорь_Го за это полезное сообщение: |
|
|
Karma | Дата: Вс, 03.03.2013, 13:49 | Сообщение # 118 |
Удаленные
| При компиляции локации в CoP SDK остановилась компиляция с ошибкой:
Код FATAL ERROR [error]Expression : assertion failed [error]Function : CBuild::Load [error]File : .\Build_Load.cpp [error]Line : 273 [error]Description : L_static().rgb.size()
Я так понял что-то связанно со светом, хотя я ставил его.
Все разобрался, у меня отсутствовал $static
Сообщение отредактировал Karma - Вс, 03.03.2013, 15:12 |
|
|
Эти 0 пользователя(ей) поблагодарили Karma за это полезное сообщение: |
|
|
sergej5500 | Дата: Вс, 03.03.2013, 15:10 | Сообщение # 119 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Возник следующий вопрос. В SGM 2.1 сделал на Затоне несколько рестрикторов и сейфов с определённй логикой. Всё прописано в alife_zaton и работает как надо. Декомпилировал Затон для обработки в SDK. Можно ли перенести элементы из alife_zaton версии 2.1 в распакованную локацию. Локации Затон в этом моде нет и она берётся из ресурсов игры. Откуда при распаковке берутся данные о рестрикторах, боксах, террайнах и т.д?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 03.03.2013, 16:17 | Сообщение # 120 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, При декомпиляции локации в формат SDK информация о спавн-объектах берется из файла level.spawn, что находиться в директории с локацией levels\<имя локации>. Можно ли перенести элементы из alife_zaton версии 2.1 в распакованную локацию? Конечно, можно, нужно в SDK создать эти спавн элементы заново. Причем это касается абсолютно ВСЕХ спавн элементов добавленных прямым редактированием all.spawn, в том числе и добавленных модом. Другой способ - конвертировать all.spawn в набор level.spawn при помощи universal_acdc.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
|