система видимості

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

система видимості

Абсолютна більшість питань по видимості виникає через те, що ця тема з точки зору «побутової» логіки здається дуже простий. І дійсно: маячить корабель на горизонті - спостерігач повинен бачити точку, а в бінокль - силует. Йде корабель в димах - спостерігач повинен бачити іноді переглядає крізь завісу контур. Але, коли мова заходить про багатокористувацької грі (а World of Warships до цього виду належить), вирішальну роль починає грати не докладне відтворення реальності, а чесність, играбельность і оптимізація.

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

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

Оптимізація - це розумний витрата ресурсів клієнта і сервера, згідно одержуваного ефекту. Чи треба, щоб видимість кожного корабля розраховувалася з кожного літака «по-чесному», з урахуванням рельєфу місцевості, або вистачить простого правила «виявлення в межах X кілометрів»? Чи важливо відобразити, як з туману плавно виходить ворожий корабель чи достатньо обмежитися механікою «засвіти»? Оскільки сервер в бою і так навантажений непогано, особливо обчисленнями з балістики і системі шкоди, оптимізація тут грає найважливішу роль.

Виходячи з перерахованих вище вимог і реалізована система видимості в World of Warships.

Важлива особливість: видимість в грі розраховується не в клієнті (комп'ютер гравця), а на сервері.

Саме сервер «знає», що, де і коли ви повинні побачити в грі. Це, зокрема, захищає видимість від різноманітних махінацій. Наприклад, якщо гравець якимось чином відключить відображення димової завіси у себе в клієнті, він не зможе дивитися крізь неї в бою. Сервер все одно буде підтримувати відображення диму в потрібному місці і показувати гравцеві тільки тих супротивників, які не приховані за хмарою. З іншого боку, внаслідок такої реалізації в механіці видимості є ряд ігрових умовностей начебто «миготливих» есмінців. Їх ми постараємося розглянути далі.

Базові принципи видимості, маскування і огляд

Почнемо з самого головного - з виявлення противника. Важливість настройки цього параметра полягає вже в тому, що дистанції морського бою величезні. Настільки величезні, що корабель може «сховатися», якщо у нього достатньо низький профіль або досить хороший камуфляж. З огляду на різні атмосферні явища і, як не дивно, круглу форму Землі, ситуація «все бачать всіх» на квадраті 40 × 40 км в принципі є неможливою. Отже, параметрами, визначальними виявлення в грі, є маскування та огляд.

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

Огляд - це, по суті, максимальна дистанція виявлення. В її межах ми здатні бачити об'єкти в 3D-світі. В клієнті цей параметр не виводиться, він завжди вище маскування для одного і того ж літака або корабля.

Отже, маскування (видимість) - це відповідь на питання «З якої відстані видно мене?»; огляд - це відповідь на питання «На якій відстані я можу бачити інших?».

А тепер найголовніше: як ці величини взаємодіють?

ВАЖЛИВО: огляд і маскування працюють разом. Якщо взяти спостерігача і мета, то для виявлення мета повинна знаходитися в межах огляду спостерігача, а спостерігач - в межах видимості мети.

Лінкори А і B з однаковими параметрами маскування і огляду один одного не бачать. Вони обидва знаходяться в межах огляду один одного. Однак вони також перебувають поза межами видимості один одного, тому виявлення не відбувається.

система видимості

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

система видимості

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

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

система видимості

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

система видимості

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

Відзначимо також, що у випадку з виявленням «союзник - союзник» видимість ролі не грає: все союзники за замовчуванням вважаються виявленими один для одного.

На цьому можна було б заспокоїтися, якби не три аспекти:

1. Для виявлення корабля кораблем між ними повинна бути лінія прямого погляду. Ця лінія може бути перервана як ландшафтом, так і димовою завісою.

Завдяки цій перевірці кораблі не можуть бачити один одного крізь скелі і густі хмари диму. Це цілком логічно і потрібно. Для перевірки від верхньої точки корабля-спостерігача проводиться уявна лінія до верхньої точки корабля-мети (раніше перевірялися також крайні точки, але це прибрали за непотрібністю). Якщо лінії нічого не заважає, вважається, що кораблі один одного можуть бачити.

2. У всіх кораблів є дистанція гарантованого виявлення. Базова - 2 кілометри. У цьому радіусі корабель буде виявляти всі кораблі незалежно від димів і ландшафту.

Маскування - це добре, але «заховати рояль в кущах» не вийде. На такій маленькій дистанції все кораблі завжди бачать один одного.

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

Оскільки літаки в будь-якому випадку спостерігають мета зверху, лінією прямого погляду для них було вирішено знехтувати. Тому сховатися від авіації за скелею не вийде. Але, якщо корабель перебуває в димовій завісі, літак його виявити не зможе. Навіть пролітаючи прямо над ним.

Здається, ми розібралися з основами виявлення кораблів. Однак для повного уявлення про систему видимості в World of Warships цього недостатньо. У наступній частині ми поговоримо про явища, здатних значно змінювати і доповнювати озвучені вище принципи, - модифікатори.

Залишайтеся з нами!

Схожі статті