SHTF. Дневник разработки 6 - грань реализма от баллистики до акустики
Итак, прошло лето, и закрыв примерно сотню тасков на Trello (и открыв еще сотни четыре новых там же), мы медленно, но верно приближаемся к первым тестовым каткам. В качестве хостинга выделенных серверов под игровые сессии выбран Amazon Game Lift - но тут уже надо смотреть, как пойдет тестирование.
За лето было сделано много неинтересных задач типа рефакторинга интерфейсов (классов, а не UI), переписывания баллистики, вычистки проекта, переработки репликации анимации и прочего, что надо было сделать, но при этом в процессе работы прогресса почти не чувствовалось. Это откровенно напрягало, да еще и лето выдалось жарким, но вот сентябрь уронил температуру до +5 и мы внезапно закончили этот блок работ и получили возможность добавлять вдумчивый игровой контент в промышленных количествах.
При этом мы все так же страдаем от отсутствия хорошего, годного пиарщика в нашей команде, и уйдя в разработку как то позабыли постить вообще.
А сегодня я хотел написать про реалистичные механики в играх - на уровне рассуждения и нахождения компромиссов. Еще в начале разработки я заявил, что мы будем стремиться к реализму в нашей игре, чтобы SHTF отличался от этих ваших RUST-ов суровостью механик и правдоподобностью игрового процесса. Но одно дело заявить, а другое - как это все будет выражаться в конкретных геймдизайнерских решениях.
Итак, для примера возьмем автомат, на нем - планка Пикатинни, что наводит игрока на мысль: "Я могу поставить туда оптический прицел или коллиматор".
Но не тут-то было. Кто устанавливал оптику хотя бы на страйкбольное оружие - тот знает, что прикрутив прицел к планке сразу пользовать оружие смысла нет - надо сначала сделать пристрелку. В игре можно было сделать нечто подобное - нацепи прицел, но пули будут лететь не туда, куда ты целишься. Вот только игрока это скорее всего разозлит и погружению в игровой процесс не поспособствует. Геймплейным решением может стать создание, например, приобритаемого навыка "Пристрелка", обладая которым игрок получает возможность устанавливать/заменять оружейную оптику, а всем остальным игрокам остается довольствоваться уже предустановленными аксессуарами.
Далее игрок начинает целиться, и через оптический прицел видит мишень в 400 метрах от себя. Выстрелив мишени в голову, игрок хорошо если попадет по ногам - пуля 7,62х39 через 400 метров ляжет метра на полтора ниже цели. Гравитация - она та еще сука.
Чтобы попасть в мишень, игры (к примеру PUBG) практикуют выставление "нуля" прицела на разные дистанции, например на 100-200-300-400-500 метров, но это тоже не совсем честно, потому что падение пули с расстоянием зависит не от прицела, а от патрона и длины ствола. Прокликивание прицельного устройства повышает прицельную метку на 2,5 см для мишени на расстоянии 100 м от стрелка, и стреляя на 400м для разных патронов прицел придется прокрутить на 8 кликов для патрона 5.56 NATO или на 15 кликов для 7,62х39. Причем чтобы знать это - игроку надо знать баллистические таблицы этих пуль.
Само собой я не настолько сволочной, чтобы заствлять игрока учить эти таблицы, но я ведь обещаю реализм. Давать честный оптический прицел и хай сами разбираются? Делать "умный" прицел, который будет подстраиваться под винтовку и переводить измерения в метры?
Сама по себе баллистика как механика не сложна для реализации. Главное убедиться, что твой снаряд не пролетит сквозь мишень (все физические расчеты проводятся раз 10 в секунду, и пуля за это время пройдет до 80 метров), не сожрет много вычислительного времени, и что на всех клиентах игры все пули летят одинаково с точностью до сантиметров. Дальше уже можно добавлять "по вкусу". Например, чтобы пуля летела в соответствии с баллистическими таблицами, надо учесть сопротивление воздуха, и понижать скорость пули каждый тик, а также учесть аэродинамическую устойчивость той или иной пули - по сути снижая ускорение свободного падения на некоторый коэффициент для разных пуль.
Но есть же еще и боковой ветер. На дистанциях до 100 метров он не важен, а вот при снайперской стрельбе может изрядно огорчить. Игра SCUM к примеру предлагает оценивать скорость ветра по колыханию деревьев или углу падения дождевых капель (я серьезно - https://youtu.be/VeCXV2Klt1g?t=503 ), и это похоже на издевательство над игроком, но в то же время и круто. И тут разработчик должен задать себе вопрос - хочу ли я чтобы игроки страдали, и если хочу - то насколько. В конце концов игры, которые дарят игроку хорошие, качественные и дозированные страдания - порой достаточно востребованы.
Далее звук. Точнее три звука. Один от выстрела, второй от пролета пули мимо наблюдателя, третий от попадания. На наш взгляд звуки очень важны, и на них ни в коем случае нельзя забивать. Озвучка хороша, если никто из игроков не обратит на нее внимания и все воспримут как нечто естественное. А значит мало просто проигрывать звук. Во-первых надо учесть скорость распространения звука. Во-вторых падение громкости с растоянием - оно нелинейное. В третьих - искажение звука с расстоянием - высокие частоты искажаются больше, чем низкие, и звук с растоянием меняет тембр. Звонкий выстрел "хыдыщь" с расстоянием превратится в гулкое "птух". В четвертых искажение звука акустикой окружения. В помещении все звучит иначе. В пятых наличие преград между источником звука и слушателем рассеивает источник. И само собой звучание должно быть бинауральным, чтобы сходу определить, откуда был звук.
К счастью Unreal Engine позволяет это сделать достаточно удобными инструментами, но и тут придется искать компромисс, если вы конечно не разрабатываете Hellblade и не пытаетесь выжать звук на максимум возможностей.
Короче говоря, постоянно приходится искать компромисс между тем что хочешь (и обещался) сделать, что можешь, и что надо. Заранее предвкушаю, что в любом случае найдется кто-то, кто будет предъявлять по итогу - то сделал не так, это не реалистично, вот так вот в жизни не бывает и тп. А я что? Я хочу сделать реально, но на практике это немного нереально...
Эксперимент - стрельба из пушек
Экспериментом, который неоднократно повторялся, является стрельба из пушек по вертикали и горизонтали во всех основных направлениях. Если бы земля под нами действительно вращалась в восточном направлении, как это предполагает гелиоцентрическая модель, то ядра из пушки, выпущенные вертикально, должны падать заметно западнее. На самом же деле, когда бы этот эксперимент ни проводился, пушечные ядра, выпущенные идеально вертикально отвесной линии, освещенные огнепроводным шнуром, в среднем за 14 секунд достигали верха и падали обратно в течение 14 секунд не более чем на 2 фута (0,6м) от пушки, или иногда прямо обратно в дуло! Если бы Земля на самом деле вращалась со скоростью 600-700 миль в час (965-1120 км/ч) в средних широтах Англии и Америки, где проводились эксперименты, пушечные ядра должны падать на целых 8400 фута (2,6 км) или около мили с половиной позади пушки!
«Следующий эксперимент проводился много раз, и разумные выводы, исходящие из него, полностью противоречат любой теории движения Земли. Заряженная пушка была установлена вертикально на отвесе, произведено геометрическое нивелирование и совершен выстрел. В среднем ядро находилось в воздухе 28 секунд. В ряде случаев ядро возвращалось в дуло пушки и никогда не падало более чем на 2 фута (0,6м) от пушки. Теперь давайте посмотрим, каким бы был результат, если бы Земля была постоянно вращающейся сферой. Ядро будет запущено в двух направлениях: одно из пушки вертикально, а другое на земле с запада на восток. Пока оно будет набирать высоту, земля с пушкой должна значительно сместиться. При падении на него не будет влиять импульс от движения земли или от пушки, и оно будет падать по прямой линии, но пока оно будет падать земля с пушкой должны переместиться. И ядро должно упасть (с учетом вращения 600 миль в час в Англии) дальше, чем на 1,5 миль (2.4 км) от пушки»- А.И. Скеллам
Опять же в этот момент отчаянные гелиоцентристы не уступают и с тройной силой утверждают, что пушечные ядра падают в то же самое место, потому что магические свойства тяжести позволяют Земле каким-то образом тянуть вместе с собой атмосферу в идеальной синхронизации с её осью с такой головокружительной скоростью, что это полностью незаметно для наблюдателя и неизмеримо экспериментальным путем! Это весьма маловероятно, хотя это умное и удобное объяснение подходит только для вертикально заряженных пушек.
Если же пушки вместо этого стреляют во всех направлениях, то даже гелиоцентрическая атмосфера-липучка становится недоступной для игры. Пушечные ядра, выпущенные на север/юг, поддаются контролю, а, выпущенные же на восток, должны упасть значительно дальше, чем все остальные. Ядра, выпущенные на запад, должны упасть значительно ближе из-за предполагаемой скорости вращения в 19 миль в секунду в восточном направлении. Однако, независимо от направления, ядра, выпущенные на север, юг, восток и запад, пройдут одно и то же расстояние.
«Сидя в быстро движущемся вагоне произведите выстрел из пружинного ружья вперед, т.е. в направлении движения поезда. Теперь пусть то же самое ружье снова выстрелит, но в противоположном направлении; и всегда будет происходить так, что в первом случае пуля или другой снаряд будет улетать дальше, чем в последнем. Если человек во время полного галопа соскочит с лошади назад, то он не сможет прыгнуть на такое же большое расстояние, если бы выпрыгнул вперед.
При прыжке вперед или назад с движущихся саней, вагона или другого средства передвижения мы видим тот же самый результат испытания. Можно привести много других практических примеров, показывающих, что любое тело (предмет), выброшенное с другого тела (объекта) во время движения, не проявит того же поведения, если оно будет выброшено в состоянии покоя.
И одни результаты, когда предмет выбрасывается в том же направлении, в котором движется объект, а другие, когда он движется в противоположном направлении. Потому что в первом случае выбрасываемый предмет получает свой импульс от метательной силы, плюс учитывается, что тело движется; а в последнем случае является минусом то, что тело движется.
Следовательно, если земля движется с запада на восток, то пушка, выстрелившая в восточном направлении, должна отправить ядро на большее расстояние, чем если бы выстрел был произведен на запад. Но самые опытные артиллеристы, с большим опытом практики, как дома, так и заграницей, почти во всех широтах заявили, что никакой разницы не наблюдается. В зарядке и нацеливании этих ружей никакой разницы в работе никогда не требовалось.
Артиллеристы военных кораблей заметили существенную разницу в результатах их стрельбы из оружия в носовой части, когда корабль быстро движется к объекту обстрела, и при стрельбе из оружия, находящегося на корме во время плавания от объекта. В обоих случаях результаты отличаются от тех, которые наблюдались при нахождении судна в полном покое. Эти детали, подтвержденные опытным путем, совершенно несовместимы с предположением о вращении Земли» – Д-р Самуэль Роуботам.
«Было доказано, что если снаряд будет выпущен с быстро движущегося тела в противоположном направлении от движения тела, то пройденное расстояние до падения будет меньше, чем, если бы выстрел был произведен по направлению движения. Теперь, когда говорится, что Земля движется со скоростью 19 миль в секунду с «запада на восток», то должны быть видимы все различия, если оружие выстрелит в противоположном направлении. Но на практике нет даже малейшего различия; независимо от того, каким бы путем это не было бы сделано, мы имеем убедительное опровержение всех фантазий относительно движения Земли» -Уильям Карпентер
Пушка VS Баллистический гель
Эрик выходит на новый уровень безумия:37 мм пушка против 1 метра геля.
Смерть квадрокоптера от летящей тыквы
Текст, фото и видео взято с сайта Geektimes.ru
Я привез свой квадрокоптер Phantom 2 на тыквенную ферму. У них там есть пушка, которая стреляет тыквами в лес (летят они метров 60 со скоростью более 300 км в час). Моя дочь сказала: «Было бы классно заснять видео из леса»…
В общем, я направил квадрокоптер в лес, прямо напротив деревьев, немного выше их верхушек. Я спросил парня, управлявшего пушкой, куда полетят тыквы, и он указал на небольшой участок, где на деревьях было меньше листьев. Я установил коптер в 4 метрах левее этого места. И вот этот момент парень дергает за рычаг, и тыква взлетает, немного отклоняется вправо, а потом…
Потом у меня не было времени как-то отреагировать. Тыква врезалась в квадрокоптер, и вот вам убыток в 500 долларов.
Внутренности коптера не пострадали. Три мотора пропеллера работали отлично. Четвертый нужно было перепаять. Камера GoPro выглядела и работала так, как будто никакой аварии и не было (вот только на нее налип кусок тыквы, но, когда я ее отчистил, она опять стала выглядеть замечательно).
А вот и видео:
Баллистический маятник
Иногда они возвращаются...
Вы хотите головоломок?
Их есть у нас! Красивая карта, целых три уровня и много жителей, которых надо осчастливить быстрым интернетом. Для этого придется немножко подумать, но оно того стоит: ведь тем, кто дойдет до конца, выдадим красивую награду в профиль!