Перейти к контенту

[SoC] Вопросы по SDK


faniloko

Рекомендуемые сообщения

@BFG, тот, где выскакивало это, склеивал xrAI. А что, разве можно склеивать чем-то другим?  Проблем не будет?

А вот потом, когда подсоединял локу к остальным, пользовался уже ggrc, и там всё прошло штатно. Даже вертексы не сбились. Застопорился на другом - на распаковке графа. А если быть точным - то на этой части:

 

Нужно тут же его утащить и распаковать с помощью gg_cdc_x - проверить game.graph.info.cross_edges.ltx - все ли переходы остались на месте (должны быть все), а так же как вписалась локация - в game.graph.levels.ltx наша локация должна быть конечной и с самым большим level_id. В game.graph.levels_info.ltx она тоже должна быть последней, там же можно увидеть её минимальный и максимальный вертексы. Минимальный вертекс должен быть тот же что был когда проверяли граф, сделанный компилятором - у нас это был вертекс 2792.
Теперь необходимо проверить, не сдвинулись ли идентификаторы локаций в графе. Почти наверняка - сдвинулись, так как в оригинале там есть груда ссылок на тестовые локации разработчиков. Проверить это можно в game.graph.levels.ltx, сравнив идентификаторы локаций там с идентификаторами в конфигах game_graphs.ltx и game_levels.ltx - если они отличаются, то обязательно поправляем идентификаторы в конфигах на те, что в геймграфе!
По добавлению переходов - чтобы их добавить вам желательно было заранее создать кроссграфы на локации. Если вы это сделали, тогда вам нужно сделать вот что - распаковать геймграф, сформированный при компиляции локации. Найти там в конфиге графов новой локации - game.graph.edges. сделанные вами переходы - они будут помечены как "crosslevel edge". Ещё их легко найти по параметру target_level_id - он у них отличается от исходного для этой локации. После того как нашли - скопируйте их прописи в отдельный файл. Затем откройте конфиг новой локации в сведённом вместе графе. При сведении переходы прибились, поэтому надо теперь в новом конфиге найти те же самые графпоинты на которых висели переходы. Ищите их по параметру parent_level_vertex_id. Как только найдете - перед тем как править - скопируйте в отдельный файл. Затем замените им параметры target_level_id, target_level_vertex_id и game_vertex_id на те, которые были у сделанных вами переходов. Не забудьте выставить дистанцию - это будет расстояние перехода. Сохранитесь. Теперь откройте конфиги game.graph.edges. тех локаций на которые создали переходы - нужно же сделать ещё переходы в обратную сторону. Открыв, найдите там те графы, с которыми только что сделали соединения с новой локации. Ищите по параметру parent_level_vertex_id - у наиболее подходящего графпоинта он будет равен target_level_vertex_id перехода с новой локации. После того как нашли, откройте файл в который сохранили не изменённые ещё графпоинты новой локации, на которые были сделаны переходы. Теперь аналогично - затем замените им параметры target_level_id, target_level_vertex_id и game_vertex_id на те, которые были у графпоинтов новой локации до изменения. Так мы добьемся того, чтобы входы и выходы с локации были примерно на одном месте. Не забудьте выставить дистанцию! Теперь всё сохраняем, и компилируем граф. Если всё сделано правильно граф сохранится, и при проверке его ggtool.pl вы увидите в списке сделанные вами переходы.
Если всё нормально, то можно скопировать граф обратно.

 

У меня просто ни одного подобного ltx не было. Вот и не знаю теперь.

Изменено пользователем V92

Такая вот строка в логе при компиляции game.graph(xrAI -m):

Graph for the level l10u_bunker doesn't correspond to the graph points from Level Editor! (132 : 131)

Чет не могу сообразить, что это значит ? И главное как вылечить ?

UnLoaded, граф уровня l10u_bunker не соответствует граф-поинтам из ЛЕ. Как вариант, пересобрать левел.граф для данного уровня.

P.S. Могу ошибаться. Давно с ТЧ не работал.

Изменено пользователем Melo

 

 

Это Make Game

Он самый. В итоге получишь level.spawn, в который вшит весь спавн, включая графпоинты.

@V92, я уже сказал, как я решал данную проблему. А делать также или нет - твоё дело и твои проблемы

@User_X.A.R26, я уже решил, обходными путями. Не спорю - твой способ тоже сработает, но громоздкий слишком.


Вопрос - если я правлю в СДК спавн, потом создаю его "Make game", мне нужно компилить заново геометрию, сетку и прочее, или можно просто взять этот level.spawn и кинуть в папку с уровнем?

Вопрос - если я правлю в СДК спавн...

Делал как то для себя шпаргалку, думаю тебе сгодится:

После добавления/изменения спавн-объектов и правки AI-сетки в СДК - Compile > Make Game, Build нужен только после изменения геометрии.
Если изменяем спавн-объекты в СДК, то:
Compile > Make Game
xrAI.exe -no_separator_check -s
 
Если изменяем ai-сетку в СДК, то:
Compile > Make Game
xrAI.exe -f лока
xrAI.exe -g лока
xrAI.exe -m
xrAI.exe -no_separator_check -s
 
Если изменяем граф-поинты в СДК, то:
Compile > Make Game
xrAI.exe -g лока
xrAI.exe -m
xrAI.exe -no_separator_check -s

Изменено пользователем UnLoaded
  • Полезно 4

@UnLoaded, надо граф для этой локи собирать, она не указана в конфигах, ее надо вроде типа самому додуматься вписать ;). И тогда все будет вполне православно. Хотя спавн и без этого выкрутаса компилится, правда с косяками или без я не проверял, дописал и не парился.

 

@V92, можно даже левел.спавн не брать если в дальнейшем на это забить планируешь. Работает и просто если взять алл.спавн новый.

Изменено пользователем Карлан
  • Спасибо 1

@Карлан, да я бы и не парился, но:

1. Чтобы через gg_cdc_x прописать переходы, надо распаковать граф, созданный при сомпиляции АИ измененной локи, чтобы было понятно, куда вешать переходы.

2. Чтобы при компиляции АИ создались переходы, нужно создать граф локи, куда они ведут, чтобы xrAI внес ее в граф, иначе переходов не будет.

3. Чтобы создать граф локи, надо, в свою очередь, иметь нормальный level.spawn, иначе граф не создастся.

4. Чтобы был нормальный level.spawn, надо его отредактировать в СДК, чтобы xrAI не вылетал при создании графа. Ибо когда локу (затон) переносили в ТЧ, кинули оригинальный level.spawn из ЗП, что, естественно, приводит к вылетам по отсутствующим секциям. 

Вот сколько извращений, чтобы подключить локацию к остальным.

Нарисовалась проблема: внес правки в АИ-сетку, перекомпилил всё заново xrAI, но когда начал соединять графы ggrc, получилось вот что:

 

l01_escape (0) -- 1206.28771972656 --> l02_garbage (415)
l01_escape (1) -- 21.1956672668457 --> l02_garbage (252)
l01_escape (37) -- 205.726379394531 --> marsh (3574)
l01_escape (167) -- 230.149261474609 --> marsh (3581)
l02_garbage (252) -- 21.1956672668457 --> l01_escape (1)
l02_garbage (254) -- 359.349212646484 --> l03_agroprom (701)
l02_garbage (255) -- 415.383026123047 --> l05_bar (1168)
l02_garbage (256) -- 571.261413574219 --> l04_darkvalley (816)
l02_garbage (312) -- 334.513305664063 --> peshera (2878)
l02_garbage (379) -- 501.802154541016 --> aver (2888)
l02_garbage (405) -- 170.943725585938 --> puzir (2883)
l02_garbage (414) -- 382.628204345703 --> l05_bar (1307)
l02_garbage (415) -- 1206.28771972656 --> l01_escape (0)
l03_agroprom (566) -- 579.561157226563 --> peshera (2862)
l03_agroprom (654) -- 204.328720092773 --> l03u_agr_underground (718)
l03_agroprom (701) -- 359.349212646484 --> l02_garbage (254)
l03_agroprom (702) -- 183.118194580078 --> marsh (3483)
l03u_agr_underground (718) -- 204.328720092773 --> l03_agroprom (654)
l04_darkvalley (811) -- 329.950927734375 --> l04u_labx18 (1167)
l04_darkvalley (816) -- 571.261413574219 --> l02_garbage (256)
l04_darkvalley (894) -- 921.716369628906 --> aver (2908)
l04u_labx18 (1167) -- 329.950927734375 --> l04_darkvalley (811)
l05_bar (1168) -- 415.383026123047 --> l02_garbage (255)
l05_bar (1246) -- 807.048889160156 --> l07_military (1545)
l05_bar (1248) -- 730.219177246094 --> l06_rostok (1308)
l05_bar (1307) -- 382.628204345703 --> l02_garbage (414)
l06_rostok (1308) -- 730.219177246094 --> l05_bar (1248)
l06_rostok (1409) -- 582.198852539063 --> l08_yantar (1460)
l08_yantar (1458) -- 2880.29467773438 --> av_peshera (2912)
l08_yantar (1460) -- 582.198852539063 --> l06_rostok (1409)
l08_yantar (1461) -- 201.319061279297 --> l08u_brainlab (1540)
l08_yantar (1528) -- 2940.1162109375 --> l10_radar (2116)
l08u_brainlab (1540) -- 201.319061279297 --> l08_yantar (1461)
l07_military (1545) -- 807.048889160156 --> l05_bar (1246)
l07_military (1547) -- 391.152313232422 --> l10_radar (1867)
l07_military (1722) -- 1700.06628417969 --> aver (2905)
l07_military (1848) -- 970.637390136719 --> atp_for_test22 (2793)
l07_military (1850) -- 1854.63537597656 --> dead_city (3601)
l10_radar (1865) -- 646.896240234375 --> l11_pripyat (2271)
l10_radar (1867) -- 391.152313232422 --> l07_military (1547)
l10_radar (1959) -- 1022.59234619141 --> red_forest (3272)
l10_radar (1977) -- 247.964981079102 --> l10u_bunker (2791)
l10_radar (2116) -- 2940.1162109375 --> l08_yantar (1528)
l11_pripyat (2117) -- 2220.5009765625 --> generators (3119)
l11_pripyat (2207) -- 760.852355957031 --> zaton (3665)
l11_pripyat (2223) -- 945.762817382813 --> l40_dshor (3758)
l11_pripyat (2271) -- 646.896240234375 --> l10_radar (1865)
l11_pripyat (2272) -- 2402.35131835938 --> l12_stancia (2399)
l12_stancia (2275) -- 3705.77172851563 --> l40_dshor (3769)
l12_stancia (2281) -- 4254.783203125 --> zaton (3664)
l12_stancia (2399) -- 2402.35131835938 --> l11_pripyat (2272)
l12u_sarcofag (2465) -- 177.621780395508 --> l12u_control_monolith (2468)
l12u_sarcofag (2466) -- 458.968688964844 --> l12_stancia (2384)
l12u_control_monolith (2468) -- 177.621780395508 --> l12u_sarcofag (2465)
l12u_control_monolith (2470) -- 1104.79431152344 --> l12_stancia_2 (2660)
l12_stancia_2 (2660) -- 1104.79431152344 --> l12u_control_monolith (2470)
l10u_bunker (2791) -- 247.964981079102 --> l10_radar (1977)
atp_for_test22 (2793) -- 970.637390136719 --> l07_military (1848)
atp_for_test22 (2795) -- 2262.39453125 --> l11_pripyat (2134)
atp_for_test22 (2795) -- 667.243530273438 --> red_forest (3270)
peshera (2862) -- 579.561157226563 --> l03_agroprom (566)
peshera (2878) -- 334.513305664063 --> l02_garbage (312)
puzir (2883) -- 170.943725585938 --> l02_garbage (405)
puzir (2885) -- 3274.5693359375 --> red_forest (3323)
aver (2887) -- 551.832824707031 --> av_peshera (2985)
aver (2888) -- 501.802154541016 --> l02_garbage (379)
aver (2905) -- 1700.06628417969 --> l07_military (1722)
aver (2908) -- 921.716369628906 --> l04_darkvalley (894)
av_peshera (2912) -- 2880.29467773438 --> l08_yantar (1458)
av_peshera (2985) -- 551.832824707031 --> aver (2887)
limansk (3000) -- 826.1171875 --> red_forest (3232)
limansk (3026) -- 1856.41772460938 --> lost_village (3324)
limansk (3027) -- 1323.375 --> hospital (3074)
hospital (3071) -- 487.912231445313 --> generators (3128)
hospital (3073) -- 2774.23901367188 --> lost_village (3331)
hospital (3074) -- 1323.375 --> limansk (3027)
generators (3119) -- 2220.5009765625 --> l11_pripyat (2117)
generators (3128) -- 487.912231445313 --> hospital (3071)
generators (3142) -- 537.218383789063 --> warlab (3223)
warlab (3223) -- 537.218383789063 --> generators (3142)
red_forest (3228) -- 1213.60510253906 --> dead_city (3599)
red_forest (3232) -- 826.1171875 --> limansk (3000)
red_forest (3270) -- 667.243530273438 --> atp_for_test22 (2795)
red_forest (3272) -- 1022.59234619141 --> l10_radar (1959)
red_forest (3323) -- 3274.5693359375 --> puzir (2885)
lost_village (3324) -- 1856.41772460938 --> limansk (3026)
lost_village (3331) -- 2774.23901367188 --> hospital (3073)
marsh (3483) -- 183.118194580078 --> l03_agroprom (702)
marsh (3574) -- 205.726379394531 --> l01_escape (37)
marsh (3581) -- 230.149261474609 --> l01_escape (167)
dead_city (3599) -- 1213.60510253906 --> red_forest (3228)
dead_city (3601) -- 1854.63537597656 --> l07_military (1850)
zaton (3660) -- 674.113220214844 --> jupiter (3733)
zaton (3664) -- 4254.783203125 --> l12_stancia (2281)
zaton (3665) -- 760.852355957031 --> l11_pripyat (2207)
jupiter (3730) -- 406.738128662109 --> jupiter_underground (3771)
jupiter (3733) -- 674.113220214844 --> zaton (3660)
l40_dshor (3748) -- 334.685089111328 --> labx8 (3831)
l40_dshor (3751) -- 671.869689941406 --> jupiter_underground (3793)
l40_dshor (3758) -- 945.762817382813 --> l11_pripyat (2223)
l40_dshor (3769) -- 3705.77172851563 --> l12_stancia (2275)
jupiter_underground (3771) -- 406.738128662109 --> jupiter (3730)
jupiter_underground (3793) -- 671.869689941406 --> l40_dshor (3751)
labx8 (3831) -- 334.685089111328 --> l40_dshor (3748)
{ gvid0 => 0, name => 'l01_escape' },
{ gvid0 => 252, name => 'l02_garbage' },
{ gvid0 => 416, name => 'l03_agroprom' },
{ gvid0 => 703, name => 'l03u_agr_underground' },
{ gvid0 => 811, name => 'l04_darkvalley' },
{ gvid0 => 1109, name => 'l04u_labx18' },
{ gvid0 => 1168, name => 'l05_bar' },
{ gvid0 => 1308, name => 'l06_rostok' },
{ gvid0 => 1438, name => 'l08_yantar' },
{ gvid0 => 1529, name => 'l08u_brainlab' },
{ gvid0 => 1545, name => 'l07_military' },
{ gvid0 => 1862, name => 'l10_radar' },
{ gvid0 => 2117, name => 'l11_pripyat' },
{ gvid0 => 2273, name => 'l12_stancia' },
{ gvid0 => 2402, name => 'l12u_sarcofag' },
{ gvid0 => 2467, name => 'l12u_control_monolith' },
{ gvid0 => 2517, name => 'l12_stancia_2' },
{ gvid0 => 2661, name => 'l10u_bunker' },
{ gvid0 => 2792, name => 'atp_for_test22' },
{ gvid0 => 2862, name => 'peshera' },
{ gvid0 => 2881, name => 'puzir' },
{ gvid0 => 2886, name => 'aver' },
{ gvid0 => 2909, name => 'av_peshera' },
{ gvid0 => 2988, name => 'limansk' },
{ gvid0 => 3028, name => 'hospital' },
{ gvid0 => 3076, name => 'generators' },
{ gvid0 => 3153, name => 'warlab' },
{ gvid0 => 3224, name => 'red_forest' },
{ gvid0 => 3324, name => 'lost_village' },
{ gvid0 => 3337, name => 'marsh' },
{ gvid0 => 3582, name => 'dead_city' },
{ gvid0 => 3660, name => 'zaton' },
{ gvid0 => 3700, name => 'jupiter' },
{ gvid0 => 3748, name => 'l40_dshor' },
{ gvid0 => 3771, name => 'jupiter_underground' },
{ gvid0 => 3830, name => 'labx8' },
{ gvid0 => 3851, name => 'l40_dshor' },

 

Почему уровень дублируется 2 раза и заменяет Припять из ЗП? Что я не так делаю?

 

 

Почему уровень дублируется 2 раза и заменяет Припять из ЗП? Что я не так делаю?

Кашпировские опять в отпуске, откуда-ж мы знаем что ты не так делаешь, если кроме лога, который для ответа тебе бесполезен, ты даже содержимое батника запуска ggrc не показываешь ? И вообще, зачем ggrc, если ты "перекомпилил всё заново xrAI". А разве 'xrAI -m' не гейм-граф создает ?

А затем, что xrAI создает кривой граф. Там вертексы почему-то сбиваются. А в ggrc с ними все нормально, и вообще я всё по статье делаю. И дело не в батнике, обычный стандартный батник:

 

perl ggrc.pl -g1 game.graph,soc -l1 l01_escape,l02_garbage,l03_agroprom,l03u_agr_underground,l04_darkvalley,l04u_labx18,l05_bar,l06_rostok,l08_yantar,l08u_brainlab,l07_military,l10_radar,l11_pripyat,l12_stancia,l12u_sarcofag,l12u_control_monolith,l12_stancia_2,l10u_bunker,atp_for_test22,peshera,puzir,aver,av_peshera,limansk,hospital,generators,warlab,red_forest,lost_village,marsh,dead_city,zaton,jupiter,pripyat,jupiter_underground,labx8 -g2 game2.graph,soc -l2 l40_dshor
pause

 


 

 

Кашпировские опять в отпуске

Всё, проблема решена. Спасибо за "помощь".

 

 

А затем, что xrAI создает кривой граф. Там вертексы почему-то сбиваются.

С учетом того, что разговор начался с "внес правки в АИ-сетку", хочу спросить: а что Вас смущает в изменении вертексов, после правки AI-сетки ? AI-нода в СДК, после обработки AI-компилятором становится level_вертексом в игре. Так как Вы так хотите хитро - изменить кол-во AI-нод на локации и сохранить их неизменными в игре ? Или я не понял какие вертексы Вы имели в виду ?

 

Да и вообще - что с того, что "вертексы сбиваются" ? xrAI -s, для всех объектов под которыми AI-сетка изменилась, автоматом все поправит и все объекты останутся на своих местах.

Всё, проблема решена. Спасибо за "помощь".

Написал бы, как решил. Может кому пригодится.
что с того, что "вертексы сбиваются"

А скриптовый спавн потом перелопачивать кто будет? Я - точно не буду. Там-то ничего не исправляется. Сбиваются гейм-вертексы других лок, это видно после распаковки. Тех, которые я не правил. С моей все нормально.

 

 

Написал бы, как решил.

Да ничего особенного, забыл правленые конфиги в геймдату закинуть. Вот он по старым граф и собирал. В них Припять была 37-й, а в новых все ID сместились на 3 назад. Получилось, что моя лока стала 37, а Припять - 34. Хотя она не дублировала ничего, просто убиралась.

 

Сейчас проблема похуже - при заходе на локу сразу идет вылет, если пройти несколько метров:

 

[error]Expression : I != levels().end()

[error]Function : GameGraph::CHeader::level

[error]File : e:\stalker\sources\trunk\xr_3da\xrgame\game_graph_inline.h

[error]Line : 171

[error]Description : there is no specified level in the game graph : 49

 

 

Даже и не знаю, в чем дело. Такой вылет в солянке часто бывает, но там он рандомный. А тут - 10 из 10 - вылет. Думал из-за спавна - очистил весь спавн локи, оставил в файле только переходы Затон-Долина и Долина-Затон. Всё равно вылетает.

Изменено пользователем V92

Через СДК возможно запретить, либо сильно ограничить спавн артефактов для какой-либо аномалии не создавая новых секций? Вариант использования "слабых" аномалий типа noart не устраивает. 

Изменено пользователем Stalker_AleX333

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...