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


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


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

Добрый День. Спасибо denis2000 за ценные советы. Все оригинальные локации ЗП проходят проверку на Validate.
Есть пока неустранимая ошибка при компиляции Юпитера. SDК ругается на нехватку памяти. Как я понял, правленые локации после изменений хранятся в C:\Program Files (x86)\X-Ray CoP SDK\editors\gamedata\levels.
Для запуска компиляции карты, сетки, спавна в этой папке должны быть все распакованные локации, которые планируется включить в сборку или достаточно только изменённых? При попытке запуска компилятора сетки вылезает ошибка:
[cut=лог]FATAL ERROR

[error]Expression : F
[error]Function : xrLoad
[error]File : D:\prog_repository\sources\trunk\utils\xrAI\compiler_load.cpp
[error]Line : 211
[error]Description : There is no file 'build.prj'!

stack trace:[/cut]
Я пока не могу скомпилировать Юпитер и файла build.prj для Юпитера у меня нет.


Сообщение отредактировал sergej5500 - Вс, 18.11.2012, 17:21
 
denis2000Дата: Пн, 19.11.2012, 01:18 | Сообщение # 77
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, "Правленые" локации, впрочем, как и не правленые в формате SDK, хранятся в папке X-Ray CoP SDK\editors\rawdata\levels (файл <Имя_локации>.level + одноименная папка), "билднутые" (файлы bild.***) и скомпилированные локации (файлы level.***) хранятся в папке X-Ray CoP SDK\editors\gamedata\levels\<Имя локации>

Для запуска компиляции карты в папке X-Ray CoP SDK\editors\gamedata\levels\<Имя локации> должны быть файлы build.aimap (аи-сетка, файл обязателен для локаций одиночной игры), build.cform (файл геометрии локации, обязателен), build.lights (файл расчета освещения, обязателен), build.prj (файл собранного проекта локации, результат работы Build, обязателен), build.details (файл объектов детализации: травы и т.п., необязателен)

Для запуска компиляции аи-сетки в папке X-Ray CoP SDK\editors\gamedata\levels\<Имя локации> должен быть файл build.aimap, на выходе получиться файл level.ai.

Для запуска сборки all.spawn соответствующем образом должны быть настроены файлы game_graphs.ltx, game_levels.ltx, game_maps_single.ltx в папках X-Ray CoP SDK\editors\gamedata\levels\<Имя локации> должны быть файлы level.ai и level.spawn на выходе получиться файл ***.spawn в папке X-Ray CoP SDK\editors\gamedata\spawns

Добавлено (19.11.2012, 01:18)
---------------------------------------------
Quote (sergej5500)
Есть пока неустранимая ошибка при компиляции Юпитера. SDК ругается на нехватку памяти.

Попробовал, декомпилировать карту Юпитер и открыть в SDK. При Build-е действительно вылетает с ошибкой Out of memory. Происходит это на этапе обработки LOD текстур. При попытке пересоздать LOD текстуры вручную, SDK вылетел на объекте jupiter_lod0003.object. Убрал данные объекты с локации (это к стати требуха висящая в дверных проемах) и теперь Билд проходит, однако там еще есть одна ошибка геометрии на которую ругается Make Game и Build. И наверняка будут еще ошибки геометрии на этапе компиляции.
Вывод: указанные объекты битые их нужно или исправить в 3D редакторе или заменить на аналогичные исправные или просто удалить.


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

denis2000
Ещё раз спасибо за подсказку по lod0003 на Юпитере. Возникла пара вопросов.
1. Хочу декомпилировать Кордон для Зова Припяти. Откуда его предпочтительнее брать: из ТЧ или ЧН. С какой игрой меньше будет проблем?
2. Сделал мелкие изменения в 5 оригинальных локаций ЗП в SDK. Имею 5 билдов локаций. Как из них сделать gamedata, пригодную для вставки в игру. Можно ли найти последовательность шагов для сборки gamedata.
 
denis2000Дата: Чт, 22.11.2012, 00:21 | Сообщение # 79
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500,
1. Какая вам больше приглянется, хоть из билдов берите.
2. Многое определяет характер изменений. На нашем форуме есть видеоуроки, на инсайде (ссылка в шапке) тоже есть несколько достаточно подробных инструкций, приводить их здесь смысла не имеет.


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

Всем привет.
У меня затык с привязкой локации из ТЧ в ЧН. Локацию перенес с помощью проги АМК, а тетеперь не могу прописать ей гейм_вертекс_ид. Вот цитаты из уроков:
Цитата
Далее нужно подогнать вертексы. Для этого запускаем ggTool.bat, ждем некоторое время, после чего в parse_lvids.ltx появляются имена локаций, а рядом с ними числа. Смотрим это число рядом с нашей локацией (в ЧН это скорее всего будет 1620, а в ЗП 934). Далее разворачиваем alife_ файл с нашей локацией, ищем там строку game_vertex_id и пишем там число, которое появилось рядом с нашей локацией при запуске батника ggTool.

Цитата
Теперь подгоним game_vertex_id. Если вы добавляете локацию из чистой игры или какой либо сборки, не
модифицируя её (то есть не компилируете её, например, после декомпиляции и правки, или это
самостоятельно сделанная локация), то диапазон значений game_vertex_id, проще говоря секторов, на
которые поделена вся локация, известен и не изменится. Открываем acdc, которым вы распаковывали
all.spawn. В зависимости от версии acdc, данные о вертексах находятся в файлах acdccop.pl, acdc_levels_info.cfg
или stkutils/level.pm, в виде одной из таких структур:

Но у меня не получается этот шаг. ггТул куда бы я его не тыкал не дает нужного результата (может подскажите где он должен быть?). А acdccop.pl, acdc_levels_info.cfg или stkutils/level.pm у меня вообще нет. Подскажите привильный ход действий. Спасибо.


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

dmitry778, Найдите версию где эти файлы есть. ggTool работает с файлом section4.bin или graph.bin (настройте батник правильно на тот файл, который вы получите в результате декомпиляции all.spawn и редактирования программой от АМК)

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

denis2000, У меня после де компиляции ал.спавна от ЧН получилась папка UnPack, в ней есть файл section4.bin, батник ggTool.bat настроен так: ggTool.pl section4.bin > parse_lvids.ltx. По сути он должен работать но не работает. Я закидываю в папку с section4.bin прогу ggTool, запускаю ggTool.bat после создается файл parse_lvids.ltx как и должно быть, но этот файл пуст. Может какие другие должны быть настройки батника?

Добавлено (23.12.2012, 20:09)
---------------------------------------------

Цитата (denis2000)
Найдите версию где эти файлы есть

Версию АСДС?


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

Цитата (dmitry778)
настроен так: ggTool.pl section4.bin > parse_lvids.ltx. По сути он должен работать но не работает.

Поздравляю команда ggTool.pl section4.bin > parse_lvids.ltx означает запустить ggTool.pl дать ему на обработку файл section4.bin и результат работы вместо консоли отправить в файл parse_lvids.ltx. Есть только одно НО в Win 7 и вероятно в Vista этот метод не работает из-за каких-то глюков командного процессора. Выход убрать > parse_lvids.ltx и читать вывод с консоли, а не из файла.
Цитата (dmitry778)
Версию АСДС?

Да естественно.


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

А подробней можно? Я впервые вот и туплю. smile Я убрал из батника > parse_lvids.ltx Потом запустил прогу, я где икать результат?

У меня нет АСДС для 1,5,10


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

dmitry778, Консоль - это то черное окно (точнее виртуальная консоль - но это не важно) которое откроется после запуска программы, чтобы оно не закрылось после отработки программы в новой строке батника добавь pause

Вот ACDC из моих закромов.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Red_DevilДата: Пн, 24.12.2012, 10:12 | Сообщение # 86
Гражданский
Пользователи
Сообщений: 10
Награды: 0
Репутация: [ 0 ]

Всем привет. А у меня проблема с открытием ggEditor_01 при запуске пишет: "Ошибка при инициализации приложения (0хс0000135). Подскажите в чем беда?
По урокам все сделал как написано. Осталось запустить ггЭдитор и перенести локу, а он не хочет. (работаю на Вин ХР).

Может программа скачалась/распаковалась с ошибкой? denis2000


 
sergej5500Дата: Ср, 26.12.2012, 13:47 | Сообщение # 87
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Всем Добрый День!
На АМК Теам обнаружил интересное сообщение. Как я понял, чтобы избежать вылетов по нехватке памяти, пользователь CuJIbBEP поделил локацию Болота из ЧН на 9 частей, и затем собрал их вместе. Возможно ли в SDK 0.7 поделить локацию, например, Кордон на части? Можно ли поделить локацию средствами SDK, или понадобятся посторонние утилиты? Можно ли будет затем компилировать локацию по частям, или понадобится компиляция целиком? Можно ли в SDK объединить части локации в единое целое? Или моё предположение ошибочно? Заранее благодарен за советы.
 
denis2000Дата: Ср, 26.12.2012, 14:18 | Сообщение # 88
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Насколько я понимаю он разделил единый 3D объект - террейн на 9 отдельных 3D объектов и получил нормальную компиляцию карты без вылетов компилятора с сообщением о нехватке памяти.

Работа с объектами - это естественно 3D редактор!


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
FantomICWДата: Вс, 06.01.2013, 00:16 | Сообщение # 89
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

Здравствуйте! У меня два вопроса.
1. Я добавляю в Сталкер ЗП локации из первых двух частей. Есть ли разница между добавлением локаций из ЧН и добавлением локаций из ТЧ?
2. Как на карте отобразить иконку точки перехода между локациями?





Сообщение отредактировал FantomICW - Вс, 06.01.2013, 00:16
 
denis2000Дата: Вс, 06.01.2013, 01:29 | Сообщение # 90
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата (FantomICW)
Есть ли разница между добавлением локаций из ЧН и добавлением локаций из ТЧ?

Конечно есть и существенная. Смотри КМБ Урок 8.

Цитата (FantomICW)
Как на карте отобразить иконку точки перехода между локациями?

Я так думаю, нужно убрать silent_mode = 1 из секции ченджера в all.spawn

Не совсем:
silent_mode = 1 - будет "мгновенный" переход по level_changer,
silent_mode = 0 - будет вызвано диалоговое окно подтверждения перехода (как это было в ТЧ\ЧН), но текстур сего диалогового окна в ЗП нет.
Касаемо отметки, как один из вариантов описан в: Сборник модостроения -> ЗП -> Скрипты -> #9.
PS: Только функцию суйте не в actor_binder:update(delta), а в actor_binder:net_spawn(data) (ибо неправильно)
XOBAH


Ну да точно silent_mode - "тихий" режим, не задавать вопросов. Тогода указанным ХОВАН-ом скриптом.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Форум » Моды для игр » Модостроение » Модостроение. Создание и редактирование локаций
Поиск: