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

[SoC] Расчет повреждений при стрельбе по неписям

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

 Предлагаю не обманывать геймера и в конфигах брони прописывать честное fire_wound_protection = 0.0.

Чтобы не удивлялись, просто надо объяснить людям как работает механика игры. Например, добавить диалог

Сидору в начале игры. На основании bones_koeff_protection разбить броню на классы защиты от пуль и добавить в описание каждого костюма. Например:"Обычная куртка из плотной ткани с капюшоном, джинсы каких много, ботинки с высоким берцем. Как говорится: в чём пришли с гражданки, в том и воюем. Даёт некоторую защиту против порезов, осколков. Почти неэффективна против аномальных и других вредных воздействий Зоны.Защита от пуль класс 1."

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

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

Ссылка на комментарий

Рот Фронт! Весьма полезная таблица, по классам защиты бронежилетов .. http://www.npo-sm.ru/stand.php


http://armo99.ru/how_to_choose/protectionclass/gostismenenija/Стандарт РФ на бронезащиту

Изменено пользователем Anders_Basymowski
  • Полезно 1

DDR

Ссылка на комментарий

 Всем Рот Фронт! Появился у меня такой вопрос . В игре Call of Duty в конфигах оружия можно выставить, что оружие перезаряжается только после отстрела всего магазина ( параметр noPartialReload устанавливаем в " 1 " , в конфигах стволов ) . Так я сделал для пистолетов, магазиных винтовок и пистолет-пулемёта ППШ-41. Так вот, возможно ли сделать так же и в Сталкере ? 

DDR

Ссылка на комментарий

@Shader, Тут ранее товарищ интересовался, что это за 4 кэфф.

 

 

[m_zombie_damage_normal]
;bone_name = ,-1,
; - коэфф. изменения хита (уменьшения здоровья)
; - коэфф. изменения величины открытой раны
default = 0.1, -1, 0.01
bip01_neck = 0.7, -1, 0.01
bip01_head = 1.95, -1, 0.03, 5.0

 

 

Путём проб и ошибок, а так же неоднократным отстрелом собак и новичков на Кордоне выяснил как вообще работают эти коэф-ы.

В данном случае этот 4 коэфф является дублёром 1 и обозначает множитель урона в конкретную область.

Вот на примере собаки из файла m_dog.ltx:

 

default = 0.5, -1, 0.2

bip01_pelvis = 1.0, -1, 0.5
bip01_spine = 1.0, -1, 0.5
bip01_spine1 = 1.0, -1, 0.5
bip01_neck = 1.0, -1, 1.5
bip01_head = 2.0, -1, 0.5, 10

 

 

При уроне ПМа в 0.25, (т.е. снимает 25 хп при 0 защите) наша собачка умрёт с 1 попадания в голову, т.к. коэфф урона 10, (25*10 = 250)

Но если эту 10 убрать собака будет регулярно падать с 2 попаданий в голову при уроне в 25 и защитой от пуль = 0.

Это работает для всех нпц и мутантов. 

  • Полезно 3
Ссылка на комментарий

Не уверен в точности этой информации. Если я ничего не путаю, этот параметр применяется при попадании так называемой суперпулей.

 

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

Ссылка на комментарий

@dsh, Я тестил на практике и там всё сошлось, мб так  и есть, что он для супер пули считается. Лично у меня без этих доп. коэффоф, когда я хотел настроить урон по экзе и булату (в голову естественно) начали происходить чудеса и поэтому коэффы вернул на место. Для настройки мутантов я их все убрал - они там ни к чему, а вот для нпц оставил.

Ссылка на комментарий

@Яр8, сейчас уточнил в исходниках. Все правильно я помню. Для не супер пули используется первый коэффициент, а для супер пули - четвертый или первый, если отсутствует четвертый.

  • Полезно 4
Ссылка на комментарий

@Byurrer, для ГГ - отлавливать здоровье, и всякие эффекты воспроизводить...

Для НПЦ - в ТЧ анимаций необходимых нет...

Не соответствует правилам.

Ссылка на комментарий

Всегда считал что против брони неписей действует коэффициент k_pierce... Каково было мое удивление когда по исходникам обнаружил что это значение используется только для преград. А защиту брони снимает ТОЛЬКО параметр k_ap, которого в оригинальных конфигах вообще нет... Вот это сюрприз.

 

Формула примерно такая:

armor = bone_armor * armor_condition * (1 - k_ap)
hit = hit_power - armor

Таким образом, значение k_ap = 0 не делает ничего (дефолт), а k_ap = 1 будет полностью игнорировать защиту любой брони...

 

Upd. Формула выше действует только при попадании по ГГ в броне. Если мы стреляем по NPC то - просто отнимается bone_armor от общего урона. k_ap не учитывается.

 

Upd. Еще сила удара пули зависит от скорости, но только как отношение текущей скорость к начальной... Т.е. имеет значение не bullet_speed а потеря скорости из за пробития преград, рикошетов и т.п.

 

Upd. В секциях bones_koeff_protection для каждой кости 2 числа. Второе это коэффициент брони, bone_armor из формулы выше. Он используется только для огнестрельных ранений. А первый коэффициент используется для всех остальных, КРОМЕ огнестрельных.

Изменено пользователем phobos2077
  • Полезно 3
Ссылка на комментарий

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

 

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

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

 

k_pierce кстати вырезал, он там учитывается только единожды в материале и прекрасно заменяется на k_ap.

 

А так, по поводу твоего третьего Upd, задумайся почему так, это совершенно верно, к слову. По хорошему и для всего остального так надо делать, причем еще по хорошему нужно переписывать всю защиту броникам, и изнашивать его "частями", что я тоже расписывал где-то, там не столько сложно, сколько муторно, приходится конфиги с нуля все писать, это самая трудная часть реализации. Возможно когда-то будет сделано в рамках моего проекта, но точно не скоро.

Ссылка на комментарий

Фигня. Все что я выше описал работает только при попадании по ГГ, у неписей нет брони как таковой (есть прямая ссылка на секцию в damages.ltx) поэтому вышеописанная формула к ним не подходит. И к сожалению параметр k_ap там не учитывается :(

Пичалька. И скриптами не расширить никак. Походу без патчинга движка тут никак.

 

Upd. Вот в Clear Sky вижу что они добавили учитывать этот параметр при попадании в NPC (но формула уже другая). А у меня мод на платформе ТЧ.

Изменено пользователем phobos2077
  • Полезно 1
Ссылка на комментарий

Интересно, когда мододелы настраивают монстров то часто не учитывают его массу. Известно что живучесть зверя пропорциональна массе тела, это около 10 Дж на 1 кг тела, так что крысы самые дохлые существа Зоны, им может хватить и выстрела из пневматики, не то что из ПМ, а самые живучие это конечно псевдогиганты, этим хорошо из пулемёта стрелять, ну и самые живучие это реальные гиганты этих тварей только кумулятивной гранатой можно усмерить.

Так что получается иммунитет крыс по пулям не менее 5-10, одной пули ПМ или одной картечины хватает за глаза. Конечно и удар мутантов тоже должен быть пропорционален массе. Живучесть сталкера 700 Дж, это смертельный хит по корпусу без учёта брони. В прочим у некоторых мутантов это коэффициент может быть выше, например тот же псевдогигант, легкие пули застревают  в толстой прочной шкуре не нося какого либо урона.

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

 

ЗЫ

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

  • Полезно 2

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий

 

 

данные о конституции мутанта: масса тела, прочность шкуры, степень живучести

Угум - осталось открыть Вики и прочитать эти данные.

  • Нравится 1
Ссылка на комментарий

@_Val_, эти данные берутся из самой модели, там если толстая шкура, толщина черепа и так далее. Короче маленький мутант не может по определению быть сильно живучим, конечно надо понимать не много в физиологии, можно брать похожих животных, типа собак, волков, кабанов, слонов и так далее. К примеру контролёр не может быть сильно живучим, особенно уязвим в голову, по идеи да же сильно живучему контролёру хватит пули в голову из ПМ, не то что из АК или СВД. Но для баланса делаем его более сильным телепатом, в плоть до того что берёт под контроль самого игрока, ну да достаточно из ПМ пальнуть ему в голову, вот только ты не сможешь и в упор попасть. Конечно, я говорю про специальный мод на вроде разрабатываемого ОЛР3.0. Ну и конечно у остальных монстров сила атаки часто смертельная, но и живучесть против того же СВД с экспансивным патроном существенно меньше.

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

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий

Но для баланса делаем его более сильным телепатом

Ровно на этом можно заканчивать все твои рассуждения. Раз, ты напишешь монструозную формулу, которая в итоге реально ничего не поменяет (лишь на толику, и скорее всего малозаметную для игрока), два, ты упоминаешь баланс, соответственно ты в каких-то моментах свои вот эти все формулы заметаешь под лавку, хотя в самом механизме они будут работать, кому нужны такие избытки? И главное, ради чего? Переделыванием одного лишь оружия ты никогда не получишь хоть какой-то реалистичности перестрелок, вот вообще ни чуть.

 

@phobos2077, во-первых у меня мод тоже на платформе ТЧ, во-вторых это действительно, как ты выразился, фигня, так как то, о чем-ты тут теоретизируешь я проверил на практике, со всеми вытекающими типа вывода в логи все чего там только возможно, и, еще раз, да, в двжике переписал. А фигня это потому, что масса времени, которое я затратил на переделывание движка, конфигов и моделей на выходе дала немного не то, что я себе фантазировал, с позиции игрока не поменялось ровно ничего, хоть тестеры и говорят "вау", но это все самовнушение вытекающее из моих слов, практика же показала, что они совершенно не в состоянии отличить модели с переделанными настройками от оригинальных. Далее. Если так ревностно подходить к этому вопросу, то нужно демеджи (я замечу, что абсолютно все), писать для каждого броника (модели) на каждый тип хита, так же переписывать "порчу" бронекостюма на покостную, вот в этом случае да, я согласен с предъявленными претензиями. А так по теории это все выглядит неспособным к обсуждению. Иными словами если этим и заниматься, то только в целях упрощения конфигов, соответственно упрощения этих формул.

  • Полезно 1
Ссылка на комментарий
эти данные берутся из самой модели

Ты уверен, что эти данные соответствуют игровой действительности?

Изменено пользователем _Val_
Ссылка на комментарий

Не знаю правильную тему выбрал или нет.

По поводу damage.ltx и защиты костюмов в ТЧ.

В секции вида [body_armor_damage] в строках костей вида:

bip01_spine                  = 1.0, 0.54

оба параметра динамические и зависят от износа брони также как и статы в outfit.ltx. Покрайней мере тот что второй(броня от пуль) совершенно точно.

При этом fire_wound_protection из outfit.ltx также работает, хоть многие пишут что это не так.

 

Как я это проверял:

0)везде прописал hit_fraction = 0.00005 дабы четко поймать момент "пробития"

1)прописал для своей экзы броню тела и головы вида = 1.0, 9.00

2)прописал аналогичные секции наёмникам и бандитам на ДТ, но броню сделал "средней" = 1.0, 2.50

 

При fire_wound_immunity = 0.005(износ экзоскелета включён) проверял разные fire_wound_protection.

1)При fire_wound_protection = 0.9 изначально ГГ неуязвим, но костюм изнашивается от попаданий. С износом экзы НПС начинают "пробивать", причём первые выстрелы из мощного оружия(у меня это СВД) наносят сильно уменьшенный урон. Постепенно урон увеличивается и СВД начинает убивать с 1 выстрела.

2)Всё тоже самое но fire_wound_protection = 0.09 - а-ля куртка новичка. Всё идет также до момента "пробития": тут СВД сразу выносит с 1 попадания.

 

Вывод: fire_wound_protection совершенно точно повышает выживаемость, то есть работает тем или иным способом. Видимо сначала считается только броня из damage.ltx, а после "пробития" в дело идёт fire_wound_protection.

Почему же кажется что fire_wound_protection не работает? Я думаю из-за (как оказалось) слишком высокого hit_fraction и значений брони в damage.ltx для крутых боевых костюмов типа СКАТа или Экзоскелета.

 

При fire_wound_immunity = 0 НПС могли стрелять в меня сколько угодно: нет износа, нет падения брони, нет урона здоровью.

При fire_wound_immunity = 0.5 НПС с Кольтом всего за 5 выстрелов износил экзу до 0% и добил меня уже "голого". Но первый выстрел не нанёс урона здоровью.

 

Далее уже я стрелял в НПС. Тут уже в теме тестили и без меня. Можно хоть 150 раз из фн2000 в голову попасть, если нет "пробития", то расчёт хедшота из m_stalker.ltx даже не начинается.

Но например для "пробивающей" СВД всё происходит корректно: 6 пуль в пузо или 1 в голову.

Тут главная проблема - игрок и НПС используют одинаковые статы брони. При этом для игрока еще активны статы из outfit.ltx, которые тоже работают.

Ссылка на комментарий

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

  • Согласен 1
Ссылка на комментарий
33 минуты назад, Drunk сказал:

Как я это проверял:

Мне кажется, логичнее всего при подобных изысканиях просто смотреть в исходники движка, и, (при необходимости), скрипты. Смотришь что за формулы в коде - берешь в руки калькулятор и считаешь, что получается при тех или иных вводных.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Для любопытствующих. В OGSR расчет пулевого хита начинается тут (полагаю, в чистом ТЧ точно так же):

float CEntityCondition::HitOutfitEffect(float hit_power, ALife::EHitType hit_type, s16 element, float AP)
{
...
	if (hit_type == ALife::eHitTypeFireWound)
		new_hit_power				= pOutfit->HitThruArmour(hit_power, element, AP);
	else
		new_hit_power				*= pOutfit->GetHitTypeProtection(hit_type,element);
...

Здесь четко видно, что пулевое повреждение расчитывается отдельно от других типов. Вот эти расчеты

float	CCustomOutfit::HitThruArmour(float hit_power, s16 element, float AP)
{
	float BoneArmour = m_boneProtection->getBoneArmour(element)*GetCondition()*(1-AP);	
	float NewHitPower = hit_power - BoneArmour;
	if (NewHitPower < hit_power*m_boneProtection->m_fHitFrac) return hit_power*m_boneProtection->m_fHitFrac;
	return NewHitPower;
};

Никакой fire_wound_protection здесь не используется. А вот в

float CCustomOutfit::GetHitTypeProtection(ALife::EHitType hit_type, s16 element)
{
	float fBase = m_HitTypeProtection[hit_type]*GetCondition();
	float bone = m_boneProtection->getBoneProtection(element);
	return 1.0f - fBase*bone;
}

как раз мог бы использоваться, т.к. здесь берутся коэффициенты из m_HitTypeProtection, но только, как я выше показал, для пулевого повреждения этот метод не вызвается. Ну а если кто-то сделал, что бы вызывался, то да, fire_wound_protection в таком случае будет использоваться.

  • Полезно 2
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

×
×
  • Создать...