Адмирал на час: как устроена игра World of Warships

Продолжаем рассказывать, как устроена World of Warships, однА из самых эпичных военно-морских игр. Ее создателям из питерского филиала Wargaming.net удалось столкнуть в масштабном морском бою более двухсот кораблей первой половины XX века. Степень реалистичности впечатляет: не только внешний вид, , но и поведение кораблей в бою максимально приближены к реальности.
91dc888e4e5d12aaf18e7cae4f3e7019_cropped
Александр Грек
58 минут назад

Обсудить 0

Большинство игроков World of Warships играют из-за морских артиллерийских дуэлей. Тут есть где развернуться — от адреналиновых краткосрочных кровавых перестрелок между эсминцами и крейсерами до сверхдальних медленных 20-километровых перестрелок между линкорами. Вряд ли кому из нас довелось в жизни участвовать в подобных баталиях, но, читая книги, я представлял их примерно так. Чтобы разобраться, насколько все это похоже на реальную жизнь, я смотался на денек в Санкт-Петербург к разработчикам.

Боги войны

По какой кривой летят снаряды? Большинство ответит — по параболе, но будут правы только частично. По параболе снаряды летают в безвоздушном пространстве. Программируется это просто и надежно, но очень уж далеко от исторических реалий корабельных сражений. Поэтому в World of Warships траектории полетов другие. В реальном морском бою снаряд, выпущенный на максимальную дальность, в полете успевал замедлиться, потерять горизонтальную скорость и прилетал к цели практически вертикально, всем своим весом обрушиваясь прямо на вражескую палубу. В отличие от бортов, палуба обычно слабобронированная, так что прилетевший сверху снаряд имел все шансы с легкостью ее пробить и взорваться внутри, нанеся значительный урон кораблю.

Как утопить линкор
Как утопить линкор
Самое незащищенное место кораблей — палуба. При стрельбе на предельные дистанции снаряды падают вертикально, поэтому искусный стрелок может наносить с больших расстояний сильный урон.

На средних дистанциях снаряд прилетал уже не отвесно сверху, а под определенным углом, чаще попадая в бронированные борта (а если в палубу, то вскользь). За время полета скорость снаряда успевала упасть, да и при попадании под углом шансы на пробитие снижались. Это приводило к интересной особенности: зачастую на определенном расстоянии от противника корабль мог чувствовать себя в относительной безопасности. Ну и на малой дистанции снаряд прилетал в борт почти перпендикулярно и на большой скорости, вследствие чего имел отличные шансы пробить броню и влететь прямо в кают-компанию, безнадежно испортив настроение членам экипажа.

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

Лучше всего стрелять по ватерлинии в районе трубы. Если пробьешь броневой пояс, то попадешь в машинное отделение или в орудийный погреб, это вообще бинго.

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

Гнем параболы

Для начала попробовали искусственно погнуть параболы, чтобы придать им более подходящий вид. Чем не вариант: выдать гейм-дизайнерам плоскогубцы и напильники, и пусть гнут траектории, как захотят, настраивая, под какими углами и с какими скоростями должны прилетать снаряды в зависимости от дистанции. Но где взять все эти углы и скорости, чтобы они соответствовали правильным значениям? И сколько месяцев понадобится, чтобы аккуратно подогнать псевдопараболы для десятков и сотен разнообразных орудий, добиваясь для каждой пары кораблей достоверных зон свободного маневрирования и корректных вероятностей нанесения урона? И сколько еще доработок придется внести из-за того, что текущих «винтиков» не хватило, чтобы корректно настроить траектории для всех кораблей? Нет, этот вариант запросто мог завести в тупик. Требовалось что-то более изящное и простое. Обсудив сложившуюся ситуацию, разработчики пришли к выводу, что наиболее приемлемое решение — запрограммировать «честную» баллистику, чтобы снаряды в игре вели себя в точности так же, как и в настоящих боях. Тогда и подгонять вручную ничего не придется: добавив к честной баллистике приближенные к реальности законы пробития брони и нанесения урона (ведь мало попасть снарядом в корабль — надо его еще и пробить), можно автоматически получить все исторические особенности и нюансы артиллерийских боев применительно к конкретным кораблям.

Задача получалась не из простых: мало того, что придется численно моделировать законы полета снаряда, вылетевшего с заданной скоростью и под заданным углом. Придется также решать и обратную задачу: имея заданную дистанцию, находить требуемый угол стрельбы, при котором траектория придет точно в точку прицеливания. А если кораблей в бою штук тридцать, у каждого от двух до шести башен главного калибра, не считая второстепенного, да все они одновременно начнут стрелять, — сколько траекторий придется моделировать каждую секунду?

Для моделирования и исследования законов баллистики была создана специальная программа. В качестве начальных параметров для траектории задавались вес снаряда, калибр, начальная скорость и коэффициент сопротивления воздуха. Для любого существовавшего корабельного орудия первые три параметра, как правило, можно выяснить, почитав старые документы. Что касается коэффициента сопротивления воздуха, рассудили, что он должен иметь какое-то разумное значение и быть примерно одинаковым для снарядов похожей формы. Чтобы проверить правдоподобность законов полета снарядов, дальности стрельбы, полученные в программе, сравнивались с документальными. Для начала программисты попробовали просто учесть замедление снаряда от трения о воздух. Оказалось, что этого совершенно недостаточно: результаты сильно не совпадали с требуемыми. Наконец догадались учесть изменение плотности воздуха с высотой, и вот тогда совпадение дистанций стрельбы с документальными данными получилось практически идеальным — с точностью до 1%.

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

Как в жизни

Это был блестящий результат: теперь гейм-дизайнеры могли настраивать любое орудие, задавая всего три значения: калибр снаряда, вес и его начальную скорость — и практически сразу, без дополнительных настроек, добиваться абсолютно корректных траекторий и конечных скоростей. Правда, без некоторой доли условностей все же не обошлось. При стрельбе на больших дистанциях траектории получались настолько крутыми, что снаряд, взмывая в воздух, полностью пропадал из поля зрения и спустя десяток-другой секунд обрушивался на корабль будто из ниоткуда. Вполне реалистичная ситуация, но далеко не самая приятная с точки зрения геймплея. Чтобы ее избежать, траектории пришлось заметно сплющить, не меняя, разумеется, исходных углов и скоростей. Для решения обратной задачи — по заданной дальности найти угол возвышения орудия — строились специальные таблицы для каждого орудия. Эти таблицы заполняются один раз и пересчитываются, только если характеристики орудия были изменены. В бою значения не рассчитываются, а берутся из готовой таблицы по ближайшим просчитанным точкам, а затем усредняются. Таблицы пришлось строить двумерные: не только по дальности, но и по высоте конечной точки, ведь корабль вполне может целиться не только в идущего по воде врага, но и в какую-нибудь вершину горы. Поначалу таблицы получились огромными, но впоследствии удалось уменьшить их размер, используя тот факт, что на разных участках требуется разная плотность точек. В конечном итоге разработчики получили честную, легко настраиваемую и экономную баллистику. Формы траекторий, углы, дальности, скорости снарядов, а также время полета высчитываются предельно достоверно, что дает повод с гордостью заявлять о максимальной реалистичности поведения снарядов в игре.

Разломить пополам

Второе по популярности, но не по эффективности, оружие — торпеды. Именно ими можно переломить корабль пополам. Как и в случае с другими вооружениями, приходится много упрощать, вводить условности, поскольку реальный морской бой гораздо сложнее по сравнению с тем, что хотим получить в игре. Например, боезапас торпед, как и снарядов, не ограничен. Реальные торпедные аппараты далеко не всегда вообще перезаряжались. К тому же на корабле просто не могло быть большого запаса торпед. В World of Warships перезарядка занимает от нескольких секунд до двух минут, в зависимости от калибра торпед и количества труб в торпедном аппарате. Понятно, что в реальности такое невозможно. Опять же, перед пуском реальных торпед можно выставлять разные параметры, например глубину хода и скорость, и от этой комбинации зависит дальность хода. В World of Warships от этого ушли, потому что в бою одному человеку очень сложно следить за всеми параметрами. Излишний реализм вредит достаточно бодрой и веселой игре. Поэтому предполагается, что торпеды пускают на идеальной глубине и они не проходят под днищем корабля. Но в бою можно изменять ширину веера расхождения торпед.

В реальных торпедах были разные типы двигателей, и сочетания этого фактора и глубины хода давали разную заметность. В игре это в некотором смысле отражено. Например, на старших уровнях американские торпеды наносят относительно небольшой урон и двигаются чуть помедленнее, но у них и заметность ниже. Японские крупнокалиберные торпеды идут на максимальное расстояние, но имеют повышенную заметность. Существовали разные типы торпед, например с магнитным самонаведением, которые могли сами подворачивать. В World of Warships этого пока нет, торпеды идут прямо по идеальной траектории. К тому же у них идеальное качество — не случается осечек, не взрываются в трубе, что в реальных сражениях случалось довольно часто.

Убойные зоны

Принципиально важно, куда попасть. Достаточно одного попадания торпеды в корабль без противоторпедной защиты (ПТЗ), чтобы нанести существенный урон. Но на большинстве защита есть. Опытные игроки понимают, что в каких-то ситуациях выгоднее поймать залп бортом, где есть ПТЗ, чем носом или кормой, которые может сразу оторвать. По сравнению с настоящим кораблем игровая система повреждений сильно упрощена, но она есть, что отличает World of Warships от других шутеров. Разные части корабля имеют разную ценность и в реальности. Машинное отделение или орудийный погреб — критично, а жилые помещения — не очень. Самые важные узлы сосредоточены в бронированной цитадели в центре. Если туда попасть бронебойным снарядом, то нанесешь максимальный урон.

Идем ко дну

Никто не любит проигрывать, говорит руководитель отдела игровой аналитики Филипп Молодковец, поэтому сцен гибели кораблей смоделированы эпично — глядя на процесс погружения в пучину, можно запросто медитировать, что несколько сглаживает горечь потери. Корабли должны уходить красиво — это огромные массивные машины, почти города.

Первое, что определяет «похоронный» алгоритм, — класс корабля, какой урон он получал в последнее время и то, как он принял свою смерть. Если последний урон приходит ему в корму, то он и будет тонуть кормой. Если в нос, то носом. Оверкиль определяется тоже классом. Авианосцы исторически никогда не переворачивались, за них боролись до последнего, и документально случаи оверкилей авианосцев не зафиксированы. Нет их и в игре. В World of Warships они не переворачиваются, не ломаются пополам. Переломы бывают только в случае детонации оружейного погреба или при попадании торпеды в маленький корабль — эсминец или крейсер.

Время затопления также определяется уроном. Крейсер или линкор тонет примерно так: сначала корабль медленно начинает погружение, потом ускорятся и тонет. А вот эсминец держится на плаву дольше — может поплавком побарахтаться с минуту. Тип смерти определяет и эффект, который будет включен на гибель корабля. Если сгорел от пожара, то включаются взрыв и сильный дым. Если от торпеды, то никакого пожара и нет.

Есть три эффекта поведения воды при затоплении: пена, бурление и финальный фонтан. Сначала идет пена вокруг корабля, корабль принимает воду. Когда он опустился ниже определенного уровня, включается бурление, появляются фонтаны. Когда погрузился еще сильнее, отключается бурление, остается только пена. Финальный эффект — когда корабль совсем погрузился и выходит мощная струя воды с воздухом — тоже доступен не на всех кораблях.

Но самая красивая, обидная и редкая смерть — это детонация, когда взрывается погреб боеприпасов. Если это случается, корабль уничтожается сразу. Это происходит редко, но рано или поздно случается с каждым. Всякий раз, когда происходит попадание в бронированную цитадель, искусственный интеллект просчитывает шанс на детонацию погреба, но это в некотором роде рулетка. Если игрок очень невезучий, то детонировать погреб может с одного попадания. Только началась игра — и сразу закончилась в адском столбе пламени. На войне как на войне.

©  Популярная Механика