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


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


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

Всем привет. У меня проблемс. Я не понимаю, что делать и где искать.
Quote
Так же в папке портируемого уровня появится файл level.ai10,

Где он должен появиться?

Добавлено (05.02.2012, 13:55)
---------------------------------------------
И еще дальнейшая проблема с вертексами:

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

Так у меня как раз нет acdccop.pl, аcdc_levels_info.cfg , а в папке stkutils нет level.pm есть только: level_gct.pm и level_game.pm но в них нет никаких вертексов.


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


Сообщение отредактировал dmitry778 - Вс, 05.02.2012, 13:00
 
denis2000Дата: Пн, 06.02.2012, 22:28 | Сообщение # 17
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Quote (dmitry778)
Где он должен появиться?

Ты сам ответил цитатой на свой вопрос: папке портируемого уровня, а если его там нет то читай инструкцию внимательнее.

Quote (dmitry778)
есть только: level_gct.pm и level_game.pm но в них нет никаких вертексов.

guids.ltx за них.


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

Quote (denis2000)
guids.ltx

Так и его у меня нет! sad

Добавлено (08.02.2012, 09:51)
---------------------------------------------

Quote (denis2000)
Ты сам ответил цитатой на свой вопрос: папке портируемого уровня, а если его там нет то читай инструкцию внимательнее.

Читал. Но у меня не появляется эта папка.


СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
 
XOBAHДата: Ср, 08.02.2012, 12:15 | Сообщение # 19
Техник Вольных
Вольные сталкеры
Сообщений: 912
Награды: 21
Репутация: [ 991 ]

dmitry778, Файл level.ai10 должен появиться в папке SHOC\gamedata\levels\[LEVEL_NAME]\ (где SHOC - игра, из которой переносите уровень)
В universal acdc (ссылку на него вчера выкладывал в ветке ПО моддинга) используется файл guids.ltx Сей файл появляется после распаковки all.spawn


 
RomalДата: Чт, 09.02.2012, 18:50 | Сообщение # 20
Отмычка
Пользователи
Сообщений: 40
Награды: 0
Репутация: [ 0 ]

Может кто подсказать. У меня проблема с переносом локации Рыжий лес (да и любой) с ЧН в ЗП.
Всё сделал так как написано в учебнике. Прописано всё правильно. Но земля и асфальт прозрачный (будто и нет вообще).
А текстуры урны и железных сооружений некоторых с какими то буквами. Текстуры проверял, всё на месте. В логе ошибок нет, связанных с этой локацией. Да и вылетов не было.
В чём может быть проблема? Если нужен скрин, то сделаю.
 
XOBAHДата: Чт, 09.02.2012, 20:01 | Сообщение # 21
Техник Вольных
Вольные сталкеры
Сообщений: 912
Награды: 21
Репутация: [ 991 ]

Romal, По поводу террейна: Читаем урок из КМБ и узнаем про то, что необходим THM файл к текстуре
По поводу записей на текстурах: Это "неудаленный" мусор из ЗП. Нужно заменять текстуры из ресурсов ЧН


 
RomalДата: Чт, 09.02.2012, 20:40 | Сообщение # 22
Отмычка
Пользователи
Сообщений: 40
Награды: 0
Репутация: [ 0 ]

XOBAH, а оригинальные локации при замене текстур не пострадают?
Кстати, спасибо за подсказку. Проверю все THM файлы.
 
XOBAHДата: Чт, 09.02.2012, 22:22 | Сообщение # 23
Техник Вольных
Вольные сталкеры
Сообщений: 912
Награды: 21
Репутация: [ 991 ]

Romal, Если будете заменять только мусор - то нет

 
RomalДата: Чт, 09.02.2012, 23:25 | Сообщение # 24
Отмычка
Пользователи
Сообщений: 40
Награды: 0
Репутация: [ 0 ]

XOBAH, спасибо, всё вышло.
А как в файле game_maps_single вывести на карту ПДА локацию? Я пробовал оставлять как есть, но она Затон покрывает.
А если меняю параметры, то или исчезает или растягивается. Хочу слева от Затона втиснуть её.

В общем какие числа за что отвечают хотя бы скажите?

[red_forest]
global_rect = 307.0, 90.0, 717.0, 500.0
 
denis2000Дата: Пт, 10.02.2012, 23:49 | Сообщение # 25
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Romal, Вот ссылка на подробную инструкцию если на народе не качает.

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

Скажите как сделать что-бы на новой локации ГГ по лестнице лазил?

Если локация пренесена из другой игры (мода) и там была эта возможность то в all.spawn будут объекты типа climable_object, если такой возможности изначально не было, то ее можно дбавить отредактировав локацию в SDK разместив в нужных местах объекты fake_object/fake или fake_object/ladders и скопилировать. denis2000
 
RomalДата: Пн, 26.03.2012, 18:50 | Сообщение # 27
Отмычка
Пользователи
Сообщений: 40
Награды: 0
Репутация: [ 0 ]

При переносе ЧАЭС из ТЧ на ЗП разобрался со всеми вылетами, но почему-то пропала карта в КПК и в логе надпись:
! default LevelMap used for level[l12_stancia]

Графы и прочие параметры подгонял правильно. Но как только зарегистрировал эту карту, так пропала вся карта на КПК. Может не совместима карта с ЗП просто?

Файлы textures\map\map_l12_stancia.dds и textures\map\map_l12_stancia.thm скопировали? XOBAH

Скопировал только вот что: map_aes_1.dds Террайны ещё.
Другого не нашёл. И .thm не было расширения в ТЧ.

Добавлено (26.03.2012, 18:50)
---------------------------------------------
А может карта не видна быть из-за Партиклей ТЧ? Я просто много перенёс их в ЗП. Почти все.

Сообщение отредактировал Romal - Пн, 26.03.2012, 12:35
 
LazurДата: Сб, 07.04.2012, 14:53 | Сообщение # 28
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

Дело было так:
Подключил "Свалку" из ЧН в ЗП, заспавнил для пробы несколько аномалий, работает, решил сделать укрытие от выброса по инструкции тв. Трекера, но вижу вылет:
[cut=Лог]
FATAL ERROR

[error]Expression : !m_error_code
[error]Function : raii_guard::~raii_guard
[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line : 748
[error]Description : ....e.r. - Зов Припяти\gamedata\scripts\se_actor.script:98: attempt to index global 'smart_terrain' (a nil value)

stack trace:[/cut]
проверил, что за скрипт, оказалось, проверкой не находится ли игрок ближе чем 50 метров к смарту закрытому для симуляции. Что сделал не так?

Посмотри КМБ Урок 27. denis2000

Посмотрел, выполнил, вылет прошёл, появился другой после заставки локации, но без лога. Может такое быть из за отсутствия точек спавна для неписей\мутантов?

Проверил, не из за точек вылет был, пытался сделать тайники, как в ЗП (не в контейнерах) вот и получил...


На пыльных тропинках аномальных полей
Заспавнятся наши следы...


Сообщение отредактировал Lazur - Вс, 08.04.2012, 08:33
 
StashДата: Вс, 08.04.2012, 00:05 | Сообщение # 29
Удаленные



что значит этот лог?

Expression : SG
Function : CRender::model_CreateParticles
File : D:\prog_repository\sources\trunk\Layers\xrRenderPC_R1\FStaticRender.cpp
Line : 176
Description : Particle effect or group doesn't exist
Arguments : tests\muhi

Отсутствует партикл tests\muhi. Добавляй в particles.xr. denis2000
 
LazurДата: Ср, 11.04.2012, 17:31 | Сообщение # 30
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

Проблема с СДК 0.7 при попытке открыть уровни "подвис", перетаскивал папку levels из геймдаты, из предыдущей папки, но всё равно не идёт. Как исправить?
P.S. при сохранении пустой карты такая же гадость...

Если переустановка не помогает выкладывай лог. denis2000

Это в папке editors\Log?

По умолчанию - да. denis2000

[cut=level_василий]*** RESET [147 ms]
* Loaded: gamedata\textures\prop\prop_color_g.dds[11064]b
* Loaded: gamedata\textures\prop\prop_color_r.dds[11064]b
* Loaded: gamedata\textures\prop\prop_color_b.dds[11064]b
* Loaded: gamedata\textures\prop\prop_fake_dead.dds[22000]b
* Loaded: gamedata\textures\ui\ui_font_hud_01.dds[65664]b
Scene: cleared
* Unloading texture [prop\prop_color_g] pSurface RefCount= 1
* Unloading texture [prop\prop_color_r] pSurface RefCount= 1
* Unloading texture [prop\prop_color_b] pSurface RefCount= 1
Input: 1
Destroying Direct3D...
* Unloading texture [prop\prop_fake_dead] pSurface RefCount= 1
* Unloading texture [ui\ui_font_hud_01] pSurface RefCount= 1
* RM_Dump: textures : 0
* RM_Dump: rtargets : 0
* RM_Dump: vs : 0
* RM_Dump: ps : 0
* RM_Dump: dcl : 0
* RM_Dump: states : 0
* RM_Dump: tex_list : 0
* RM_Dump: matrices : 0
* RM_Dump: lst_constants: 0
* RM_Dump: v_passes : 0
* RM_Dump: v_elements: 0
* RM_Dump: v_shaders : 0
refCount:pBaseZB 1
refCount:pBaseRT 1
refCount:dwDebugSB 1
D3D: device cleared[/cut]

[cut=xrse_factory_Василий]Initializing File System...
$fs_root$ = D:\torrents\гружено\X-Ray CoP SDK\editors
using fs-ltx fsfactory.ltx
FS: 2178 files cached 0 archives, 626Kb memory used.
Init FileSystem 0.051138 sec
'xrCore' build 0, (null)

CRT heap 0x01920000
Process heap 0x00170000
-----loading gamedata\configs\system.ltx[/cut]


На пыльных тропинках аномальных полей
Заспавнятся наши следы...


Сообщение отредактировал Lazur - Пт, 13.04.2012, 08:54
 
Поиск: