Граната с ударным взрывателем.

Тема в разделе "WASM.A&O", создана пользователем Intro, 21 окт 2022.

  1. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    561
    Все любят играть, ну многие любят играть, а ещё любят играть и некоторые военные.
    И у них пригорает, то, как реализовали оружие у этих тупых пограмисты. Посмотрите как реализованы первые игра, ну шутеры, первые ой... Смешно... Просто их делали мальчики, которые, не точно бляяядъъъ не воевали, да у них.. ну ладно... про это лучше не надо.
    На этот раз код, который максимально реализует гранаты с ударным запалом, то есть РГО и РГН.
    Эти гранаты взрываются от резкого ускорения, стало быть использовать метод контакт с твердым телом не правильно.
    Вот кусочек кода.
    Код (Lua):
    1.  
    2. local lvel = vector()
    3.   ph_shell:get_linear_vel(lvel) -- основной показатель удара, динамическое изменение вектора скорости!
    4.   if self.dwTimeSafetylock < time_global() and self.vLastLvel:distance_to(lvel) > self.fVelThreshold then
    5.     self:ParticleStop()
    6.     grn:explode(0)
    7.     return true
    8.   end
    9. self.vLastLvel:set(lvel)
    10.  
    Дальше разбирайтесь сами. мы просто считает вектор скорости, ели он превысил определённый порог, то даём команду на подрыв гранаты, при чём блокируем на определённое время, чтобы граната не взорвалась, если в момент броска вы её уронили(в РГО и РГН это 1.2 - 1.8 сек, у меня 1 сек).

    Всё это к тому, что многие пограмисты не понимают что такое оружие, и надо отдельного программиста, который разбирался в теме, может быть он даже и воевал ,и что называется нюхал пороха. Ну ели вы поняли о чём Я.
    ЗЫ
    Надо потом про свой ПЗРК.... ну это потом... наверное!
     
  2. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Правильно, а лучше и не одного а много, чтоб было из кого выбрать, больше военных игр хороших и разных. Можно ещё другого реализма добавить, окопы рыть, выживи в лесу зимой в мокрых обмотках, мародерство и вот это всё.
     
  3. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    439
    Ну написано же self.vLastLvel:distance_to(lvel), что значит _изменение_ скорости с предыдущего таймтика.
    Но наличие в коде проверки self.dwTimeSafetylock < time_global() вызывает глубокие сомнения в стабильности таймтика, а значит код выглядит неправильным - если фпс высокий, то боньбы будут взрываться от большее низких воздействий сил нежели при низком фпс. Надо множить на дельту чтобы добавить стабильности поведения или делать таймтик стабильным, не зависящим от фпс (тогда и проверка на TimeSafetyLock не нужна).
    Впрочем отвязать таймтик от фпс (если речь не про консоли 80-х и 90-х) очень желательно.
     
  4. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    561
    aa_dav В хрее есть метод который вызывается строго 100 раз в секунду, там именно с такой частотой работает физика, из-за этого физика начинает глючить если ФПС больше 100. И если код переносить из скриптов в движок, то лучше всего именно туда, в других движках надо смотреть как там физика работает. Многие любят многие сотни ФПС, покупают 4090.
    Идея именно мерить изменения вектора скорости, именно так алгоритм наиболее достоверно работает, по настоящему. Но все пограмисты тупо смотрят колбек на контакт с твёрдой геометрией, это соответствует контактному взрывателю, который есть например в ракетах для РПГ-7, так наконец-то сделали в таркове в конце прошлого года, думал эти пограмисты никогда эти гранаты не смогут сделать.
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Вообще, последнее время совершенно какие-то попытки в гиперреализм не находят отклика у меня. Ни одной такой игры не прошел, скучно. С другой стороны стилизованные вещи, типа Культа Ягненка и Странного Запада отлично и приятно игрались. Мне кажется, что какая-то сверх реальная графика или физика не должна идти наперекор геймплею, таки это игры, в них должно быть весело играть, а не обдумывать, как в них реализована физика гранаты, кого вообще это должно волновать?
     
  6. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    561
    Rel, ну тут всё просто. Если у тебя шутер и оружие там более или менее достоверное, то мы просто игрока обучаем как бы, ну даём первоначальное представление о оружии. Чтобы этот додик, который не разу не использовал настоящие оружие, смог его быстрей освоить, если у тебя в стране начался день Х. Так делают например в некоторых модах сталкера заряжание магазинов, прежде чем зарядить оружие, набей магазин патронами, правда многие считают скучной механикой. В том же таркове решили реально максимально механикой оружия заморочится, правда с РГО и РГН что-то не заладилось, механика не достоверная(да и сделали совсем не давно). Так же очень полезно делать максимально достоверно такое оружие как РПГ, игрок освоив его в игре, в настоящий игре без сохранений уже его освоит гораздо быстрей. В том же сталкере РПГ-7 и другие гранатомёты реализованы максимально по дебильному и сильно не достоверно, делал кретино-бомбино, тупейший код. Где тут в интернете говнокод выкладывают? Надо показать народу.
     
  7. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    https://govnokod.ru/
     
  8. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Почему вообще оно не должно взрываться если случайно уронили?
    Взрыв при столкновении с твердым телом тоже выглядит нормальным допущением, вероятность того что граната будет скользить по чему-то мягкому вроде невелика.
     
  9. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    561
    Мир сталкера сложный, там много чего может произойти, например гранату может откинуть псевдогигант, если бросок гранаты был близки, запал не успел взвестись, то в этот момент граната взорвётся, сама граната взорвётся через 3.8-4.2 сек если удара не было. В запале УДЗ блокируется ударный взрыватель на 1.2-1.8 сек, за это время от удара не взрывается, так что использовать callback на контакт с геометрией не правильно, хотя все делают именно так. В общем, мой код очень точно механику ударной гранаты моделирует!

    Гранаты Ф-1 это я просто скрипт тестирую.