Модостроение. Создание и редактирование локаций
|
|
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 за это полезное сообщение: |
|
|
sergej5500 | Дата: Пн, 01.12.2014, 21:02 | Сообщение # 436 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый вечер.
После копирования геймдаты от СГМ 2.1 поверх геймдаты СДК возникла масса жалоб на дублирование секций спавна. Пришлось в секции предметов забивать строки типа $spawn = "respawn\zat_b14_stalker_1". Жалобы на дубликаты пропали. Можно спавнить любые предметы из СГМ.
Возникла другая проблема. При декомпиляции локации вылезает это.
Разборка локаций зависает. Не разбираются даже локи из оригинального ЗП. Можно ли это устранить?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 01.12.2014, 23:43 | Сообщение # 437 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата sergej5500 ( ) Пришлось в секции предметов забивать строки типа $spawn = "respawn\zat_b14_stalker_1" Параметр $spawn показывает, где и как в меню SDK будет появляться предмет (раздел respawn имя zat_b14_stalker_1), поэтому называть все объекты одинаково мягко говоря неправильно и КАЖДАЯ секция предмета/объекта должна иметь уникальное имя, для независимого спавна через SDK.
Цитата sergej5500 ( ) Можно ли это устранить? Причину краша не знаю, возможно проблема решиться правильным именованием предметов, а возможно придется искать, что за предмет без секции в файле actor.ltx...
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Сахар | Дата: Вт, 02.12.2014, 09:15 | Сообщение # 438 |
Гражданский
Пользователи
Сообщений: 2
| Цитата sergej5500 ( ) Разборка локаций зависает. Распаковщику не нравится, какая-та секция в actor.ltx так что замени его файлом из чистой игры всё равно он не на что не влияет в СДК. У меня такой вопрос на локаций Лиманск после сборки или компиляций секторов появляется вот это. [cut][/cut] Просто любопытно, что это. Ещё такой вопрос, в чём отличается черновая сборка Ai сетки от обычной кроме скорости компиляций?Добавлено (02.12.2014, 09:15) --------------------------------------------- Ещё такой вопрос в ТЧ и ЧН сталкеры могли переходить с локаций на локацию посредствам графпоинтов, а в ЗП осталась такая возможность?
|
|
|
Эти 0 пользователя(ей) поблагодарили Сахар за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 02.12.2014, 11:36 | Сообщение # 439 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый день. Спасибо Сахар и denis2000 за совет насчет actor.ltx. Декомпиляция локации прошла успешно. Возникли новые проблемы.
При попытке открыть локацию постоянно вылезает 5 логов.
[cut=Логи]FATAL ERROR [error]Expression : fatal error [error]Function : CInifile::r_section [error]File : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp [error]Line : 475 [error]Description : <no expression> [error]Arguments : Can't open section 'levels'. Please attach [*.ini_log] file to your bug report
stack trace:
FATAL ERROR [error]Expression : fatal error [error]Function : CInifile::r_section [error]File : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp [error]Line : 475 [error]Description : <no expression> [error]Arguments : Can't open section 'global_rect'. Please attach [*.ini_log] file to your bug report
stack trace:
FATAL ERROR [error]Expression : fatal error [error]Function : CInifile::r_string [error]File : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp [error]Line : 486 [error]Description : <no expression> [error]Arguments : Can't find variable caption in [global_rect]
FATAL ERROR [error]Expression : fatal error [error]Function : CInifile::r_section [error]File : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp [error]Line : 475 [error]Description : <no expression> [error]Arguments : Can't open section 'music_tracks'. Please attach [*.ini_log] file to your bug report
stack trace:
FATAL ERROR [error]Expression : fatal error [error]Function : CInifile::r_string [error]File : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp [error]Line : 486 [error]Description : <no expression> [error]Arguments : Can't find variable caption in [music_tracks]
stack trace:[/cut]
При объединении геймдат файлы от СГМ затерли файлы от СДК. Я проверял папку configs через Тотал Коммандер. Вроде все секции на месте. СГМ у меня не вылетает с такими логами.
Из-за этих логов невозможно собрать новый all.spawn после правки локаций.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Сахар | Дата: Вт, 02.12.2014, 11:53 | Сообщение # 440 |
Гражданский
Пользователи
Сообщений: 2
| sergej5500, Проверь файлы game_maps_single.ltx и game_levels.ltx возможно они у тебя «побились» или где-то опечатка скорее даже опечатки..
Сообщение отредактировал Сахар - Вт, 02.12.2014, 12:22 |
|
|
Эти 0 пользователя(ей) поблагодарили Сахар за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 02.12.2014, 23:16 | Сообщение # 441 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата Сахар ( ) У меня такой вопрос на локаций Лиманск после сборки или компиляций секторов появляется вот это. Это ребро полигона, вероятно в этом месте располагается портал между секторами... В общем зеленый и ладно. Цитата Сахар ( ) Ещё такой вопрос, в чём отличается черновая сборка Ai сетки от обычной кроме скорости компиляций? В полной рассчитывается дополнительно укрытия для ИИ, с учетом материалов их свойств и точек освещения. Цитата Сахар ( ) ТЧ и ЧН сталкеры могли переходить с локаций на локацию посредствам графпоинтов, а в ЗП осталась такая возможность? Судя по тому, что локации все также связаны в единый граф с вероятностью 99% осталась. sergej5500, Файл game.ltx не потер?
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Игорь_Го | Дата: Вт, 06.01.2015, 16:46 | Сообщение # 442 |
Отмычка
Пользователи
Сообщений: 26
| Всем привет! Делаю локацию и заметил маленькую "пакость" - визуальную деформацию объектов в игре. Напр., нарисовал в реальных размерах ж\д платформу, а в игре она, если стоять на ней, получается длинной и узкой. Вопрос: как избавиться от таких узкостей? Кажется, что это связано с шириной угла зрения камеры - как этот угол регулировать? Или причина в другом?
|
|
|
Эти 0 пользователя(ей) поблагодарили Игорь_Го за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 06.01.2015, 17:51 | Сообщение # 443 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Игорь_Го, В SDK отображается нормально? Угол зрения регулируется правками рендера, посмотрите в интернете патчи для файлов xrRender_R***.dll
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Игорь_Го | Дата: Вт, 06.01.2015, 19:39 | Сообщение # 444 |
Отмычка
Пользователи
Сообщений: 26
| denis2000, сейчас посмотрел в SDK - тоже как-то узковато, хотя размеры реальные. Вот скрин http://rghost.ru/60172797
|
|
|
Эти 0 пользователя(ей) поблагодарили Игорь_Го за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 06.01.2015, 20:08 | Сообщение # 445 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Игорь_Го, Честно говоря я не вижу заметных геометрических искажений, интересно взглянуть на скрины из SDK и 3D редактора. Можно конечно снять координаты точек в игре и проверить расстояния между ними.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Игорь_Го | Дата: Чт, 08.01.2015, 10:31 | Сообщение # 446 |
Отмычка
Пользователи
Сообщений: 26
| denis2000, благодарю за ответ. Пока оставлю так, как есть, а когда соберу всю локу, тогда и видно будет
|
|
|
Эти 0 пользователя(ей) поблагодарили Игорь_Го за это полезное сообщение: |
|
|
sergej5500 | Дата: Вс, 11.01.2015, 14:51 | Сообщение # 447 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый день.
Создал в СДК тайник на крыше блокпоста.
Загрузил игру. Увидел это.
Тайник провалился под крышу. Как это исправить?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
makdm | Дата: Вс, 11.01.2015, 15:11 | Сообщение # 448 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата sergej5500 ( ) Тайник провалился под крышу. Как это исправить?
Не знаю как в SDK, но в AC/DC сразу понятно, что и где лежит.
Теперь распакуй all.spawn и посмотри, есть ли данные в секции оружия и боеприпасов для Update части нет-пакета. Если нет, то будет проваливаться, как в твоём случае. Нужно добавить Update часть. [cut noguest=Вроде как-то так] Например AK-74 лежит на земле ( ему проваливаться просто некуда ):
...... ; cse_alife_inventory_item properties condition = 1 upgrades =
; cse_alife_item_weapon properties ammo_current = 90 upd:condition = 1
А это на крыше:
....... ; cse_alife_inventory_item properties condition = 1 upgrades =
; cse_alife_item_weapon properties ammo_current = 90 upd:num_items = 0xf0 upd:force = 4.00722857674118e-011, 1.70314095180868e+028, 7.55454456398952e+031 upd:torque = 1.66350461487101e+022, 2.33178099051656e-009, 4.75617892911845e+030 upd:position = 425.427795410156, 36.571647644043, -40.2149047851563 upd:quaternion = 0, 0, 1, 0 upd:enabled = 1 upd:condition = 1 upd:weapon_zoom = 95[/cut]
Терпение...... И все получится!
Сообщение отредактировал makdm - Вс, 11.01.2015, 15:21 |
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 11.01.2015, 20:48 | Сообщение # 449 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, А вы отключили привязку объектов к АИ-сетке в свойствах?
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Пн, 12.01.2015, 18:11 | Сообщение # 450 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый вечер. Возникли такие вопросы.
Я объединил геймдату СДК с геймдатой СГМ. Теперь со всеми объектами СГМ можно работать в СДК.
ACDC последней версии поддерживает разбивку спавна на level.game и level.spawn. Если я для декомпиляции локации использую полученные файлы, то потом с этой локацией нельзя работать. Невозможно ничего добавить. Глюк СДК.
Если я конвертирую файл alife локации в level.spawn, то с локацией можно нормально работать. Но есть одно "но". На декомпилированной локации нет граф-пойнтов. Соответственно, нельзя собрать новый all.spawn. В принципе, это не очень большая проблема. Можно сделать новые граф-пойнты и потом собрать all.spawn. В связи с этим есть несколько вопросов.
1. Сколько граф-пойнтов достаточно для локации? В видеоуроке по СДК ставили по одному граф-пойнту на один смарт. Но на Затоне 59 смартов и 317 граф-пойнтов.
2. Нужно ли все граф-пойнты привязывать к смартам? Или достаточно привязать к смартам по одному граф-пойнту. Остальные оставить свободными. Можно ли к одному смарту привязать несколько граф-пойнтов?
3. Список смартов для привязки берется из файла game_graphs. Там код такого вида.
[cut=Код][location_0] 000 = "..." 001 = "sim_smart_1" 002 = "sim_smart_2" 003 = "sim_smart_3" 004 = "sim_smart_4" 005 = "sim_smart_5" 006 = "sim_smart_6" 007 = "sim_smart_7" 008 = "sim_smart_8" 009 = "sim_smart_base"
[location_1] 000 = "..." 001 = "ограниченный доступ" 002 = "запрещенный доступ" [location_2] 000 = "..." 001 = "не для игрока"
[location_3] 000 = "..." 001 = "zat_a1" 002 = "zat_a23_smart_terrain" 003 = "zat_b100" 004 = "zat_b101" 005 = "zat_b103_merc_smart" 006 = "zat_b104_zombied" 007 = "zat_b106_smart_terrain" 008 = "zat_b12" 009 = "zat_b14_smart_terrain" 010 = "zat_b18" 011 = "zat_b20_smart_terrain" 012 = "zat_b28" 013 = "zat_b33" 014 = "zat_b38_zat_b38u" 015 = "zat_b39" 016 = "zat_b40_smart_terrain" 017 = "zat_b42_smart_terrain" 018 = "zat_b52_zat_medic_home_smart" 019 = "zat_b53" 020 = "zat_b54" 021 = "zat_b56" 022 = "zat_b5_smart_terrain" 023 = "zat_b7_zat_b7_stalker_raider" 024 = "zat_stalker_base_smart" 025 = "zat_b55" 026 = "zat_sim_1" 027 = "zat_sim_2" 028 = "zat_sim_3" 029 = "zat_sim_4" 030 = "zat_sim_5" 031 = "zat_sim_6" [/cut]
Реально существующие смарты в последней секции. Зачем нужны первые три секции? Если в первые три секции скопировать содержимое четвертой секции, то теоретически возможно привязать граф-пойнт сразу к нескольким смартам. Максимум к четырем. Можно ли так делать?
4. Верно ли, что сталкеры идут от одного граф-пойнта к другому. На Кордоне, подключенном к СГМ от ЧН, они ходят своебразно. От одной точки до другой 20 метров. Непись из симуляции по дороге делает крюк на 40 метров в сторону.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
|