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


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
yakutiДата: Ср, 09.01.2013, 13:53 | Сообщение # 91
Отмычка
Пользователи
Сообщений: 46
Награды: 0
Репутация: [ 7 ]

Подключил локации к СГМ 1.7, объединил all.spawn. Почему при старте игры на новой локи, ГГ появляется за картой. То есть вообще никакой геометрии карты нет
 
sergej5500Дата: Ср, 09.01.2013, 16:14 | Сообщение # 92
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

yakuti,
Координаты ГГ в all.spawn в секции actor прописываются в двух строках: position и udp:position. Они должны совпадать. У меня ГГ выпал за пределы локации, когда я поменял координаты в первой строке и забыл про вторую.
 
denis2000Дата: Ср, 09.01.2013, 22:29 | Сообщение # 93
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

yakuti, Не забывайте что в SGM ГГ телепортируется с с места спавна скриптом на другую точку старта новой игры.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
dmitry778Дата: Пт, 18.01.2013, 19:45 | Сообщение # 94
Советник «Свободы»
Свобода
Сообщений: 727
Награды: 15
Репутация: [ 159 ]

Всем привет! И снова я к Вам с геморроем. Подключаю локу к чистому ЗП, все проходит успешно, но для подсчета вертексов нет нужных файлов, а именно: acdccop.pl, acdc_levels_info.cfg, stkutils/level.pm. АСДС брал от СГМ2.2. С ал.спавном он отработал но далее затык. Подскажите выход.

СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.


Сообщение отредактировал dmitry778 - Пт, 18.01.2013, 19:46
 
denis2000Дата: Пт, 18.01.2013, 20:34 | Сообщение # 95
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

dmitry778, Может это конечно банальный ответ, но у вас два варианта:
1. Использовать ACDC в котором есть указанные в инструкции файлы
2. Искать в вашей версии файлы в которые нужно внести необходимые правки для корректной настройки ACDC под вашу задачу.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
dmitry778Дата: Вс, 20.01.2013, 10:25 | Сообщение # 96
Советник «Свободы»
Свобода
Сообщений: 727
Награды: 15
Репутация: [ 159 ]

denis2000, Да. Спасибо, разобрался. Но при загрузке НИ вылет: stack trace: В уроке ничего про него нет. Я все прописал, но что не так?

Ответ такой в уроке: 4. Очень часто встречается, например при отсутствии необходимых файлов Но каких!?

Согласен, что информации мало или вы считаете, что по подобному вылету возможно дать более подробные инструкции? denis2000

Все спасибо разобрался. Только теперь проблема с текстурами. В уроке написано, что нужно поменять местами Альфа канал и RGB. Но как это сделать в ФШ не пойму. Подскажите кто знает, как это воспроизвести.

Добавлено (20.01.2013, 10:25)
---------------------------------------------
Я пробовал так:
- делаю дубликат
- Выделяю РГБ
- Выделяю слой
- беру в буфер
- выделяю альфу
- РГБ вставляю в альфу
- беру оригинальную альфу и слой
- вставляю в РГБ
Таким образом у меня на месте РГБ оказывается альфа, а на месте альфы РГБ. Сохраняю. Открываю, чтобы проверить, а альфа (РГБ) исчезает остается только РГБ (альфа). И в игре никаких изменений. Может при сохранении что-то напортачил? Или что?


СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.


Сообщение отредактировал dmitry778 - Сб, 19.01.2013, 19:17
 
denis2000Дата: Вс, 20.01.2013, 16:37 | Сообщение # 97
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата (dmitry778)
В уроке написано, что нужно поменять местами Альфа канал и RGB

В Уроке такого не написано!


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
dmitry778Дата: Вт, 29.01.2013, 07:04 | Сообщение # 98
Советник «Свободы»
Свобода
Сообщений: 727
Награды: 15
Репутация: [ 159 ]

Всем доброго здравия. Я декомпилировал уровень Болота в LE, все нормально, вот только при загрузке локи лог ругается на отсутствие текстуры. Поделитесь текстуркой texture 'det\det_marsh, у кого она есть. Я все перерыл. Все текстуры от всех версий игры СТАЛКЕР и все текстуры СДК. Нигде ее нет, а без нее потом уровень не скомпилишь. Выручайте! sad С меня + smile

Эта текстура формируется в процессе декомпиляции уровня. Значит декомпиляция прошла не так гладко... denis2000


СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
 
denis2000Дата: Вт, 29.01.2013, 18:14 | Сообщение # 99
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

dmitry778, det_marsh

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
dmitry778Дата: Ср, 30.01.2013, 19:01 | Сообщение # 100
Советник «Свободы»
Свобода
Сообщений: 727
Награды: 15
Репутация: [ 159 ]

Всем привет. А а скажите вот эта бяка в логе: ERROR: group 'group' - has empty reference. Corrupted file?. Появляется в логе при загрузке сохраненной локи. Может появляться из-за того-что у меня остался разгруппированный прожектор?

Нет, разгруппировка составного объекта сама по себе не приводит к такой ошибке. SDK обнаружил нарушение структуры файла group.part. Можно попробовать откатить изменения в нем переименовав файл group.~part в group.part (group.~part - как понимаете предыдущая версия файла групповых объектов). denis2000

Цитата (dmitry778)
Эта текстура формируется в процессе декомпиляции уровня. Значит декомпиляция прошла не так гладко...
denis2000, Да вроде нет. Все прошло достаточно нормально. Не хватало несколько текстур, но я их добавил и теперь при загрузки локи нет ошибок. Кроме этой.

denis2000, Последовал Вашему совету. Нашел в папке лэвэлс\марш файл group.~part но там-же и оказался файл group.part. По этому я закоментировал файл group.part, а файл group.~part переименова. Но при загрузке локи лог опять ругается на то-же самое. Что еще можно придумать?

Тогда сохраните файлы локации в другой папке, затем снова декомпилируйте ее, и замените новые файлы сохраненными кроме файла group.part, раз он поврежденный. denis2000

wacko Но можно тогда все сделать и потом прибегнуть данной операции.

Ну при желании и ошибку можно вручную исправить. denis2000

А вот еще пара вопросов:
Как на помостах которые я поставил сделать АИ-сетку (AI-map)? А то пути сквозь них проваливаются. sad
И почему у меня вдруг весь АИ с террейном стали красные?


Цитата (denis2000)
Ну при желании и ошибку можно вручную исправить
Выше Вами предложенный метод? Или есть еще способы?


СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.


Сообщение отредактировал dmitry778 - Ср, 30.01.2013, 17:06
 
denis2000Дата: Ср, 30.01.2013, 20:52 | Сообщение # 101
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

dmitry778, AI-сетка там присутствует, а то что тонет в текстурах, то это не проблема.

Я имел ввиду прямое редактирование файла group.part.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
dmitry778Дата: Чт, 31.01.2013, 12:06 | Сообщение # 102
Советник «Свободы»
Свобода
Сообщений: 727
Награды: 15
Репутация: [ 159 ]

Цитата (denis2000)
Я имел ввиду прямое редактирование файла group.part.

Простите за тупой вопрос. Но как?

Это аналог ini-файла (ну или ltx). denis2000


СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
 
InvuLДата: Пт, 01.02.2013, 17:43 | Сообщение # 103
Отмычка
Пользователи
Сообщений: 25
Награды: 2
Репутация: [ 4 ]

Блин люди, то ли я тугодум, либо я не знаю. Скажите, я вот сделал карту в SDK 0.7 для мултиплеера, ну всё как надо, а вот как её теперь перекомпилировать в формат сталкера?

Уж по этому вопросу информации в интернете валом, даже видеоурок у нас в разделе есть. denis2000

Добавлено (01.02.2013, 17:43)
---------------------------------------------
Ну я не знаю что делать: Я взял карту из S.T.A.L.K.E.R CoP "mp_limansk", прекомпилировал её в формат SDK 0.7, открыл, удалил пару объектов (машину и часть стены у стройки), сохранил (save), потом перекомпилировал в формат сталкера (compile->build->ok), перекомпилировал, в логе выдал пару ошибок:
[cut=Ошибки]

Код
...
Error face found at pos: [24.47,9.62,238.14]
Error face found at pos: [24.47,9.58,237.64]
Error face found at pos: [79.94,5.81,319.57]
...
Can't export invalid part #12
Can't export invalid part #13
Can't export invalid part #25
...
Process AI Map - failed.
Process Wallmark - failed.
...

[/cut]
Перекомпилировал, карту нашёл (перекомпилированую в формат сталкера), кинул mp_limansk в S.T.A.L.K.E.R CoP (.../gamedata/levels/), зашёл в сталкера, создал игру с картой, изменений нету, что я не так сделал?
 
denis2000Дата: Пт, 01.02.2013, 20:04 | Сообщение # 104
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата (InvuL)
в логе выдал пару ошибок

Что такое бедфейсы (Error face) и что с ними делать читайте в интернете.
Цитата (InvuL)
потом перекомпилировал в формат сталкера... изменений нету

А собственно геометрию вы не перекомпилировали! Изучайте что такое xrLC и xrDO и как ими пользоваться.

Извините, но эти вопросы миллион раз обсуждались на миллиарде ресурсов по модостроению - гугл в помощь.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
dmitry778Дата: Сб, 02.02.2013, 21:47 | Сообщение # 105
Советник «Свободы»
Свобода
Сообщений: 727
Награды: 15
Репутация: [ 159 ]

Всем привет. Подскажите (может урок где есть), как работать и что это вообще за текстуры, которые синим цветом с черной лапой?

Это объекты ограничители с соответствующей текстурой. Нужны для того чтобы ограничить периметр локации или сделать возможным передвижение по наклонным поверхностям. denis2000

А как с ними работать? Может урок есть?

Никаких хитростей - как с обычными объектами: создать в 3D редакторе и там-же натянуть эту текстуру, разместить на локации в SDK и настроить шейдеры. denis2000

Ой, как все просто. wacko smile А урока нет?

Нет, может в интернете что-то и найдется. denis2000

Спасибо. sad


СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
 
Поиск: