HLFX.Ru Forum
Показать все 28 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Улучшение навигации NPC на карте (https://hlfx.ru/forum/showthread.php?threadid=4832)


Отправлено invision20 09-08-2016 в 06:41:

Half-Life Улучшение навигации NPC на карте

Привет всем,

В Source Engine персонажи передвигаются очень плавно и точно по всей карте (что выглядит естественно). Они не дергаются, бегая туда-сюда, если нашли какое-то препятствие как в GoldSrc. И они без проблем следуют за игроком по коридорам, комнатам и по лестнице, когда как в GoldSrc они могут где-то запнуться, вернуться или даже остановиться.

Вопрос: возможно ли улучшить навигацию в GoldSrc примерно до уровня Source? Если да, то на сколько сложно и долго? (я не спрашиваю какие строки в каких файлах поменять, с этим я сам справлюсь, но от помощи все равно не откажусь).

Заранее спасибо

P.S. Пока что есть идея найти (если есть) размеры сетки навигации и попробовать увеличить точность. Но пока что не могу проверить, есть ли она вообще.


Отправлено Crystallize 09-08-2016 в 06:51:

Тут где-то был тутор "как сделать чтобы ученые не отставали на каждом препятствии".


Отправлено PLut 09-08-2016 в 06:58:

invision20 Я заинтресован в этой теме, но ответ на твой вопрос ничего не изменит. Допустим, я скажу, что это сложно и долго.

На своем опыте скажу, что большую роль играет грамотная расстановка нодов на карте, а не волшебный код. Чтобы монстры сами шли до игрока (причем, до правильного игрока в мультиплеере) я, практически, ничего инновационного не писал, просто использовал код, что вальве оставила. Касательно монстров в хл есть очень много чего, нужно просто знать как это приспособить. Так что советую хорошенько так посидеть за чаем и сорцами хл.

__________________
Base Defense on Steam, ModDB


Отправлено ~ X ~ 09-08-2016 в 07:22:

Цитата:
PLut писал:
На своем опыте скажу, что большую роль играет грамотная расстановка нодов на карте, а не волшебный код.

Я бы перефразировал вопрос "как избавиться от сраных нод", но сам знаю ответ, так что, всё грустно.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено invision20 09-08-2016 в 07:31:

Crystallize
Спасибо, я посмотрел этот туториал но мне кажется он не решит проблемы с запинаем и движением из стороны в сторону при следовании за игроком. Я проверю это точно когда освобожусь.

PLut
Возможно я ошибаюсь, но разве ноды в GoldSource не выставляют вручную в хаммере только для корректировки движения? На сколько мне известно, в игре ноды для движения сами генерируются как в Source.


Отправлено PLut 09-08-2016 в 07:54:

~ X ~ В сорцах сервера коэс глянь LocalNav - это навигация, что юзают заложники в коэс, там много чего интересного есть, в т.ч. прыжки, лазание по лестницам. Самое главное - оно не юзает ноды, я добавлял заложников в чистую хл за пару минут и они хорошенько бегали везде.

invision20 На нодах основана вся навигация, попробуй заставить монстров пройти всю карту самостоятельно без нодов.

Вот посмотри откуда до куда монстры доходят сами по нодам, без них они бы остались стоять на месте и сыпали ошибки в консоль:

__________________
Base Defense on Steam, ModDB


Отправлено invision20 09-08-2016 в 07:59:

PLut
То есть вы имеете в виду что ноды в GoldSrc нужно выставлять вручную? Они сами не генерируются?

Кстати интересная информация о заложниках из CS, обязательно посмотрю на них.


Отправлено PLut 09-08-2016 в 08:04:

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

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

__________________
Base Defense on Steam, ModDB


Отправлено invision20 09-08-2016 в 08:17:

PLut
Понял, спасибо. Скоро пойду посмотрю как-там все устроено и отпишусь если что-нибудь получится по этой теме.


Отправлено PLut 09-08-2016 в 08:18:

invision20 Успехов

__________________
Base Defense on Steam, ModDB


Отправлено Дядя Миша 09-08-2016 в 12:25:

В первой и во второй халфе код навигации монстров совпадает на 80% примерно. Просто во второй халфе исправили баг с эвентами, из-за которых монстры регулярно ловят жуткие тупняки. Там же ИИ анимационно-зависимый - даётся команда, играется анимация, из анимации посылается эвент, как сигнал для ИИ. Короче оно регулярно проскакивает из-за чего монстры подолгу тупят на одном месте. Если починить эти стрёмные моменты, то монстры становятся такие же бодрые как и в хл2.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено invision20 09-08-2016 в 12:34:

Дядя Миша
Спасибо за инфо, вот как раз начинаю смотреть что можно сделать с этим.


Отправлено thambs 09-08-2016 в 12:44:

>проблемы когда монстры останавливались на ступеньках только потому, что со ступеньки не могли увидеть нод на верху лестницы, пришлось ставить нод на каждую ступеньку. И оно того стоило.

Этому нодеграфу бы местами вручную задавать связи, вечно он тупит с построением на ровном месте.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено ~ X ~ 09-08-2016 в 13:11:

Код графа явно кем-то отдельно написан (мб аутсорсинг?) т.к. п стилю и вообще всему сильно отличается от остального кода (а уж сколько там грязи и неприятностей...)

Цитата:
Дядя Миша писал:
Если починить эти стрёмные моменты, то монстры становятся такие же бодрые как и в хл2.

А ты уже починил? Это про пропуск эвентов между кадрами что-ли?

Цитата:
PLut писал:
~ X ~ В сорцах сервера коэс глянь LocalNav

Дашь поглядеть?
Это там, где навмеши используются или там вообще ничего не используется?
Кстати, у меня закралось такое подлое чувство, что перенести код заложников на монстров помешает какой-нибудь очередной затык в эмуляции движения в движке...

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено PLut 09-08-2016 в 14:24:

~ X ~ Вот оно. Не хочу вводить в заблуждение, так что лучше глянь сам.

__________________
Base Defense on Steam, ModDB


Отправлено Дядя Миша 09-08-2016 в 17:27:

Цитата:
thambs писал:
Этому нодеграфу бы местами вручную задавать связи, вечно он тупит с построением на ровном месте.

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

Добавлено 09-08-2016 в 20:27:

Цитата:
~ X ~ писал:
Код графа явно кем-то отдельно написан (мб аутсорсинг?) т.к. п стилю и вообще всему сильно отличается от остального кода

Скажу страшное - это вообще раньше была консольная утилитка, которую наверняка писал не тот, кто занимался hl.dll. А потом её вмонтировали внутрь серверной библиотеки для удобства.
Цитата:
~ X ~ писал:
А ты уже починил? Это про пропуск эвентов между кадрами что-ли?

В XashNT - починил.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено thambs 09-08-2016 в 17:28:

>можете провести вектор от одной ноды к другой и никуда не упереться, то проблем не будет
нет.

~ X ~
Если разберёшься -- пили тутор. Вещь дюже нужная: с этими застреваниями и тупаком на ровном месте никаких годных квестов с npc не запилить.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 09-08-2016 в 17:37:

Цитата:
thambs писал:
>можете провести вектор от одной ноды к другой и никуда не упереться, то проблем не будет
нет.

Ни разу у меня не было случая, чтобы это правило не сработало. Потому что по другому и быть не может. Я же говорю, движок их на пол опускает, из-за чего возможны разногласия. Ну есть еще момент - т.к. нода не точечная, надо, чтобы вокруг нее было достаточно места - в три раза больше, чем хулл игрока. На самом деле это много-вато конечно, и двух бы хватило за глаза.
Ну вот такое ограничение.

Добавлено 09-08-2016 в 20:37:

А и еще. Надо читать репорт-файлы, рядом с нодами. Там пишут почему и где не слинковалось. Я между прочим в параное расставлял ноды по уровням, они прекрасно там бегут насквозь. И с игроком и без игрока и по всякому. Вы видели, чтобы в параное монстры тупили в поисках выхода?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 09-08-2016 в 22:52:

Цитата:
Дядя Миша писал:
В XashNT - починил.

Тутор напишешь? Интересно прям, что там вальве не дописали.

Цитата:
thambs писал:
Если разберёшься -- пили тутор.

Не понял, про что? Всё что я сделал - оптимизировал генерацию по скорости раза в четыре. И убрал генерацию рапортов под developer < 2.

Для графов, по хорошему (если они вообще нужны в современном мире), нужен ОТДЕЛЬНЫЙ РЕДАКТОР и никаких энтить. А то получаем: MAX_EDICTS 4096 - кол-во реальных жнтить == около 1600 эдиктов под ноды максимум. Тебе вряд-ли хватит. Но держать энтити ради одного лишь поля "origin" - это какое-то безумие.

Добавлено 10-08-2016 в 01:52:

Цитата:
~ X ~ писал:
Тутор напишешь? Интересно прям, что там вальве не дописали.

Не понял, про что? Всё что я сделал - оптимизировал генерацию по скорости раза в четыре. И убрал генерацию рапортов под developer < 2.
А, понял: ты про заложников. Не в этой жизни.

Для графов, по хорошему (если они вообще нужны в современном мире), нужен ОТДЕЛЬНЫЙ РЕДАКТОР и никаких энтить. А то получаем: MAX_EDICTS 4096 - кол-во реальных жнтить == около 1600 эдиктов под ноды максимум. Тебе вряд-ли хватит. Но держать энтити ради одного лишь поля "origin" - это какое-то безумие.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 10-08-2016 в 06:10:

Цитата:
~ X ~ писал:
Для графов, по хорошему (если они вообще нужны в современном мире), нужен ОТДЕЛЬНЫЙ РЕДАКТОР и никаких энтить.

Проще так: в debug версии серверной дллки есть код генерации нодов, а в release нет. Соответственно, в релизной версии мода прогоняем карты через утилитку (как было когда-то раньше). А энтити с карт удаляем, остаётся только граф.

Добавлено 10-08-2016 в 13:10:

Цитата:
~ X ~ писал:
Но держать энтити ради одного лишь поля "origin" - это какое-то безумие.

Там не только ориджин. А ещё и хинты для AI. Только их в фгд нету.


Отправлено ~ X ~ 10-08-2016 в 06:38:

Цитата:
Ku2zoff писал:
Там не только ориджин. А ещё и хинты для AI. Только их в фгд нету.

а) не придирайся
б) у меня они есть
в) доделай уже монстров!

Цитата:
Ku2zoff писал:
Проще так: в debug версии серверной дллки есть код генерации нодов, а в release нет.

Вообще в этом смысла не вижу. "удаляем" - это надо из БСП-файла ДО попадания его в игру.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 10-08-2016 в 08:13:

Цитата:
~ X ~ писал:
в) доделай уже монстров!

Цитата:
Средства у нас есть. У нас ума не хватает.

Как додумаюсь, доделаю. Зажигалку же сделал. И ползание. И ноги от первого лица. Не всё же сразу, с моим скудным опытом-то.
Цитата:
~ X ~ писал:
"удаляем" - это надо из БСП-файла ДО попадания его в игру.

Ну вот утилитка для релизной версии и будет удалять при прогоне БСП через себя.


Отправлено Дядя Миша 10-08-2016 в 14:43:

Цитата:
~ X ~ писал:
Тутор напишешь?

мне пришлось заставить сервер тикать с фиксированным фпс. И полдвижка переписать. Не выйдет тутора из такого дела.
Цитата:
~ X ~ писал:
MAX_EDICTS 4096 - кол-во реальных жнтить == около 1600 эдиктов под ноды максимум

Ноды не жрут эдикты, уже сколько раз говорено.

Между прочим в XashNT нодграф встраивается прямо в карту

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 11-08-2016 в 02:34:

Цитата:
Дядя Миша писал:
мне пришлось заставить сервер тикать с фиксированным фпс. И полдвижка переписать. Не выйдет тутора из такого дела.

Так и знал, что без вмешательства в движок не обошлось. А откуда ноги у этой проблемы растут? Из движкового таймера?


Отправлено Дядя Миша 11-08-2016 в 14:15:

Проблема прежняя - сервер должен тикать с фиксированным фпс, а не гулять как придется. Помните глюки на gruntbattledemo. Вот наглядный пример этой проблемы.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 11-08-2016 в 14:24:

Дядя Миша то есть на той карте нет ошибки маппера? Или тут всё сразу?


Отправлено FiEctro 11-08-2016 в 14:30:

Цитата:
Дядя Миша писал:
Вы видели, чтобы в параное монстры тупили в поисках выхода?


В самом начале когда идём к лифту. Там постоянно NPC у меня сбивались с курса. Вплоть до полного изламывания скрипта.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Дядя Миша 11-08-2016 в 14:53:

Цитата:
FiEctro писал:
В самом начале когда идём к лифту. Там постоянно NPC у меня сбивались с курса. Вплоть до полного изламывания скрипта.

Человеку, пишущему бред в википедии положен отрицательный уровень доверия. Даже в самых простых заявлениях.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 10:58.
Показать все 28 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024