Модостроение. Создание и редактирование локаций
|
|
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 за это полезное сообщение: |
|
|
Niafa | Дата: Пт, 07.06.2013, 20:09 | Сообщение # 196 |
Отмычка
Вольные сталкеры
Сообщений: 42
| Нашёл плагин от Neo, заюзал. Лока подгрузилась. Как я читал, плагин выдаёт то, что было экспортировано с Майки\Макса. Значит GSC экспортировали весь кардон одной моделью. Печально, т.к. вопрос с группами сглаживания остаётся открытым. Плагины экспорта не поддерживают максовские группы. Точнее, не поддерживают больше одной группы. По моим наблюдениям, либо группа есть (1) либо нет. Таким образом можно привести локу в более- менее божеский вид. Буду экспериментировать. Возможно проще будет при обратной сборке экспортировать объекты по отдельности. Но работы выходит очень много. Возможно, легче изучить майку...
gamer, видео нашёл, спасибо. Буду изучать. Может там есть ответ на этот вопрос.Добавлено (07.06.2013, 20:09) --------------------------------------------- Доброго времени суток. Снова пишу с просьбой о совете. Ниже будет несколько вопросов, помогите, пожалуйста, объяснением или ссылкой на толковый ответ. 1. Вопросы о HOM объектах. 1.1 Насколько я видел на картах GCS, чаще всего стенки замкнуты. Есть ли смысл в незамкнутых НОМах. 1.2 Как вообще работает отсечени объектов при работе с НОМами? И удаляются только динамические объекты, или статика тоже? 1.3 Чем НОМы по сути отличаются от секторов и порталов?
2. Шейдеры. 2.1 Долго пытался разобраться с тем, что это вообще такое. Видимо в чистом 3д и в сталкере понятие означает разные вещи. Из того, что понял, в сталкере шейдер отвечает за обработку света и каким- то образом влияет на текстуры. Где-нибудь есть более-менее точное распределение, за что отвечает шейдер, а за что Material и Compile при компиляции карты? 2.2 В уроках Андрея Непряхина на локацию в максе накладываются текстуры. Отдельно потом генерируется маска. Затем назначаются шейдеры, после чего текстуры на стыках "перетекают" друг в друга. Это тоже фича шейдеров? Тогда зачем маска? И зачем нам текстуры террейна (именно одной текстурой террейн всей локации) если мы и так уже каждому куску террейна назначили свою текстуру?
3. Компиляция. Есть ли где-то более подробное описание, что компилируется на каждом из уровней. Например, что не компилируется на Draft?
4. MU-объекты или модели. Что это такое ?
Заранее благодарю за любую помощь.
|
|
|
Эти 0 пользователя(ей) поблагодарили Niafa за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 07.06.2013, 22:10 | Сообщение # 197 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| 1. Вопросы о HOM объектах. Если просто: 1.1. НОМ. Статические объекты закрытые НОМ-ом не обрабатываются, НОМ должен быть как можно более простым полигональным объектом с максимальной поверхностью. 1.2. Сектора и порталы. При нахождении в каком либо секторе не обрабатываются статические объекты из других секторов кроме тех что видны через порталы. Порталом может быть только плоская поверхность. На сталкерине статья: SDK SoC - уроки по работе с Shadow of Chernobyl SDK. Создаём HOM, порталы и сектора
2. Шейдеры. Если просто - шейдеры, это пост обработка изображения (после построения базовой геометрии, наложения текстур и первичной обработки света и теней). Шейдерной обработкой занимается видеокарта (раньше это делал ЦП). Есть геометрические, вертексные и пиксельные, первые обработка геометрии объекта (как правило - эффекты водной поверхности), вторые работа объектом на уровне вершин геометрии и третьи на уровне его текстур (прозрачность и т.п.). Compile - это шейдерные настройки этапа компиляции (например "проходимость" объекта, накладываются на него текстуры или нет, оптимизировать ли наложение текстур, использовать ли вертексное освещение, обрабатывать ли тени) Material - некоторые физические параметры поверхности и взаимодействия с другими объектами. Для подробностей смотрите настройки в Shader Editor. Шейдеры - закладка Engine, Compile - Compiler, Material - Material, Взаимодействие материалов - Material Pair
Манипуляции по созданию единой текстуры террейна, как раз, нужны для того, чтобы не было резких переходов между отдельными текстурами поверхностей.
3. На Draft-е не компилируется в полной мере освещение (плюс лайтмапы) и тени.
4. MU-модели (в игре) - это статические объекты карты с регулируемым вплоть до "фанерных" задников уровнем детализации. хранятся в level.geom в виде однократно заданной эталонной геометрии и набора мест расположения (матрица + координаты каркаса для задника). такая схема экономит память и обеспечивает выполнение требования D_TREE-шейдеров касательно начала координат. смысл прозрачный: деревья/кусты должны колебаться от ветра, да не как попало, а от земли. вот поэтому исходные модели (.object-ы) крупной растительности всегда растут из начала координат. По поводу уровня детализации. x-ray использует алгоритм плавного изменения детализации геометрии (конкретно -- sliding window progressive meshes). то есть на этапе компиляции для MU-моделей рассчитываются (подробнее ищите по qslim) и сохраняются (в компактном виде) все упрощённые модели. во время рисования выбирается наиболее подходящий вариант либо вовсе фанерный задник (то есть level_lods.dds).
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
aka_sektor | Дата: Сб, 08.06.2013, 22:19 | Сообщение # 198 |
Гражданский
Пользователи
Сообщений: 8
| Декомпилировал локацию, открыл в SDK 0.4, в log'е написало, что не хватает некоторых объектов. Я их добавил в level_editor\gamedata Снова открыл локу, в log'е пишет ошибки: Код ERROR: Invalid breakable object: 'physics\large_trash\koleso_01' ERROR: Invalid breakable object: 'physics\shkaf\shkaf_4' ERROR: Invalid breakable object: 'physics\large_trash\katushka_01' Кто сталкивался, подскажите, как исправить?
Те кто играют уже не забудут
|
|
|
Эти 0 пользователя(ей) поблагодарили aka_sektor за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 10.06.2013, 19:22 | Сообщение # 199 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| aka_sektor, Варианты: 1. Удалите кривые объекты 2. Замените на аналогичные из библиотеки объектов SDK 3. Исправьте в редакторе (что править зависит от причин кривости).
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
gamer | Дата: Чт, 13.06.2013, 19:47 | Сообщение # 200 |
Новичок
Пользователи
Сообщений: 82
| EParticlesObject: '' not found in library-ето что означает?
Партикл отсутствует в библиотеке. Удалите, замените на аналогичный или добавьте требуемый в библиотеку. denis2000
Где можно почитать как назначать текстуры в SDK допустим чтоб тектуре досок неназначить землю?
Когда назначаются текстуры их видно в маленьком окне, к тому же текстуры земли и дерева в разных папках - перепутать невозможно. denis2000
С 3d max-ом розобрался 1шаг есть.Просто плохо задал вопрос.Меня интерисует команды которые находятса в SDK Object propertis:Sharder,Compile,Gate Mtl.Google не помог или плохо искал.В етом деле нужна помощ
Если вопрос по общему назначению Шейдеров и материалов то ответ несколькими постами выше, а если по конкретным комбинациям для разных материалов, то на сталкерине (ссылка в шапке) есть подробная таблица. denis2000
|
|
|
Эти 0 пользователя(ей) поблагодарили gamer за это полезное сообщение: |
|
|
Игорь_Го | Дата: Вс, 16.06.2013, 11:20 | Сообщение # 201 |
Отмычка
Пользователи
Сообщений: 26
| Всем привет. В папках с уровнями естьпапка с 2-мя файликами террейна (например, terrain_escape, terrain_escape_lm), оба с альфа-каналом, отсель вопрос: для чего нужен terrain_escape_lm и какую ф-цию выполняет альфа в terrain_escape?
При билде эти файлы, ессно, стираются.
Вопрос возник потому, что переделав кордон (террейн, маску, озеленение в папке gamedata\textures\terrain), прописав все шейдеры и прочее в СДК, в игре я получил картинку старого террейна (?!), пока не запихнул в папку уровня свою картинку террейна (без альфы, как и в текстурах).
|
|
|
Эти 0 пользователя(ей) поблагодарили Игорь_Го за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 16.06.2013, 15:42 | Сообщение # 202 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (Игорь_Го) для чего нужен terrain_escape_lm Это текстура - лайтмап (карта освещенности), показывает насколько осветлить базовую текстуру для эффекта освещения данного участка террейна статическими источниками света, работает только для R1 и R2. Рассчитывается при компиляции уровня LC. Цитата (Игорь_Го) какую ф-цию выполняет альфа в terrain_escape Отражающая способность текстуры, чем ближе альфа к белому тем больше света отражает поверхность с этой текстурой. Альфа-канал в этой текстуре так же рассчитывается при компиляции уровня LC.Добавлено (16.06.2013, 15:42) ---------------------------------------------
Цитата (Игорь_Го) (террейн, маску, озеленение в папке gamedata\textures\terrain), прописав все шейдеры и прочее в СДК, в игре я получил картинку старого террейна (?!) Все правильно в SDK папка gamedata\textures\terrain в игре gamedata\levels\<имя уровня>\terrain
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
stalker343 | Дата: Вс, 16.06.2013, 22:34 | Сообщение # 203 |
Гражданский
Пользователи
Сообщений: 7
| Всем привет. Знаю, что этот вопрос был уже задан не раз, но все же: как скомпилировать карту под формат SDK. Все делал так, как было написано в шапке. Пробовал и нас SDK 0.8 (там нету папки level_editor), и на 0.4, все одно - ошибка. Вот что у меня выходит:
C:\Users\Администратор\Desktop\converter>converter -level l03u_agr_underground - out l03u_agr_underground -mode le -with_lods log started (console only) path $sdk_root$ does not exist path $game_data$ does not exist path $game_config$ does not exist path $game_textures$ does not exist path $maps$ does not exist path $objects$ does not exist
C:\Users\Администратор\Desktop\converter>pause Для продолжения нажмите любую клавишу . . .
Кстати, у вас в шапке написано в converter.ini ; 3456+ (Clear Sky включая обновления) [3456_config]:2947_config а у меня: [test_config]:2947_config Подскажите, что не так, пожалуйста.
Сообщение отредактировал stalker343 - Вс, 16.06.2013, 22:37 |
|
|
Эти 0 пользователя(ей) поблагодарили stalker343 за это полезное сообщение: |
|
|
Игорь_Го | Дата: Пн, 17.06.2013, 08:04 | Сообщение # 204 |
Отмычка
Пользователи
Сообщений: 26
| denis2000, благодарю за ответ!
Для благодарности есть кнопка под постом, пользуйтесь ею. denis2000
stalker343, вот страничка с видеоуроками, где есть и компиляция, и декомпиляция в формат СДК, и настройка путей конвертера::
http://www.youtube.com/user/genior2011?feature=watch
|
|
|
Эти 0 пользователя(ей) поблагодарили Игорь_Го за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 17.06.2013, 20:56 | Сообщение # 205 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| stalker343, В файле fsconverter***.ltx не верно указан путь к директории SDK. В коммандной строке для распаковки не указана версия игры или билда (номер сборки), по дефолту работает билд 2947 (ТЧ 1.0004) Напоминаю формат командной строки конвертора: Код converter -level <номер сборки>:<имя_карты> [-out <имя_сцены>] [-mode maya|le|le2]
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
stalker343 | Дата: Пн, 17.06.2013, 21:17 | Сообщение # 206 |
Гражданский
Пользователи
Сообщений: 7
| Снова здравствуйте. denis2000, Игорь_Го большое спасибо, разобрался. Теперь вот другая проблема: при попытке нажать Scene-Validation ловлю вылет такого типа: *ERROR: Scene has '198' non associated face! - scene object: 'statics\shkaf\cabinet_child_350x200_01' [O:'statics\shkaf\cabinet_child_350x200_01', M:'cabinet_child_350x200_01'] Удалял объекты из-за которых выдает ошибку, но все же решил узнать, как можно по-другому обойти данный вылет. Заранее благодарю. У меня SDK 0.7.
|
|
|
Эти 0 пользователя(ей) поблагодарили stalker343 за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 17.06.2013, 21:49 | Сообщение # 207 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (stalker343) *ERROR: Scene has '198' non associated face! Эта ошибка означает, что сцена имеет один или несколько полигонов (а скорее это целые объекты) не отнесенных ни к одному из сектров. Для устранения подключите указанные объекты к соответствующим секторам (при необходимости пересчитайте порталы). Если что, видеоуроки по SDK можно смотреть здесь.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
yakuti | Дата: Вт, 18.06.2013, 17:23 | Сообщение # 208 |
Отмычка
Пользователи
Сообщений: 46
| можно ли оторвать локации от cops level pack не трогая гейм.граф?
|
|
|
Эти 0 пользователя(ей) поблагодарили yakuti за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 18.06.2013, 17:56 | Сообщение # 209 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| yakuti, Только если будете использовать их как мультиплеерные.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
9vova8 | Дата: Пн, 24.06.2013, 22:02 | Сообщение # 210 |
Новичок
Пользователи
Сообщений: 91
| Всем доброго времени суток, я добавил Кордон к ЗП по инструкции от tracker`a и добавил его изображение на глобальной карте, но если находиться на самой локации, то мини-карта пуста и в ПДА тоже пусто (глобальной карты вообще нет). Что делать? Спасибо.
|
|
|
Эти 0 пользователя(ей) поблагодарили 9vova8 за это полезное сообщение: |
|
|
|