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

AI additions


Bak

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

В общем, долго думал над этим вопросом, решил написать в эту тему.

В движке сталкера существует баг стрельбы NPC из РГ-6.
Видео:

https://yadi.sk/i/CFYituV8uESy3
кодек h264-mp4
CRC32: 2BBC6ABC
MD5: 8B3799F09508733F8F7F7CD293C65B74
SHA-1: 304C0B28856C7D4F0690E40ED7426052DFA51A0E

Поясню - при выстреле, производимом NPC(на игрока баг не распостраняется) из гранатомёта,
стреляющего 40мм гранатами, создаётся два объекта fake_grenade(один отрабатывает как заряд, второй просто виснет в воздухе). Причём оба объекта считаются для NPC как граната,
поэтому и такие танцы. Если например взять винтовку с подстволом, разрядить магазин, переключить в режим подствольника,
зарядить подствольник и в таком виде продать NPC вместе с парой гранат, происходят ровно такие же танцы.
Перезагрузка/перезаход на уровень не удаляют гранату, висящую в воздухе, не помогает даже стрельба по ней.
В связи с этим первое предложение по менеджеру оружия - сделать так, чтобы если NPC получил РГ-6, либо
винтовку со включенным гранатомётом, то включался запрет на обычную движковую стрельбу и стрельба велась через схему xr_grenadier.

 


Схема "не стрелять по своим" использует неверный алгоритм расчёта точности NPC.
Дело в том, как движок расчитывает точность стрельбы NPC :

- При выстреле используются две компоненты. Формула расчёта :
        {суммарная точность} = {компонента точности стрелка} + {компонента точности оружия}

- Компонента точности стрелка для ИИ считается равной одной из величин
----------------------------------------------------------------------------------------------
;---FIRE DISPERSIONS--------------------------------------------------
disp_walk_stand     = 8 ;6
disp_walk_crouch    = 4 ;3
disp_run_stand     = 14 ;12;8
disp_run_crouch     = 6  ;4
disp_stand_stand    = 4
disp_stand_crouch    = 2
disp_stand_stand_zoom   = 1.5 ;1
disp_stand_crouch_zoom   = 1.25;1
----------------------------------------------------------------------------------------------
        в профиле NPC (для сталкеров это [stalker] в файле m_stalker.ltx, для вояк же например это [m_army_soldier] в файле m_army.ltx)
        в зависимости от положения тела и режима прицеливания.

- компонента точности оружия для ИИ вычисляется по формуле
        {компонента точности оружия} = {fire_dispersion_base}*{fire_dispersion_base_k(для глушителя, если есть)}*{k_disp(для патрона)} +
                + {cam_dispersion(для автоматической стрельбы)}*{cam_dispersion_k(для глушителя, если есть)} +
                        + {cam_dispersion_inc(для автоматической стрельбы)}*{cam_dispersion_k(для глушителя, если есть)}
        при этом параметры
        ----------------------------------------------------------------------------------------------
        cam_dispertion_frac
        cam_max_angle
        cam_max_angle_horz
        cam_step_angle_horz
        ----------------------------------------------------------------------------------------------
        не учитываются для ИИ

В связи с этим возникает ещё одна проблема, тянущаяся всю серию сталкера - боты не могут стрелять нормально из снайперских винтовок,
если параметры _zoom в разделе FIRE DISPERSIONS более чем в 10 раз превышают значение fire_dispersion_base*k_disp
По этой же причине в тенях чернобыля для снайперов на ЧАЭС были созданы отдельные профиля со своими параметрами точности.

Поэтому пара следующих предложений :
- переделать формулу расчёта в модуле "не стрелять по своим"
- если у оружия, выбранного ботом, значение fire_dispersion_base*k_disp меньше, чем в 10 раз по отношению к disp_stand_stand/crouch_zoom
        и это оружие является снайперской винтовкой(проверка по признакам - темп стрельбы ниже 180 выстрелов в минуту, высокая точность патрона,
        класс, такой как W_VINT или W_SVD), то в менеджере оружия задать алгоритм, что лучше сменить оружие, например на пулемёт, или автомат под 7.62

 

 


На этот раз схема сбора предметов с земли.
Как оказалось, она во многих случаях не хочет работать нормально. Совсем.
Просто опишу, что хотелось бы видеть :
- Настройку в конфиге, чтобы не обыскивали тех, кто лежит ближе N метров от аномалии, либо захвачен аномалией
- Настройку в отдельном конфиге в виде списка в специальной секции, меняемого вручную, либо в отдельном скрипте в виде lua-таблицы,
        чтобы не обыскивали тех, кто имеет определённые xml профили и определённые профили в секции респавна, либо
        имеют определённые квестовые предметы(которые не должны подбираться NPC)
- Настройку в отдельном конфиге в виде списка в специальной секции, меняемого вручную, либо в отдельном скрипте в виде lua-таблицы,
        чтобы не подбирали с земли определённые квестовые предметы с определёнными секциями, либо именами spawn-объекта(которые не должны подбираться NPC)
- Настройку в конфиге, чтобы не обыскивали тех, кто лежит дальше N метров от NPC/лагеря, либо вне радиуса видимости, либо вне прямой видимости, либо за радиусом подгрузки Alife
- Настройку в конфиге, чтобы не обыскивали тех, кто лежит ближе N метров от игрока и не собирали предметы ближе N метров от игрока,
        ибо когда выхватывают предметы из-под ног, это уже слишком, в жизни бы драка началась за такое.

- В дополнение, чтобы NPC не превращались в склад хабара, прописать Alife:release() для вещей типа обрезов, если NPC они не нужны.

 

 


Добавить модуль "компаньоны" от Kamikazze в качестве "аддона к аддону", вот это была бы бомба.
Возможно, вам может пригодиться вот этот скрипт http://www.amk-team.ru/forum/topic/8243-vashi-pravki-dlia-stalker-zp/?p=1032110, для менеджера оружия?
        При помощи него, в менеджере оружия можно было бы напрямую использовать таблицу, в которой будет указано время перезарядки конкретного ствола.

 

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

Ничто общее из частного не следует.

Поделиться этим сообщением


Ссылка на сообщение

Все кто озабочен повышенной боеспособностью НПС уже давно подправили точность стрельбы. Например у меня значения disp_stand_stand_zoom и disp_stand_crouch_zoom не превышают 0.005 и 0.001.

И в результате, новички попадают из пистолета через пол-карты...

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

Файлы m_army.ltx, m_bandit.ltx, m_fraction.ltx игра не видит, и они для неё не существуют. Прописывание этих файлов в system.ltx ничего не даёт, как и прочие "пляски с бубном". Так что работает только m_stalker.ltx

Эти файлы можно подключить при использовании модифицированного движка, и чтобы те, кто их подключает в своих модах, могли нормально использовать AI additions ,не помешала бы единая функция парсинга. Изменено пользователем Bak

Ничто общее из частного не следует.

Поделиться этим сообщением


Ссылка на сообщение

 

 

 

Надо правильно настраивать оружие

 

 

А вы эти накрутки проверяли ?

 

Проверено, и не единожды. Если закрутить точность стрельбы NPC, то получаются снайперские пистолеты, DESERT EAGLE с прицелом и прикладом отдыхает.

Если же понизить точность стволов с 0.04-0.1 до 1-2 радиан, то после такой стрельбы пропадает желание играть.

 

НПС безбожно мажут из за невозможности правильно компенсировать отдачу оружия

cam_relax_speed_ai

при раскомментировании дефайна прекрасно работает

 

Вообще лучше не спорить на эту тему.

 

этак можно вообще не спорить.

 

 

Ничто общее из частного не следует.

Поделиться этим сообщением


Ссылка на сообщение

 

 

больше что то доказывать не собираюсь.

 

 

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

 

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

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

 

Не работает. Плохо читали предложенную тему - ВСЁ !!! давно перемусолено не один десяток раз...

 

Понимаю, много лет пытались и не получалось, но сейчас-то, когда есть открытые исходники движка, что мешает ?

 

 


Upd. Вообще то, что мы так ломаем копья - не здорово и безблагодатно.


Кстати, вот, пришла такая мысль, а никто не пробовал слить профайлы типа m_bandit в m_stalker.ltx, ведь возможно, просто ограничения на С++ парсер конфигов не позволяют раскрыть вопрос.


А по поводу моих предложений по AI additions  - вообще, подозреваю, что изначально разрабы GSC сделали всё оружие точным(да и в жизни, например печенег, утёс или браунинг - это "снайперские пулемёты"), хотели наделать много профилей отдельно для снайперов(высокий скилл стрельбы у бота), для высокоранговых штурмовиков(средний скилл стрельбы, но большой ранг плюс хороший костюм решают) и для обычных сталкеров. Причём у снайперюг в приоритете были бы снайперские винтовки, но снайпера не любили бы пулемёты(баланс, однако, дабы снайперюги не косили всё живое из пулемёта со снайперской точностью) ; у штурмовиков в приоритете оружие с большим разбросом, но высокой огневой мощью, у остальных - в приоритете автомат. И это, и то,что всё не успели реализовать как надо -  более-менее понятно. Другое дело, что сейчас то при помощи нескольких скриптовых алгоритмов ситуацию можно сгладить.

Кстати, чтобы исконный пост не потерялся - ссылка http://www.amk-team.ru/forum/topic/4653-ai-additions/?p=1032302

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

Ничто общее из частного не следует.

Поделиться этим сообщением


Ссылка на сообщение

Уважаемый @Bak, боты лезут в аномалию, которая подхватила трупс (у меня они лезут в карусель, трамплин, электру, и т.д), обыскивают сюжетные трупсы, в которых должны лежать предметы срециально для игрока, подбирают квестовое оружие, тоже для игрока, бегают очень далеко(у меня новички полезли за бандитом в лагере кабанов, застрелив попутно патруль вояк и вызвав облаву), выхватывают предметы из-под ног игрока, поэтому и хотелось бы иметь соответствующие настройки для схемы.

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


UPD простая схема необыска там естественно имеется, но хотелось бы видеть распределение по фракциям, либо по имени лагеря, в котором находится NPC. В настройки я естественно лазил, но всё равно, хотелось бы иметь более тонкую настройку, дабы не возникало ситуаций, как я только что написал. Так и не нашёл настройку "не трогать вещи ближе чем N метров от игрока", да и по аномалиям, почему-то всё равно как лезли, так и лезут за трупсами вслед.


___

Файлы настроек открывал, конечно же ;)


@shahvkit, возможная причина этого -

 

 

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

 - перехват скриптовой схемы движковой, а движок читает, но не обрабатывает параметры min_distance и max_distance.

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

Ничто общее из частного не следует.

Поделиться этим сообщением


Ссылка на сообщение

@Bak, доброго времени суток. По поводу того, что я несколько дней назад расписывал - "не трогать вещи ближе чем N метров от игрока" - это ладно, я и сам такое сделать могу, другое дело - настройка необыска по имени parent_lager/gulag(т. е. по имени/названию, записанном в all_spawn, лагеря, в котором находится непись), уж очень бы хотелось, чтобы такое присутствовало официально, просто, чтобы, например, на свалке бес не лез в собачий лес, или на армейских складах свободовцы не шли через минное поле к убитому зомби с флешкой с данными о походе на радар, или фанат не лез вслед за тем же бандитом. Когда долговцы на янтаре лезут за полегшими зомби, это вообще атас, если там аномалии.

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

Ничто общее из частного не следует.

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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