World of Warships. Система видимости. Часть 1: обнаружение кораблей
05.04.2016    871

World of Warships. Система видимости. Часть 1: обнаружение кораблей


Уважаемые игроки! Представляем вам новую статью Филиппа Sub_Octavian Молодковца, из которой вы узнаете, как устроена система видимости в World of Warships. С точки зрения геймплея это одна из фундаментальных вещей. По сути, всё, что мы видим или не видим в бою, будь то корабли, самолёты или торпеды, определяется системой видимости. Выразить её одной формулой было бы невозможно, ведь разные игровые объекты имеют разные принципы обнаружения, а те в свою очередь могут изменяться множеством модификаторов. Словом, тему можно назвать объёмной. Эта статья призвана раскрыть её максимально и просто. Чтобы не пугать вас количеством текста, мы разбили публикацию на две части. Для начала давайте разберёмся с обнаружением кораблей. Приятного чтения!

Как реализована система?

World of Warships. Система видимости. Часть 1: обнаружение кораблей


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

Честность — это в данном случае равноправие игроков. Если я, скажем, установлю низкое качество графики в настройках, отключу часть эффектов (может, даже модами) или как-то ещё изменю получаемую мной картинку, я все равно должен видеть ровно то же самое, что и другие игроки на моём месте. У игрока не должно быть возможности смотреть сквозь дымы, замечать противника на большей дистанции и так далее.

Играбельность — это соответствие игровых механик жанру (тактический MMO-экшен). У нас не симулятор стрельбы на предельную дистанцию с нервным наблюдением марева на горизонте. В World of Warships должно быть в меру просто, в меру сложно, достаточно динамично, и чтобы игрок управлял огромным красивым кораблём, стрелял, запускал самолёты, маневрировал. Таким образом, от системы видимости требуются простота и эффективность.

Оптимизация — это разумный расход ресурсов клиента и сервера, сообразно получаемому эффекту. Надо ли, чтобы видимость каждого корабля рассчитывалась с каждого самолёта «по-честному», с учётом рельефа местности, или хватит простого правила «обнаружение в пределах X километров»? Важно ли отобразить, как из тумана плавно выходит вражеский корабль или достаточно ограничиться механикой «засвета»? Поскольку сервер в бою и так нагружен неплохо, особенно вычислениями по баллистике и системе урона, оптимизация тут играет важнейшую роль.

Исходя из перечисленных выше требований и реализована система видимости в World of Warships.

Важная особенность: видимость в игре рассчитывается не в клиенте (компьютер игрока), а на сервере.

Именно сервер «знает», что, где и когда вы должны увидеть в игре. Это, в частности, защищает видимость от разнообразных махинаций. Например, если игрок каким-то образом отключит отображение дымовой завесы у себя в клиенте, он не сможет смотреть сквозь неё в бою. Сервер всё равно будет поддерживать отображение дыма в нужном месте и показывать игроку только тех противников, которые не скрыты за облаком. С другой стороны, вследствие такой реализации в механике видимости есть ряд игровых условностей вроде «мигающих» эсминцев. Их мы постараемся рассмотреть далее.

Базовые принципы видимости, маскировка и обзор

Начнём с самого главного — с обнаружения противника. Важность настройки этого параметра заключается уже в том, что дистанции морского боя огромные. Настолько огромные, что корабль может «спрятаться», если у него достаточно низкий профиль или достаточно хороший камуфляж. Учитывая различные атмосферные явления и, как ни странно, круглую форму Земли, ситуация «все видят всех» на квадрате 40 × 40 км в принципе не представляется возможной. Итак, параметрами, определяющими обнаружение в игре, являются маскировка и обзор.

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

World of Warships. Система видимости. Часть 1: обнаружение кораблей


Обзор — это, по сути, максимальная дистанция обнаружения. В её пределах мы способны видеть объекты в 3D-мире. В клиенте этот параметр не выводится, он всегда выше маскировки для одного и того же самолёта или корабля.

Итак, маскировка (видимость) — это ответ на вопрос «С какого расстояния видно меня?»; обзор — это ответ на вопрос «На каком расстоянии я могу видеть других?».

А теперь самое главное: как эти величины взаимодействуют?

ВАЖНО: обзор и маскировка работают вместе. Если взять наблюдателя и цель, то для обнаружения цель должна находиться в пределах обзора наблюдателя, а наблюдатель — в пределах видимости цели.

Пример 1

Линкоры А и B с одинаковыми параметрами маскировки и обзора друг друга не видят. Они оба находятся в пределах обзора друг друга. Однако они также находятся вне пределов видимости друг друга, поэтому обнаружения не происходит.

World of Warships. Система видимости. Часть 1: обнаружение кораблей


Пример 2

Линкор А не видит эсминец B. Эсминец B видит линкор А. Оба корабля, могут «дотянуться» друг до друга обзором, однако эсминец находится в радиусе видимости линкора, при этом благодаря своему меньшему радиусу видимости выдерживает достаточную дистанцию, чтобы не быть обнаруженным.

World of Warships. Система видимости. Часть 1: обнаружение кораблей


После этих двух примеров вы можете задать закономерный вопрос: а зачем вообще нужен обзор, если обнаружение происходит исключительно по видимости? Чтобы понять это, рассмотрим следующий пример с так называемым «подсветкой» или «командным засветом».

Пример 3

Крейсер B видит эсминец A с помощью своего союзника — эсминца C. Последний видит эсминец А, отвечая всем озвученным выше требованиям для обнаружения. В итоге крейсер B наблюдает эсминец A в 3D-мире (и может стрелять по нему), поскольку тот находится в радиусе обзора.

World of Warships. Система видимости. Часть 1: обнаружение кораблей


Если бы дистанции обзора у крейсера B не хватило, то, несмотря на факт обнаружения, он наблюдал бы тоскливый незакрашенный красный треугольник на мини-карте вместо противника в прицеле, потому что все корабли, находящиеся вне обзора наблюдателя, отображаются для него незакрашенным значком на карте. В 3D-мире их увидеть невозможно.

World of Warships. Система видимости. Часть 1: обнаружение кораблей


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

Отметим также, что в случае с обнаружением «союзник — союзник» видимость роли не играет: все союзники по умолчанию считаются обнаруженными друг для друга.

На этом можно было бы успокоиться, если бы не три нюанса:

1. Для обнаружения корабля кораблём между ними должна быть линия прямого взгляда. Эта линия может быть прервана как ландшафтом, так и дымовой завесой.

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

2. У всех кораблей есть дистанция гарантированного обнаружения. Базовая — 2 километра. В этом радиусе корабль будет обнаруживать все корабли вне зависимости от дымов и ландшафта.

Маскировка — это хорошо, но «спрятать рояль в кустах» не получится. На такой маленькой дистанции все корабли всегда видят друг друга.

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

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

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

Оставайтесь с нами!