Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Создание и редактирование локаций
denis2000Дата: Пн, 10.10.2011, 21:29 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Создание, редактирование, перенос локаций и добавление в игру

Работа с 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 по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
KarmaДата: Вт, 12.03.2013, 17:45 | Сообщение # 121
Удаленные



Сколько примерно времени CoP SDK должен собирать свет для небольшой тествой локации. А то я уже пять минут жду и компилятор уже пять минут собирает свет для локации 50х50.
 
denis2000Дата: Вт, 12.03.2013, 20:57 | Сообщение # 122
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Karma, Вы уж определитесь кто вам свет собирает SDK или компилятор - это разные программы. Все сильно зависит от размера локации, мощности ПК и качества компиляции. У меня например локация на High при размере 50х50 будет собираться около часа.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
SandwichДата: Чт, 14.03.2013, 16:44 | Сообщение # 123
Зам. Лидера «Свободы»
Свобода
Сообщений: 4340
Награды: 16
Репутация: [ 431 ]

Здравствуйте,нашел локацию складов для зп,но на ней осталась вот эта аномалия
[cut=Скрин][/cut]как её можно убрать?


А колбасу и батоны нынче хреновые стали делать! (Умнейший неизвестный сталкер)
 
denis2000Дата: Вт, 19.03.2013, 00:29 | Сообщение # 124
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Sandwich, Если аномалия то убрать можно удалив ее секцию из all.spawn, а если это статический партикл - то только редактированием в SDK.

Цитата (sergej5500)
Можно ли перенести элементы из alife_zaton версии 2.1 в распакованную локацию.

Другой способ - конвертировать all.spawn в набор level.spawn при помощи universal_acdc.

sergej5500, Сегодня мне пришлось решать приведенную вами задачу: как перенести в декомпилированную локацию настройки сделанные прямым редактированием all.spawn.
Для работы использовал universal acdc версии 1.27 Дата последних правок: 15 января 2011
[cut]
1. Скопировал мод-источник в отдельную папку (чтобы не запароть исходный)

2. Распаковал в папку spawns архив с universal acdc.

3. Первое что нужно сделать, настроить программу на распознание неизвестных ей секций, для этого декомпилируем all.spawn коммандой:
Код
universal_acdc.pl -d all.spawn -out all

и внимательно смотрим лог, там будут сообщения типа "unknown class for section stalker_outfit_anom", что значит что программа не знает к какому классу объектов отнести объект с именем секции stalker_outfit_anom. Из редми к программе мне стало известно, что нужно в файл clsids.ini добавить секции путем добавления строк, одна беда как я ни пытался программа не видела внесенные изменения в этот файл (если у кого получиться - сообщите как удалось). Поэтому я пошел другим путем - прямое редактирование скрипта stkutils\scan.pm, там после строки:
Код
'zone_mine_steam_weak' => 'ZS_MBALD',

я добавил:
Код
'stalker_outfit_anom' => 'E_STLK',

Почему E_STLK? Потому что объект с именем секции stalker_outfit_anom вероятнее всего бронежилет, а он имеет идентификатор clsid равный E_STLK, что соответствует классу cse_alife_item_custom_outfit. Если после добавления строки декомпиляция не проходит до конца и вылет отличается от unknown class for section, то вероятнее всего класс определен не верно и нужно пытаться выбрать другой.
Итак определяя классы недостающих секций добираемся до момента когда all.spawn будет полностью декомпилирован.

4. Итак секции настроены пора приступить к разбивке all.spawn на группу файлов level.spawn (спавн объекты) и level.game (точки путей), это делается командой:
Код
universal_acdc.pl -split all.spawn -out levels -way -use

Тут вероятна ситуация как у меня, файлы появились при этом level.game сформированы нормально (еще бы формат точек путей не менялся со времен древних билдов), а вот при формировании level.spawn программа вылетела с ошибкой. Что делать? Вероятно формат all.spawn не совсем подходит universal acdc, но он же его декомпилировал! Вот и выход: в третьем шаге файл all.spawn был полностью декомпилирован, вот теперь мы его скомпилируем снова командой:
Код
universal_acdc.pl -compile all -out all.spawn

И разделяем полученный файл по новой командой:
Код
universal_acdc.pl -split all.spawn -out levels -way -use

На этот раз разбивка на файлы прошла без ошибок и можно заменить файлы в папке gamedata\levels\<имя уровня> на полученные файлы level.spawn и level.game.

5. Декомпилируем локацию программой converter.exe (тут подробно не останавливаюсь благо есть много инструкций), но возможна опять "назадача" и программа при декомпиляции уровня споткнется как раз на файле level.spawn! Что-же остается? Лечить!

6. Если level.spawn не подошел декомпилятору converter.exe, то попробуем получить его другим путем, благо universal acdc предоставляет последнюю возможность.
Переименуем файл alife_<имя локации>.ltx в level_spawn.ltx и запустим компиляцию файла level.spawn из файла level_spawn.ltx командой:
Код
universal_acdc.pl -compile all -l

Полученный файл level.spawn поместим в папку уровня и снова пробуем декомпиляцию уровня в формат SDK, на этот раз все проходит успешно (по крайней мере у меня).

7. С замиранием сердца открываем нашу локацию в SDK (надеюсь без вылетов) и видим все спавн-элементы и пути теперь доступны для редактирования в более удобной форме.
Удачи в модостроении.[/cut]


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Вт, 19.03.2013, 17:58 | Сообщение # 125
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

denis2000,
Еще раз спасибо за информацию о добавлении в СДК информации из all.spawn модов. Декомпилировал Затон по Вашему сценарию. Нашёл добавленные сейфы на своих местах. Возник такой вопрос. Добавил в СДК на Затон какой-нибудь спавн-элемент. Сохранил локацию в СДК под названием zaton 2, например. В папке C:\Program Files (x86)\X-Ray CoP SDK\editors\rawdata\levels\zaton 2 появились файлы spawn.part и way.part. Данные о спавн-элементах хранятся в них. Можно-ли конвертировать эти файлы в alife_zaton и way_zaton соответственно?

Я расставлял квестовые сейфы на Затоне так. Загружал СГМ 2.1, отыскивал подходящее место, снимал координаты. (Нужны были гейм- и левел-вертекс). Загружал локацию в СДК, точно подгонял сейф по месту, называл его test_object. Сохранял локацию, затем из spaw.part брал точные координаты для прописывания в alife_zaton.


Сообщение отредактировал sergej5500 - Вт, 19.03.2013, 18:12
 
denis2000Дата: Вт, 19.03.2013, 23:06 | Сообщение # 126
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата (sergej5500)
Сохранил локацию в СДК под названием zaton 2, например

Этого делать абсолютно не нужно, ведь локации zaton и zaton 2, разные локации.

Цитата (sergej5500)
Можно-ли конвертировать эти файлы в alife_zaton и way_zaton соответственно

Я начал писать программу которая это делает, но там есть существенно препятствие - эти файлы в принципе не содержат вертексов! Более того эта программа не нужна поскольку SDK и компиляторы сделают это лучше: Билд правленной локации - сборка аи-сетки этой локации - сборка спавна всех локаций - на выходе all.spawn со всеми правками.

Как вы я тоже делал и в принципе все работало. Так что метод на ваш выбор.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
gamerДата: Вт, 19.03.2013, 23:06 | Сообщение # 127
Новичок
Пользователи
Сообщений: 82
Награды: 0
Репутация: [ 0 ]

Way .....ltx-файлы нужно ли переносить в розобраниый алл спавн ?Надо ли удалять какието формули из етих файлов как в alife файлах?

А нужны ли вам эти пути? denis2000

Спс понял.где можно почитать про обозначение формул в файлах ltx?

Например в КМБ. denis2000


Сообщение отредактировал gamer - Чт, 21.03.2013, 12:59
 
Valet41RUSДата: Чт, 21.03.2013, 04:15 | Сообщение # 128
Удаленные



Приветствую всех! Ребят, подскажите пожалуйста, в чем заключается данная ошибка: ERROR: Scene has '225615' non associated face!, а после этой ошибки пишет ещё: ERROR: Validation failed. Invalid scene., и все это в процессе компилирования с помощью СДК 0.7 локации Припять из ТЧ (l11_pripyat)? Дело в том что я неопытен в использовании этой программы, и эта моя первая локация которую я редактирую в СДК. Я добавил на нее различные объекты в том числе и аномалии и хочу присоеденить к ЗП. И еще, я неуверен что это первая и единственная ошибка при компилировании локации, кто с этим сталкивался расскажите подробней как исправить вышенаписанную ошибку и какие ошибки могут еще появиться, буду очень признателен!

Вы добавили в сцену дополнительные объекты, в результате в ней появились полигоны не связанные ни с одним из секторов. Самый простой выход переключиться в режим редактирования секторов - удалить дефолтный сектор и создать заново. denis2000

Добавлено (21.03.2013, 04:15)
---------------------------------------------
denis2000 спасибо! Попробую решить эту проблему с помощью вашего совета!

 
gamerДата: Вс, 24.03.2013, 01:21 | Сообщение # 129
Новичок
Пользователи
Сообщений: 82
Награды: 0
Репутация: [ 0 ]

Можете подвказать как называютса 4 лаборатории ТЧ в левел файлах?Или подсказать где про ето можно почитать .Спс
 
ПpизpакДата: Вс, 24.03.2013, 06:31 | Сообщение # 130
Новичок
Пользователи
Сообщений: 64
Награды: 0
Репутация: [ 14 ]

gamer,
["l03u_agr_undergroun"] = "Подземелье НИИ Агропром", 
["l04u_labx18"] = "Лаборатория X-18", 
["l08u_brainlab"] = "Лаборатория X-16", 
["l10u_bunker"] = "Лаборатория X-10", 
Это можно было легко в интернете найти.


Комп: Intel Core i5 2400 3.1GHz, 8gb RAM, GeForce GTX 570 1gb, Win 7 64bit
Stalker 1.0004 + НС от 03.09.10 + DMX 1.3.5 + фикс 1.3.5 + свои правки
Stalker 1.6.02 + SGM 1.7 + свои правки
 
ДовакинДата: Пн, 25.03.2013, 00:01 | Сообщение # 131
Командир д.г. быстрого реагирования
Пользователи
Сообщений: 688
Награды: 14
Репутация: [ 552 ]

Добрый вечер.Я хочу узнать,как подключить локации из ЧН со всеми картами(в КПК).

КМБ Урок 8? denis2000


 
gamerДата: Пн, 25.03.2013, 01:16 | Сообщение # 132
Новичок
Пользователи
Сообщений: 82
Награды: 0
Репутация: [ 0 ]

Как зделать загрузочний екран? Следовал ответу Сообщения # 12 но он грузитса пустой
Спс за помощ

Нашол уроки по фотошопу ,но ещё не ясно куда и как подключать дополнительный файли что б видны были при загрузке....

Просто следуйте совету из 12 поста и все получиться. denis2000


Сообщение отредактировал gamer - Пн, 25.03.2013, 12:37
 
last_man_on_earthДата: Пн, 25.03.2013, 11:49 | Сообщение # 133
Начальник охраны «Свободы»
Свобода
Сообщений: 318
Награды: 13
Репутация: [ 169 ]

Всем здрасте. В посту http://sigerous.ru/forum/17-208-3494-16-1288723175 написано что нужна прога на амк сайте, но там не чего нету, при переходе. Выложите плз прогу. Или локацию радар для ЗП

Ссылка обновлена. denis2000
 
ДовакинДата: Пн, 25.03.2013, 23:12 | Сообщение # 134
Командир д.г. быстрого реагирования
Пользователи
Сообщений: 688
Награды: 14
Репутация: [ 552 ]

1.Не запаковывается all.spawn после того,как перенес Болота из ЧН в ЗП.
2.[cut=Скрин][/cut]
3.Перенос локации из ЧН в ЗП следовал инструкции на этом сайте.

Картинки размещайте под спойлером или в виде превью - увеличение по клику, текст на скриншоте не читаем. denis2000




Сообщение отредактировал ___ToRReNT___ - Пн, 25.03.2013, 23:14
 
gamerДата: Ср, 27.03.2013, 02:32 | Сообщение # 135
Новичок
Пользователи
Сообщений: 82
Награды: 0
Репутация: [ 0 ]

Помогите с етим логом разобратса .
[cut noguest=Лог]* WARNING: player not logged in

FATAL ERROR

[error]Expression : pGameIni->section_exist(map_name)
[error]Function : CUIMapWnd::Init
[error]File : D:\prog_repository\sources\trunk\xrGame\ui\UIMapWnd.cpp
[error]Line : 158
[error]Description : agroprom_underground

stack trace:

0023:69737365 atiumdag.dll[/cut]
Спс за помощ

уже разобрался спс


Сообщение отредактировал gamer - Чт, 28.03.2013, 15:27
 
Поиск: