Цитата(NanoBot-AMK @ 15.01.2019, 18:45)
Интересно, как всё таки обыгрывают гранаты в играх. Часто не добавляют осколки, ударная волна как будто там не 100 г ВВ, этак 3-4, а то и все 8 кг ТНТ. На деле ударная волна от гранат не очень сильная, особенно слабая она у Ф-1, там всего 60 г ТНТ, вес осколочной оболочки порядка 500 г, в результате почти вся эта энергия уходить на дробления чугуния и разгон осколков до 720 м/с, на ударную волну уходит порядка 20 грамм. Короче, Ф-1 поражает только осколками и поразить ударной волной может только если рванёт под ногами, и то не очень сильно.
Почему в играх нет осколков у гранат, ну это из-за того, что в таких движках трассировка геометрии обходится дорого, или просто разрабы о них забывают. Кстати, только что прочитал, в таркове недавно добавили осколки гранатам.
Отражённая ударная волна, бризантность, я не знаю в каких играх такие параметры в есть гранат и взрывчатки. Сильно влияют на геймплей, отражённая ударная волна существенно усиливает поражения в замкнутых пространствах. Бризантность позволяет уничтожать особо прочные объекты, ака танки, БТРы, роботы, НПСы в экзопанцирях, прочную но разрушаемую геометрию и т.д. Образуется в непосредственной близости от заряда ВВ, быстро рассевается, тут хороши гранаты которые от удара взрываются.
Насколько можно это реализовать в С.Т.А.Л.К.Е.Р.е? Ну осколки, просто подкрутит конфиг. Бронебойные осколки, правка движка, в оригинале бронебойность осколков нулевая. Отражённая ударная волна, тут всё сложней, конечно требуется правки движка, алгоритм надо ещё разработать. Бризантность, тут тоже желательно правки движка, но можно обойтись и скриптовыми костылями.
Конечно, скажете вы, что и так сойдёт. Но мне не сойдёт, я хочу уничтожать БТРы гранатой РГН, или РПГ-40, и только прямым попаданием, но зато требуется только 1-2 попаданий. Так реалистичней и проще, логичней.
В играх упрощают все чего не видит игрок и что может его раздражать, кроме того под нож чаще всего идут эти "реалистичные" фичи т.к. их мало того что не видно так и они могут жрать ресурсов как не в себя.
Образно говоря если брать гранаты и к примеру в игре есть требование что бы были осколки. Реализовывать честно слишком дорого поэтому проще сделать следующее:
1) Граната наносит урон по сфере урона.
2) этих сфер образно говоря делают 3. Первая самая маленькая и в ней максимальный урон(рванула прям под ногами с вероятнее всего убьет). Вторая сфера радиусом раза в 2 больше первой, наносит гораздо меньше урона но тут появляется коэфициент, все динамические\физические объекты с шансом N могут получить "какбы осколок", сам коэфициент = типу гранты. И третья сфера самая большая(опять же по типу гранаты) просто есть шанс получить осколок и пинка в физ модели.
3) Что бы хоть как то это визуализировать и игрок поверил что осколки действительно летают, художники рисуют партиклы взрыва и делают разлетающиеся с него прямые искры едва заметные. После этого внимательный игрок глазами уже верит что осколки вылетают.
4) Что бы добавить "реалистичности" в п.2 добавить быструю трасировку перед "прилетом" осколка, есть ли прямая видимость объекта. Да костыль но это дешевле трасировки каждого каждого осколка. Образно такая разница, граната разлетелась на 1000 осколков, трасировать честно каждый дорого, а тут по "шансу" уже изначально многие не попадут никуда т.е. в статические объекты\молоко которые и нефиг трасировать.
5) Если нужно добавить еще больше дешевой "реалистичности" то в п.4 добавляют шанс, скажем 5% что даже если игрок за каким то объектом то всеравно его пнуть и задамажить.
На выходе для 99% игроков получится ровно тот же экспириенс что и с честным рассчетом каждого осколка но по производительности будет огромный буст.
6) Симулировать ударную волну тоже можно гораздо более дешевыми путями вместо дорогих. Снова вводятся коэфициенты как в п.5. Да в каких то ситуациях это будет глупо и явно палевно но в большинстве случаев работать и обманывать игрока т.к. отраженная волна значит игрок уже изначально не видит источник взрыва а значит можно сразу сделать кучу допущений.
Хорошие игры делают так чтобы игрок видел и верил в кучу фишек, но сами фишки являются илюзией для обеспечения максимального быстродействия.
Вот кстати вспомнил такой костыль. В свое время задротили по локалке в CSS, немного его модили, точнее был свой билд с кастомными текстурами\шейдерами\моделями\звуками\параметрами оружия в ctx. И вот очень всем хотелось чтобы HE грена давала небольшой писк\глушила если рванула рядом. Уже не помню как но я попробовал тупой прием с такой илюзией, звуковым редактором добавил к взрыву грены этот писк, пришлось конечно поиграть с его громкостью но это сработало. Вообще почти никто не понял фокуса но все афигивали что она немного глушит. Вылезшую проблему что источник звука всегда был статичен на точке взрыва никто особо не понимал ушами.