Как исправить зрение NPC

Материал из Modders-wiki - Библиотека знаний модмейкеров S.T.A.L.K.E.R.
Перейти к: навигация, поиск
Unpack.pngТребуется распакованная gamedata
Перед тем, как приступить, предварительно распакуйте игровые архивы.
Без наличия оригинальных файлов, внести в них изменения не получится!


Как исправить зрение NPC
2016-08-22 042826.png
Описание
АвторSamber13
Тип статьируководство
АктуальностьТЧ, ЧН, ЗП
Необходимый софтТекстовый редактор
Необходимые файлыm_stalker.ltx, m_stalker_monolith.ltx

В этой статье вы рассмотрите, как настроить зрение NPC и исправить ошибки оригинального "сквозного зрения".

Играя в S.T.A.L.K.E.R., можно столкнуться с тем, что NPC видят игрока за стенами, а и иногда и вовсе "затылком". Это полностью убивает весь возможный стелс, исключая тот, что был реализован разработчиками скриптами в сюжетных местах. Связано это с неправильно настроенным зрением NPC.

Но это вполне легко поправить. Для этого вам необходимо исправить некоторые параметры в файлах m_stalker.ltx и m_stalker_monolith.ltx.

Теория

Откройте один из вышеуказанных файлов и найдите параметры eye_fov и eye_range. Первое - это угол зрения НПС в градусах. Второе - дальность зрения в метрах.
Два этих параметра являются основой. Некоторые параметры будут множить свои коэффициенты именно на них.
Теперь найдите секции отвечающие за зрение: [stalker_vision_free] и [stalker_vision_danger][1].
Как не сложно догадаться, первая отвечает за зрение, когда NPC находится в спокойном состоянии, а второе за зрение при встревоженном состоянии. Оба пункта содержат одинаковые параметры с разными коэффициентами, что логично.

[stalker_vision_free]
min_view_distance 			= 0.4
max_view_distance 			= 0.8
visibility_threshold	 	= 80.0
always_visible_distance 	= 0.1
time_quant					= 0.005
decrease_value				= 0.1
velocity_factor		     	= 1.0
luminocity_factor			= 0.8
transparency_threshold	 	= 0.4
  • min_view_distance и max_view_distance отвечают за минимальную и максимальную дистанцию зрения. Цифры в параметрах, это коэффициент, который множится на eye_range. Т.е. если текущее значение по умолчанию eye_range составляет 100 метров, то при умножении на min_view_distance, который составляет 0.4, вы получите 40 метров.
  • visibility_threshold - значение, по достижении суммы которого объект считается видимым. Чем больше будет значение, тем дольше вы будете оставаться невидимыми в поле зрения NPC. Значения visibility_threshold рекомендуется делать равными для спокойного и тревожного состояния, иначе могут возникнуть проблемы с потерей видимости при переходе от одного состояния к другому.
  • always_visible_distance - коэффициент зрения, при котором NPC видит при любых условиях, независимо от освещённости и прочих параметров. В данном случае значение составляет 0.1, что говорит о том, что NPC имеет абсолютное зрение в радиусе одного метра.
  • time_quant - временная единица.
  • decrease_value - значение, на которое уменьшается вес, если объект попал в фрустум[2], но отсёкся по каким-то причинам.
  • velocity_factor - фактор ускорения. Чем выше значение, тем быстрее нас обнаружит NPC при нашем движении. При высоком значении достаточно чуть шелохнуться, что бы быть обнаруженным, соответственно при наименьшем значении, мы останемся незамеченными даже если будем бегать.
  • luminocity_factor - фактор освещённости, при котором NPC видит нашего игрока. Чем выше значение, тем хуже видит NPC в темноте. Погодное освещение так же играет в этом роль.
  • transparency_threshold - это фактор прозрачности. Один из довольно важных параметров. Чем выше значение, тем меньше вы будете заметны за объектами содержащие "прозрачные участки", такими как кусты, заросли камыша и т.д. Если снизить значение до 0, то даже заросли кустов не скроют от взгляда NPC.

Практика

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

  • eye_range трогать не стоит, а вот eye_fov немного поправить нужно.

Среднее значение угла обзора человеческого зрения, составляет примерно 145° Это значение и будем использовать в этом примере. В целом значения разнятся, в зависимости от индивидуальных физиологических особенностей каждого человека.

  • min_view_distance и max_view_distance. Конечно эти коэффициенты не стоит настраивать, опираясь на реальные значения, потому что при нормальном зрении, человек видит всё до конца горизонта, а линия горизонта, при условии что человек стоит на земле составляет примерно 4,5 км. Вам необходимо подобрать оптимальные параметры, исходя из геймлейных соображений. Выставив следующие параметры:

В спокойном состоянии

min_view_distance 			= 0.3
max_view_distance 			= 0.7

В встревоженном состоянии

min_view_distance 			= 0.7
max_view_distance 			= 1.2

Стоит отметить, что уникальным персонажам можно прописать индивидуальные коэффициенты. К примеру можно увеличить снайперу дальность видимости при встревоженном состоянии.

  • visibility_threshold - этот параметр можно регулировать на собственный вкус. Как показала практика, интерфейсное отображение видимости другими NPC задерживается на сотые секунды от реальных показателей. С учётом этого пришлось калибровать оптимальный вариант для более комфортного, да и оправданного геймплея. Выставим следующие значения:

В спокойном состоянии

visibility_threshold	 	= 100.0

В встревоженном состоянии

visibility_threshold	 	= 45.0
  • always_visible_distance - уменьшите радиус для обоих состояний до 0.08. Теперь NPC будет иметь абсолютное зрение в радиусе 80 см. Можно уменьшить ещё при желании, но это оптимальный вариант при котором NPC ведёт себя более-менее адекватно в тёмном помещении.
  • velocity_factor - по идее значение в встревоженном состоянии должно быть выше обычного. Но на практике, это портит геймплей и почти от каждого не значительного движения главный герой быстро засекается враждебными NPC. Следующие параметры подобраны исходя из того, что при ходьбе с "Shift" в тёмном помещении NPC реагируют не резко и есть возможность "прикинуться тумбочкой". Скорректируйте параметры на следующие:

В спокойном состоянии

velocity_factor	 	= 0.7

В встревоженном состоянии

velocity_factor	 	= 0.3
  • luminocity_factor - поправьте фактор освещённости, выставив параметру коэффициент 1,1 для обоих состояний.

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

  • transparency_threshold - выставите этому параметру следующие значения:

В спокойном состоянии

transparency_threshold	 	= 1.4

В встревоженном состоянии

transparency_threshold	 	= 0.8

Заключение

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

[stalker_vision_free]
min_view_distance 			= 0.3
max_view_distance 			= 0.7
visibility_threshold	 	= 100.0
always_visible_distance 	= 0.08
time_quant					= 0.005
decrease_value				= 0.1
velocity_factor		     	= 0.7
luminocity_factor			= 1.1
transparency_threshold	 	= 1.4

[stalker_vision_danger]
min_view_distance   		= 0.7
max_view_distance	 		= 1.0
visibility_threshold	 	= 45.0
always_visible_distance 	= 0.08
time_quant					= 0.001
decrease_value				= 0.01
velocity_factor		     	= 0.3
luminocity_factor			= 1.1
transparency_threshold	 	= 0.8

Источник