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


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
SandwichДата: Сб, 20.04.2013, 11:56 | Сообщение # 181
Зам. Лидера «Свободы»
Свобода
Сообщений: 4340
Награды: 16
Репутация: [ 431 ]

gamer,Почитай урок КМБ урок №8 подробную инструкцию,там написано как прикрутить локацию,сделать её видимой на карте и т.д.

А колбасу и батоны нынче хреновые стали делать! (Умнейший неизвестный сталкер)


Сообщение отредактировал Sandwich - Сб, 20.04.2013, 12:04
 
gamerДата: Сб, 20.04.2013, 21:06 | Сообщение # 182
Новичок
Пользователи
Сообщений: 82
Награды: 0
Репутация: [ 0 ]

Получилось и подключить и на карте видно взялся за другие локи и вылет.дайте совет что может быть

[cut noguest=лог]* [prefetch] time: 16784 ms
* [prefetch] memory: 77944Kb
! Unable to find Software\GSC Game World\STALKER-COP\ in registry
! Player name registry key (InstallUserName) not found !
* phase time: 17412 ms
* phase cmem: 188364 K
* phase time: 9 ms
* phase cmem: 188364 K
* Creating new game...
* Loading spawn registry...
* 6877 spawn points are successfully loaded

FATAL ERROR

Expression : ai().game_graph().header().levels().end() != I
Function : CALifeGraphRegistry::setup_current_level
File : D:\prog_repository\sources\trunk\xrGame\alife_graph_registry.cpp
Line : 87
Description : Graph point level ID not found![/cut]

[cut noguest=лог2]* 6876 spawn points are successfully loaded
* New game is successfully created!
* phase time: 3416 ms
* phase cmem: 233098 K

FATAL ERROR

[error]Expression : !object->used_ai_locations() || ai().level_graph().valid_vertex_id(object->m_tNodeID)
[error]Function : CALifeSwitchManager::add_online
[error]File : D:\prog_repository\sources\trunk\xrGame\alife_switch_manager.cpp
[error]Line : 64
[error]Description : Invalid vertex for object
[error]Arguments : zaton_actor[/cut]

Всё пересмотрел ошибок не нашол (


Сообщение отредактировал gamer - Сб, 20.04.2013, 21:38
 
denis2000Дата: Сб, 20.04.2013, 21:42 | Сообщение # 183
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

gamer, В спавне указан неуществующий game_vertex_id

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
gamerДата: Сб, 20.04.2013, 21:49 | Сообщение # 184
Новичок
Пользователи
Сообщений: 82
Награды: 0
Репутация: [ 0 ]

ggtools мне выдал ети вертексы bar-1096,escape-1116 и 1120 я добавил так { gvid0 => 1116, name => 'level_escape' },
{ gvid0 => 1096, name => 'level_bar' }, плюс дописал в алиф лтх -что не правильно?

Какое отношение имеет приведенная информация к вышестоящему посту? Ищите game_vertex_id вне диапазона вертексов. denis2000

тяжело доходит из фонаря дописать ветекс?

Это как раз и заканчивается: Graph point level ID not found! и Invalid vertex for object. Проверяйте свой спавн на корректность гейм вертексов. denis2000

Спс за подсказку


Сообщение отредактировал gamer - Вс, 21.04.2013, 22:11
 
FREEM@NДата: Вс, 21.04.2013, 15:07 | Сообщение # 185
Легенда Зоны
Свобода
Сообщений: 1031
Награды: 8
Репутация: [ 271 ]

Добавил локу Припять из ЗП в ТЧ, только не могу открыть файл section2.bin, чтобы её туда вписать. Как это можно сделать? Ответьте пожалуйста

Геймграф в файле section4.bin или graph.bin или game.graph, но никак не в section2.bin. Каждый третий пост в этой теме рекомендует КМБ урок №8. denis2000
 
daniyar17Дата: Пт, 03.05.2013, 10:41 | Сообщение # 186
Удаленные



Цитата (denis2000)
silent_mode = 0 - будет вызвано диалоговое окно подтверждения перехода (как это было в ТЧ\ЧН), но текстур сего диалогового окна в ЗП нет.

так и никто не подскажет наверно этот способ нормально вост, можно конечно рестикор поставить на отрисовку окна вокруг левел ченд но это муторно...
на счет отобразить иконки перехода ни знаю я вот например вот так вот вост
берем два файла из распакованого gamedata от ЧН
"game_story_ids.ltx" в папке "configs"
берем еще один файл
"level_tasks.scripts" в папке "scripts"
надо этот level_task привязать bind_stalker

function actor_binder:info_callback(npc, info_id)
printf("*INFO*: npc='%s' id='%s'", npc:name(), info_id)
--' Сюжет
-- Отметки на карте
"после вставить"
level_tasks.process_info_portion(info_id)
end

и наконец находим еще вот такие строчки

if self.bCheckStart then
printf("SET DEFAULT INFOS")
if not has_alife_info("global_dialogs") then
self.object:give_info_portion("global_dialogs")
end
if not has_alife_info("level_changer_icons") then
self.object:give_info_portion("level_changer_icons")
end
self.bCheckStart = false
"после вставить"
level_tasks.add_lchanger_location()

удачи!!! з.ы. строчки "после вставить" не пищем)
 
dendjdnk2010Дата: Сб, 04.05.2013, 07:49 | Сообщение # 187
Гражданский
Пользователи
Сообщений: 21
Награды: 0
Репутация: [ 0 ]

Ребята, доброго времени суток.
Вот в чем вопрос:
Я cоздал карту в СДК, скомпилировал Build.
Теперь надо скомпилировать саму локацию.
Я использую компилятор от бардака.
Запускаю и на этапе Light:Lmaps компилятор очень долго висит, вот на таком месте:
http://floomby.ru/s1/QaDHu9
Так вот вопрос, это нормально, что он не сдвигается с места уже часа 4?
Компилю на качестве High.

Абсолютно нормально если процесс при этом потребляет много памяти и вычислительного времени процессора. Для быстрой проверки локации используйте компиляцию на уровне Draft. denis2000

Спасибо.
denis2000, а вот ещё такой вопрос: Вы не знаете сколько примерно времени требуется, чтобы скомпилировать карту на качестве High, например локацию Кордон?

Измененный кордон, на моей системе 9,5 часов геометрия, 3,5 часа детал-объекты, 5 минут аи-сетка. denis2000


Сообщение отредактировал dendjdnk2010 - Сб, 04.05.2013, 18:50
 
ДовакинДата: Вт, 07.05.2013, 22:30 | Сообщение # 188
Командир д.г. быстрого реагирования
Пользователи
Сообщений: 688
Награды: 14
Репутация: [ 552 ]

Добрый вечер.Вопрос такой : Как смоделированную локацию в 3DS Max вставить в ЗП?Заранее спасибо.

 
denis2000Дата: Вт, 07.05.2013, 23:22 | Сообщение # 189
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

___ToRReNT___,
1. Импортировать меши в формат *.object
2. Собрать и настроить уровень в SDK
3. Скомпилировать в формат движка
4. Вставить


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
kvantДата: Ср, 08.05.2013, 21:53 | Сообщение # 190
Удаленные



Всем доброго времени суток,занимаюсь созданием модификации на сталкер чистое небо.и не могу добавить локации из теней чернобыля. Прошу помочь,а то бился над этим много времени,а результата 0.может кто поможет хоть ссылкой.а то много материала в и-нете перелопатил.и нечего,заранее спасибо и извините если пишу не туда(((

Для начала читаем КМБ Урок 8. denis2000

Добавлено (08.05.2013, 21:53)
---------------------------------------------
Спасибо)занимаюсь)

 
gamerДата: Вт, 04.06.2013, 11:54 | Сообщение # 191
Новичок
Пользователи
Сообщений: 82
Награды: 0
Репутация: [ 0 ]

У меня конвертер выдаёт такой лог
[cut noguest=Лог]item without section at embedded:3
(bug) unexpected code path at ..\xr_ini_.cxx:301

this application has requested the runtime to terminate it in an usually way[/cut]

кто встречался с таким и как сним розобратса?
 
denis2000Дата: Вт, 04.06.2013, 18:04 | Сообщение # 192
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

gamer, Что написано в файле level.ltx декомпилируемого уровня.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NiafaДата: Ср, 05.06.2013, 10:59 | Сообщение # 193
Отмычка
Вольные сталкеры
Сообщений: 42
Награды: 8
Репутация: [ 123 ]

День добрый, форумчане.
Помогите, пожалуйста, советом.

Ситуация: есть декомпилированный Кардон из оригинала.
Цель: Запихнуть террейн в Макс для редактирования геометрии.
Что делал: искал террейн в Левел Едиторе. Нашёл (l01_escape_decompiled_part0003.object). В Актор Едиторе открыл и экспортнул в obj. Здесь заметил неприятный факт. Файл весит 40 почти мегов. И в нём вообще вся геометрия уровня кроме деревьев и камней - дома, вагоны и пр.

Далее: 1. Пытался импортировать obj в макс. Падает ошибка (out of memory) на 60000+ фейсе для 2011 макса и 170000+ фейсе для 2009 макса.
2. Пытался открыть милкой. Вообще никакой реакции.
3. Пытался скриптом Den Stash`a конвертнуть собственно object файл. Вроде экспорт прошёл, но тут сразу две проблемы.
а. Сбиты все группы сглаживания. Геометия выглядит покорёженной и нуждается в доработке вручную, на которую уйдёт уйма времени.
б. Макс часто падает при работе с таким большим файлом.

Собственно вопрос: как нормально экспортировать террейн в макс? Ведь как-то же это делают в модах. Посмотрел вики, КМБ. Вроде ничего не нашёл стоящего.


 
gamerДата: Ср, 05.06.2013, 12:47 | Сообщение # 194
Новичок
Пользователи
Сообщений: 82
Награды: 0
Репутация: [ 0 ]

denis2000 разобрался причина была в прописаном 2раза ; level script file(level.ltx)

Да это вроде типичной проблемы. [b]denis2000[/b]

Niafa, yuo tube запиши вот ето Создание игровой локации и Настройка 3d max для Сталкера.


Сообщение отредактировал gamer - Ср, 05.06.2013, 12:57
 
mizabrikДата: Ср, 05.06.2013, 12:50 | Сообщение # 195
Почетный инженер «Свободы»
Свобода
Сообщений: 360
Награды: 10
Репутация: [ 216 ]

Niafa, AFAIK, разработчики Сталкера использовали Maya, попробуй её. Или проблема в нехватке оперативной памяти, тогда проверь работает ли у тебя файл подкачки.



Сообщение отредактировал VlAleVas - Ср, 05.06.2013, 13:08
 
Поиск: