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


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
denis2000Дата: Вт, 13.01.2015, 19:01 | Сообщение # 451
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500,
То есть применяя
Код
universal_acdc.pl -split all.spawn -out levels -way -use
получаете level.spawn и level.game подкладываете конвертору он успешно декомпилирует, но SDK ругается, а если использовать
Код
universal_acdc.pl -compile all -l
, то естественно графпоинтов нет (их и не может то быть в файле alife_<имя локации>.ltx) и SDK нормально работает.
Выложите файлы декомпилированной локации полученные при декомпиляции локации с файлами level.game и level.spawn полученными разбивкой all.spawn, очень вероятно что файл spawn.part содержит не корректные секции объектов.


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

denis2000,

Для декомпиляяции я использовал оригинальное Чистое Небо с заменой level.game и level.spawn.

Команда для батника декомпиляции converter -level cop:escape -out escape_2 -mode le

Секция в convert.ini

[3870_config]:3456_config
$game_data$ = C:\GSC World Publishing\Ресурс ЗП\gamedata\
$game_levels$ = C:\GSC World Publishing\Ресурс ЗП\levels\
spawn_version = cop

В архиве есть декомпилированная глючная локация, all.spawn сборки и ACDC. На всякий случай положил полную паку configs от СДК. Если потребуются модели и текстуры, то их можно скачать по ссылке Основная часть аддона

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

sergej5500, Как я и думал секции графпоинтов в нормальной распаковке и глючной ОТЛИЧАЮТЬСЯ как по количеству параметров так и по некоторым значениям!
[cut]
Нормально работающая обычный графпоинт (без специальных настроек):
Код
[object_1051]
                  clsid                    = 6
                  co_flags                           = 2
                  flags                    = 0
                  name                    = esc_graph_point_0007
                  position                           = 17.476986, 0.933553, 21.592663
                  rotation                           = 0.118163, -0.006586, 0.055812
                  scale                    = 1.000000, 1.000000, 1.000000
                  type                    = 2
                  version                            = 23
[object_1051_spawndata]
                  000001                             = 1
                  000002                             = "graph_point"
                  000003                             = "esc_graph_point_0007"
                  000004                             = 0
                  000005                             = 254
                  000006                             = 17.476986, 0.933553, 21.592663
                  000007                             = 0.118163, -0.006586, 0.055812
                  000008                             = 0
                  000009                             = 65535
                  000010                             = 65535
                  000011                             = 65535
                  000012                             = 33
                  000013                             = 128
                  000014                             = 65535
                  000015                             = 12
                  000016                             = 0
                  000017                             = 17311
                  000018                             = 0
                  000019                             = ""
                  000020                             = ""
                  000021                             = 0
                  000022                             = 0
                  000023                             = 0
                  000024                             = 0
                  000025                             = 62
                  fl                    = 0
                  name                    = graph_point

Глючная локация обычный графпоинт:
Код
[object_192]
                 clsid                            = 6
                 co_flags                         = 2
                 name                             = escape_graph_point_1790
                 position                         = 35.538956, -2.062803, 9.189672
                 rotation                         = 0.000000, 0.000000, 0.000000
                 scale                            = 1.000000, 1.000000, 1.000000
                 type                             = 2
                 version                          = 23
                   
[object_192_spawndata]
                 000001                           = 1
                 000002                           = "graph_point"
                 000003                           = "escape_graph_point_1790"
                 000004                           = 0
                 000005                           = 254
                 000006                           = 35.538956, -2.062803, 9.189672
                 000007                           = 0.000000, 0.000000, 0.000000
                 000008                           = 0
                 000009                           = 0
                 000010                           = 65535
                 000011                           = 65535
                 000012                           = 33
                 000013                           = 128
                 000014                           = 65535
                 000015                           = 12
                 000016                           = 0
                 000017                           = 52428
                 000018                           = 0
                 000019                           = ""
                 000020                           = ""
                 000021                           = 0
                 000022                           = 0
                 000023                           = 0
                 000024                           = 0
                 fl                    = 0
                 name                             = graph_point

[/cut]
В чем причина этой разницы пока сложно понять, то ли настройки game_graphs.ltx влияют, то ли разбивка all.spawn на level.spawn и level.game некорректно проходит, то ли конвертер что-то неправильно делает, вероятно из-за того, что эта локация была добавлена при помощи склейки геймграфа программой от АМК. В любом случае это не глюк SDK, просто файлы локаций не совсем ему подходят.

Кстати вот примеры файлов game_graphs.ltx:
[cut]
От SP собрано полностью в SDK:
Код
[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    = "test_graph_point_01"
002    = "test_graph_point_02"
003    = "lab_x14_graph_point"
004    = "lab_x14_graph_point_0000"
005    = "level_city_graph_point"
006    = "level_city_graph_point_0000"
007    = "level_city_graph_point_0001"
008    = "level_city_graph_point_0002"

            
      [graph_points_draw_color_palette]
default    = 0x6000ffff     
000_000_000_000  = 0x60ff00ff

От SGM склеено АМК-программой:
Код
[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"
      010        = "darkvalley"
      011          = "military"
      012          = "l04u_labx18"
      013          = "digger_stash"
      014        = "agroprom"
      015        = "agroprom_underground"
      016        = "marsh"
      017        = "escape"
      018        = "red_forest"
           

[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"
      032          = "zat_sim_7"
      033          = "zat_sim_8"
      034          = "zat_sim_9"
      035          = "zat_sim_10"
      036          = "zat_sim_11"
      037          = "zat_sim_12"
      038          = "zat_sim_13"
      039          = "zat_sim_14"
      040          = "zat_sim_15"
      041          = "zat_sim_16"
      042          = "zat_sim_17"
      043          = "zat_sim_18"
      044          = "zat_sim_19"
      045          = "zat_sim_20"
      046          = "zat_sim_21"
      047          = "zat_sim_22"
      048          = "zat_sim_23"
      049          = "zat_sim_24"
      050          = "zat_sim_25"
      051          = "zat_sim_26"
      052          = "zat_sim_27"
      053          = "zat_sim_28"
      054          = "zat_sim_29"
      055          = "zat_sim_30"
      056          = "jup_a10_smart_terrain"
      057        = "jup_a12"
      058        = "jup_a12_merc"
      059        = "jup_a6"
      060        = "jup_a9"
      061        = "jup_b1"
      062        = "jup_b19"
      063        = "jup_b200"
      064        = "jup_b200_tushkan_smart_terrain"
      065        = "jup_b202"
      066        = "jup_b203"
      067        = "jup_b204"
      068        = "jup_b205_smart_terrain"
      069        = "jup_b205_smart_terrain_tushkano"
      070        = "jup_b206"
      071        = "jup_b207"
      072        = "jup_b207_depot_attack"
      073        = "jup_b208"
      074        = "jup_b209"
      075        = "jup_b211"
      076        = "jup_b212"
      077        = "jup_b219"
      078        = "jup_b25"
      079        = "jup_b32"
      080        = "jup_b4"
      081        = "jup_b41"
      082        = "jup_b46"
      083        = "jup_b47"
      084        = "jup_b6_anom_2"
      085        = "jup_b8_smart_terrain"
      086        = "jup_sim_1"
      087        = "jup_sim_10"
      088        = "jup_sim_11"
      089        = "jup_sim_12"
      090        = "jup_sim_13"
      091        = "jup_sim_14"
      092        = "jup_sim_15"
      093        = "jup_sim_16"
      094        = "jup_sim_17"
      095        = "jup_sim_18"
      096        = "jup_sim_19"
      097        = "jup_sim_2"
      098        = "jup_sim_20"
      099        = "jup_sim_21"
      100        = "jup_sim_3"
      101        = "jup_sim_4"
      102        = "jup_sim_5"
      103        = "jup_sim_6"
      104        = "jup_sim_7"
      105        = "jup_sim_8"
      106        = "jup_sim_9"
      107          = "pri_a15"
      108          = "pri_a16"
      109          = "pri_a17"
      110          = "pri_a18_smart_terrain"
      111          = "pri_a21_smart_terrain"
      112          = "pri_a22_smart_terrain"
      113          = "pri_a25_smart_terrain"
      114          = "pri_a28_arch"
      115          = "pri_a28_base"
      116          = "pri_b28_evac"
      117          = "pri_a28_heli"
      118          = "pri_a28_school"
      119          = "pri_a28_shop"
      120          = "pri_b301"
      121          = "pri_b302"
      122          = "pri_b303"
      123          = "pri_b304_monsters_smart_terrain"
      124          = "pri_b305_dogs"
      125          = "pri_b306"
      126          = "pri_b307"
      127          = "pri_b35_mercs"
      128          = "pri_b35_military"
      129          = "pri_b36_smart_terrain"
      130          = "pri_sim_1"
      131          = "pri_sim_2"
      132          = "pri_sim_3"
      133          = "pri_sim_4"
      134          = "pri_sim_5"
      135          = "pri_sim_6"
      136          = "pri_sim_7"
      137          = "pri_sim_8"
      138          = "pri_sim_9"
      139          = "pri_sim_10"
      140          = "pri_sim_11"
      141          = "pri_sim_12"
      142        = "darkvalley"
      143          = "military"
      144          = "l04u_labx18"
      145          = "digger_stash"
      146        = "agroprom"
      147        = "agroprom_underground"
      148        = "marsh"
      149        = "escape"
      150        = "red_forest"
                 
[graph_points_draw_color_palette]
default    = 0x6000ffff     
000_000_000_000  = 0x60ff00ff

[/cut]
Обратите внимание, что в первом случае секции [location_0], [location_1], [location_2] вообще не подвергались правке, а секция [location_3] не содержит имен локаций, а только имена подключаемых к графам других графпоинтов или подкючаемых смартов.

Добавлено (13.01.2015, 21:21)
---------------------------------------------
А теперь подумаем, что со всем этим делать:
1. Вручную править несколько сотен секций в файле spawn.part сложновато и не гарантирует успех (может не только секции графпоинтов отличаются, но и других объектов)
2. Попробовать привести в порядок файл game_graphs.ltx и снова попробовать разбить и декомпилировать
3. Если проблема не в game_graphs.ltx, а в ACDC или конвертере (поскольку они не совсем понимают склеенный геймграф), то решение окажется таким: заново расставить графпоинты и с нуля связать локации переходами.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ДизельДата: Ср, 14.01.2015, 02:24 | Сообщение # 454
Сталкер
Разработчики
Сообщений: 260
Награды: 1
Репутация: [ 136 ]

Извините, может уже был такой вопрос. Почему монстры спавненые в смартах иногда буксуют на месте. То есть бежит на месте. Дело в граф-поинтах?

andreyholkin
 
AndreySolДата: Ср, 14.01.2015, 07:26 | Сообщение # 455
Удаленные



Здравствуйте.
Вопрос по добавлению новой локации в чистую ТЧ. Добавил локацию, сделал переход на нее. Запустил игру, сходил на локацию - все нормально. Начал заселять, и тут попер вылет:
[cut=лог]! Cannot build GAME path! (object dcm_lager_dk_stalker_03)
! CURRENT LEVEL : l30_dead_city
! CURRENT game point position : [-46.838272][1.081451][79.971336]
! TARGET LEVEL : l07_military
! TARGET game point position : [-410.092133][-20.844643][7.337811]
! Target point mask [0][0][0][0]
! Object masks (3) :
! [8][1][255][255]
! [12][1][255][255]
! [255][0][255][255]

FATAL ERROR

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : LUA error: ...k\level_editor\gamedata\scripts\smart_terrain.script:724: C stack overflow[/cut]
Что может быть причиной ? Проверил с помощью ggtool:
[cut=список]l01_escape => 0
l02_garbage => 252
l03_agroprom => 416
l03u_agr_underground => 703
l04_darkvalley => 811
l04u_labx18 => 1109
l05_bar => 1168
l06_rostok => 1308
l08_yantar => 1438
l08u_brainlab => 1529
l07_military => 1546
l10_radar => 1863
l11_pripyat => 2118
l12_stancia => 2274
l12u_sarcofag => 2404
l12u_control_monolith => 2469
l12_stancia_2 => 2519
l10u_bunker => 2663
l30_dead_city => 2794[/cut]вроде нормально все - лока идет последней и с максимальным начальным вертексом.
Правда AI-переходы не делал пока, может это быть причиной ?


Сообщение отредактировал AndreySol - Ср, 14.01.2015, 07:28
 
alex_xp_77Дата: Ср, 14.01.2015, 12:52 | Сообщение # 456
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
Награды: 6
Репутация: [ 41 ]

Цитата AndreySol ()
[error]Arguments : LUA error: ...k\level_editor\gamedata\scripts\smart_terrain.script:724: C stack overflow

Могу сообщить, что вылет по луа, смотрите логику, либо скиньте ее на форум, логику смарта, и логику НПС, тогда будет что посмотреть, такие вылеты обычно бывают из за неправильной логики, либо смарта, либо логики нПС, на всякий, скиньте в скринах логику точки-пути




Сообщение отредактировал alex_xp_77 - Ср, 14.01.2015, 12:54
 
denis2000Дата: Ср, 14.01.2015, 18:02 | Сообщение # 457
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата Дизель ()
Почему монстры спавненые в смартах иногда буксуют на месте. То есть бежит на месте.

Сделайте верификацию АИ-сетки и сразу все поймете.
Сетка состоящая из множества не связанных кусков в общем случае не подходит для локации.


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

Добрый вечер. Провел такой эксперимент.

Разобрал спавн от своей сборки на level.game и level.spawn. Взял пару файлов от Кордона.
Компилятором спавна от СДК собрал спавн из одной локации - Кордон. Полученный спавн разобрал.

Обнаружил следующее.

[cut=Секция из оригинального спавна][esc_utilizator_box_spawn]
points = p0
p0:name = wp00
p0:position = -182.350006103516,-20.2800006866455,-162.5
p0:game_vertex_id = 1620
p0:level_vertex_id = 67494
[/cut]

[cut=Секция из нового спавна][esc_utilizator_box_spawn]
points = p0
p0:name = wp00
p0:position = -182.350006103516,-20.2800006866455,-162.5
p0:game_vertex_id = 45792
p0:level_vertex_id = 4294967295[/cut]

Гейм и левел вертексы приняли фантастические значения. На Кордоне 271 граф-пойнт. Максимальный гейм-вертекс должен быть 270-271. С левел-вертексом вообще непонятная картина. В чем может причина сбоя и можно ли с ним бороться?
 
denis2000Дата: Чт, 15.01.2015, 00:39 | Сообщение # 459
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата sergej5500 ()
В чем может причина сбоя и можно ли с ним бороться?

Где сбой? Собранный спавн работает?


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

Цитата denis2000 ()
Собранный спавн работает?


Из-за этого спавн-пойнта произошел вылет.

[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 : ...hing\Зов Припяти\gamedata\scripts\sgm_battery.script:112: attempt to compare nil with number


stack trace:[/cut]

Вылет из-за батареек. На старте новой игры в стартовой секции рестриктора вызывается функция.

[cut=Функция]function start_game_poratation()
sgm_mechanics.mechanics_update()
sgm_utilizator.utilizator_update()
--sgm_world.sgm_gps_secrets_spawn()
if r_mod_params("bool","create_mines_permition",true) then
sgm_world.spawn_mines()
end
give_info("agreement_check_friend")
sgm_battery.get_battery_manager():initialize()
end
[/cut]

Спавнятся утилизаторы, ящики для запчастей, СГМ-мины и запускается контроль батареек. После замены "неестественных" вертексов на значения в исходной секции с учетом сдвига вертексов вылет пропал.
В первом случае спавн зависал на утилизаторе, до батареек дело не доходило и игра вылетала.
 
denis2000Дата: Чт, 15.01.2015, 01:32 | Сообщение # 461
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Если собираете спавн одной локации, то ид_вертексов могут начинаться не с нуля. Если собираете спавн из нескольких локаций, то не факт что последовательность локаций совпадет и стало быть ид_вертексов могут измениться. А это означает: если изменить все вертексы в скриптах и конфигах SGM ваша локация стартанет и с новым спавном.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ДизельДата: Ср, 21.01.2015, 13:15 | Сообщение # 462
Сталкер
Разработчики
Сообщений: 260
Награды: 1
Репутация: [ 136 ]

Сам задам вопрос и сам отвечу: Почему на одной локации видимость лучше, чем на другой, при одинаковой погоде.

Этот вопрос уже задавался кем то, уже не помню когда, тогда я не знал ответа.

Ответ прост. На локации с хорошей видимостью, применён $env mod из категории спавн-элементов.

$env mod применен на всю локацию. Это очень похоже на спейс-рескриктор или аномалию, короче попробуйте и сами увидите. Работает только на максимальном качестве компиляции.


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

Доброе утро.

На этапе сборки спавна с помощью СДК вылезает лог.

[cut=Лог]FATAL ERROR

[error]Expression : E
[error]Function : CLevelGameGraph::CLevelGameGraph
[error]File : D:\prog_repository\sources\trunk\utils\xrAI\xr_graph_merge.cpp
[error]Line : 207
[error]Description : Can't create entity.
[error]Arguments : m_car


stack trace:[/cut]

Этот самый кар находится в ТД. Секция кара имеется в sistem.ltx и выглядит так. Точно такая же секция в ЧН.

[cut=Секция][m_car]
GroupControlSection = spawn_group
discovery_dependency =
$spawn = "vehicles\car"
cform = skeleton
class = SCRPTCAR

inv_weight = 1000
cost = 100000
inv_grid_width = 1
inv_grid_height = 1

script_binding = bind_physic_object.init[/cut]

[cut=Кар][7920]

; cse_abstract properties
section_name = m_car
name = val_m_car
position = 2.27868294715881, 2.80893611907959, -38.3601608276367
direction = -0.00237999996170402, 0.442820996046066, 0.0110290003940463
id = 65535
version = 128
script_version = 12
spawn_id = 2048

; cse_alife_object properties
game_vertex_id = 934
level_vertex_id = 271667
object_flags = 0xffffffba

; cse_visual properties
visual_name = dynamics\weapons\wpn_mounted\wpn_mounted_btr

; cse_ph_skeleton properties

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[/cut]

Этот кар можно и убрать. Вопрос теоретический. Почему спавн не собирается. Чем СДК не нравится этот самый кар?
 
ДизельДата: Чт, 22.01.2015, 13:53 | Сообщение # 464
Сталкер
Разработчики
Сообщений: 260
Награды: 1
Репутация: [ 136 ]

sergej5500,

Добавлено (22.01.2015, 13:39)
---------------------------------------------
[cut noguest=Твоя спаун не жизнеспособно][7920]

; cse_abstract properties
section_name = m_car
name = val_m_car
position = 2.27868294715881, 2.80893611907959, -38.3601608276367
direction = -0.00237999996170402, 0.442820996046066, 0.0110290003940463
id = 65535
version = 128
script_version = 12
spawn_id = 2048

; cse_alife_object properties
game_vertex_id = 934
level_vertex_id = 271667
object_flags = 0xffffffba

; cse_visual properties
visual_name = dynamics\weapons\wpn_mounted\wpn_mounted_btr

; cse_ph_skeleton properties [/cut]

[cut noguest][46]
; cse_abstract properties
section_name = m_car
name = ostrova_use_btr_6
position = 21.7887706756592,17.6628437042236,-17.6765155792236
direction = 0.000209999998332933,1.56372201442719,0.000306000001728535

; cse_alife_object properties
game_vertex_id = 0
distance = 0
level_vertex_id = 58351
object_flags = 0xffffffb2
custom_data = <<END
[logic]
active = ph_car1

[ph_car1]
usable = true
END

; cse_visual properties
visual_name = physics\vehicles\zaz\veh_zaz_u_01

; cse_ph_skeleton properties

; cse_alife_car properties
health = 1[/cut]

Добавлено (22.01.2015, 13:53)
---------------------------------------------
Причина в том что в скриптах СДК нет класса авто. class_registrator.script

Код
function register(object_factory)


Код

  cs_register (object_factory, "CCar",            "se_car.se_car",                  "SCRPTCAR",         "car_s")


andreyholkin

Сообщение отредактировал Дизель - Чт, 22.01.2015, 13:23
 
alex_xp_77Дата: Чт, 22.01.2015, 18:12 | Сообщение # 465
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
Награды: 6
Репутация: [ 41 ]

sergej5500 не наблюдаю аи сетку под машиной, не принципиально?? проверь графы!! сделай скрин самого лога
Цитата sergej5500 ()
На этапе сборки спавна
, именно это окно в капиляторе, когда оно выскакивает, там точная ошибка!!


 
Поиск: