Реалистичная гидродинамика

ВСТУПЛЕНИЕ
На данный момент игровые механики флота предельно упрощены. Например визуально кильватерная струя исходит из центра корабля, а не от винтов как должно быть. В итоге создается впечатление, что корабль не идет а скользит по текстурам воды - но это к слову.

ОПИСАНИЕ ПРОБЛЕМЫ
Самое важное - это отсутствие реалистичной модели поведения корабля и суши. В гидродинамике такие эффект известны как “Проседание судна на мелководье” и “Эффект берега”, что в реальности ограничивает маневры крупных кораблей вблизи суши. Тогда как в вартандере корабли большого флота могут на полной скорости проходить вблизи скал, островов и берега если физическая глубина на метр превышает их статическую осадку. Такая проблема лишает морские бои важного тактического элемента и приводит, что большие корабли буквально протискиваются между островами, кемперят за скалами не говоря уже, что большие корабли буквально сбиваются в стадо, сталкиваются и т.д. (Но тут не реализован эффект гидродинамического присасывания - но речь не о нем).

Основная часть предложения по реализации игровой механики на основе закона Бернулли для кораблей большого флота
1Динамическое проседание на мелководье
В реальности когда крупный корабль идет на высокой скорости по мелководью, поток воды под днищем ускоряется, давление падает, и судно физически затягивает глубже в воду, увеличивая его осадку.
В игре наблюдается, что если глубина под килем становится критической, корабль на большой скорости начинает “проседать”. Возникает риск удара о грунт даже там, где в неподвижном состоянии корабль бы не сел на мель.
Как это реализовать в игре? Чтоб не сесть на мель (так как повреждения от грунта, скал или берега не реализованы) выдавать сообщение, что необходимо сбросить скорость (например до самый малый ход) так как эффект пропорционален квадрату скорости.

2Эффект берега или Bank Effect
В реальности при движении вблизи крутого берега вода между бортом и сушей сжимается и ускоряется. Носовая волна отталкивает нос корабля от берега тогда как у кормы создается зона низкого давления, притягивающая корму к суше.
В игре же корабль может вплотную подходить к суше, островам и скалам - главное сохранить условие разности глубины между днищем и грунтом.
Игровая реализация такого эффекта будет приводить, к тому, что если корабль большого флота на полном ходу попытается притереться к камням, то его начнет самопроизвольно разворачивать носом в сторону от берега, а корму заносить на берег или скалы. Поэтому большим кораблям придется закладывать больший радиус при огибании островов или проходить их на очень малом ходу.

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

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

Тяжелый корабль, неподвижно стоящий на мелководье у острова, под действием своей массы вытесняет воду из под днища в ил или песок, создавая вакуумный эффект “залипания” в грунте.

**В игре ** же корабль может применять танковую тактику стрельбы из-за камня включая попеременно передний или задний ход.

Игровой реализацией такого эффекта будет повреждение винта и рулей, пробоины днища если корабль остановился вплотную к острову а потом попытался резко тронуться с места вперед или назад. Кроме того необходимо ввести время набора скорости из полной остановки у берега в 2-3 раза из-за гидродинамического сопротивления водной среды.
В итоге, чтоб безопасно кемперить за островом, игрокам на больших кораблях придется держать дистанция не менее 100-200 метров в зависимости от класса, или не гасить скорость до нуля, сохраняя минимальную циркуляцию.

Техническая реализация

Спойлер

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

Для каждого крупного корабля вводятся три динамических коэффициента:

  1. текущий клиренс под килем(ТКК), рассчитываемый как разность глубины, статической осадки корабли и динамического дифферента;
  2. дистанция от левого или правого борта (ДБ) корабля до ближайшей геометрии ландшафта;
  3. относительная скорость корабля в процентах от максимальной (ВР).

Для реализации алгоритма проседания на мелководье, необходимо:

  1. условие активации - если значение ТКК становится меньше критического (например меньше 30% от статической осадки);
  2. Вводится формула динамического увеличения осадки дТ) которая является произведением коэффициента полноты судна (для каждого корабля константа), квадрата отношения скорости к 100, и повышающий коэффициент растущий по мере уменьшения глубины.
    В итоге полученное значение дТ принудительно прибавляется к текущей осадке корабля в физическом движке игры. Если сумма осадки и дТ превышает реальную глубину, регистрируется контакт с грунтом, наносящий урон днищу или винто-рулевой группе.

Для реализации алгоритма присасывания к берегу потребуется:

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

Для реализации эффекта залипания при начале движения от берега:

  1. условием активации является неподвижность корабля, минимальное значение ДБ а ТКК стремится к нулю, и если после проверки этих условий запускаются винты на полную мощность.
  2. При активации винтов у берега физический движок игры мгновенно увеличивает дифферент на корму на фиксированную величину - имитация вымывания воды винтами. А к переменной инерции корабля применяется дебафф-множитель.
    В итоге корабль будет трогаться с места крайне медленно, что будет близко к реальной картине. Если глубина под кормой была критической, искусственный дифферент приводит к удару винтами о грунт (черный статус винтов).

Исторические примеры.

Спойлер

Линкоры класса Айова. В техруководствах для кораблей такого класса (водоизмещение 45к т) было прописано ограничение скорости на мелководье (глубинах менее 15-20м) когда осадка при движении увеличивалось до 2м.

Бисмарк - при прохождении Кильского канала Бисмарк регулярно сталкивался с гидродинамическим сопротивлением мелководья. Так при заходах на мелководье, корабль неохотно слушался руля, а его корму притягивало к береговым склонам канала. Чтоб не врезаться в берег корабль шел на минимальном ходу.

Миссури и залипание у берега. При прохождении через мелководье Чесапикского залива корабль наткнулся на мель при скорости в 15 узлов. Эффект проседания намертво впрессовал корабль в ил. При попытке дать полный ход назад только ухудшил ситуацию, так как винты вымыли остатки воды, линкор осел еще глубже, забил грунтом системы охлаждения движетелей и повредил днище.

Эсминцы на мелководье
Хоть и малое водоизмещение - всего 1500-3000 т, но на мелководье тоже не все так хорошо было.

Эсминцы типа Флетчер. При скорости выше 20 узлов на мелководье у эсминцев данного типа волновое сопротивление возрастало лавинообразно и в итоге корабль не мог разогнаться. Мощность турбин уходила не в скорость, а в создание гигантской попутной волны, которая буквально «тащила» корму эсминца вниз к дну. Корма проседала, и возникал огромный риск ударить вращающиеся винты о камни.

Ля Фантскью считались самыми быстрыми эсминцами (45 узлов!), однако такую скорость могли развить только на глубокой воде. При заходе на прибрежный шельф, из-за влияния мелководья турбины начинали перегреваться, корма опасно уходила под воду, а управляемость падала до нуля.

Гибель эсминца «Аметист»
На реке Янцзы Аметист пытался маневрировать на мелководье реки под обстрелом. Из-за резких маневров на высокой скорости вблизи речных берегов сработал Bank Effect. Корабль потерял управление, корму занесло, и его на полной скорости выбросило на песчаную косу, где он стал неподвижной мишенью.

И ниже некоторые ссылки на физические эффекты и инциденты с кораблями из гугл-поиска.
Squat effect - Wikipedia
1950 USS Missouri grounding - Wikipedia
Ship Manoeuvring in Shallow and Confined Water | Flanders
U.S.S. Missouri (BB-63) Salvage Report
https://www.usni.org/magazines/naval-history-magazine/1991/september/hard-aground-thimble-shoal
Amethyst incident - Wikipedia
THE YANGTSE INCIDENT (Hansard, 26 April 1949)
Le Fantasque-class destroyer - Wikipedia

ЧТО ЭТО ДАСТ ДЛЯ ИГРОВОГО ОПЫТА ФЛОТА ВАРТАНДЕРА?
Прежде всего - это повышение ценности кораблей малого флота, которых не будут душить на мелководье корабли большого флота. Кроме того, на части карт кораблей большого флота можно было бы ввести “лягушатник” куда можно зайти только на катерах и захватить дополнительную точку, которая или просто немного повышает убыль очков победы или активирует береговую батарею, которая ведет огонь по большим кораблям. При этом возрождение на кораблях малого флота можно сделать только после потери большого корабля по логике возрождения на самолете - т.е. разделить число возрождений на больших кораблях от возрождений на малых - а то получается один игрок взял большой корабль, а другой взял катер первого ранга - и это считается за равноценное возрождение.

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

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

И окончательно - борьба с закамневыми кемперами, которые могут весь матч прятаться за скалой, оставаясь неуязвимыми и с такими игровыми механиками им придется больше действовать на открытом пространстве.

Как сейчас выглядят морские бои? Линкоры кемперят за скалами, а крейсера-эсминцы, ввиду отсутствия противников в лице линкоров душат бои малого флота.

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

Спойлер

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

  • За
  • Против
0 проголосовавших
2 лайка

Добавил опрос в конце, если туда кто то дочитает…

2 лайка

Многобукаф

О какой “реалистичной” гидродинамике может быть речь в игре где её в принципе нет?

В лучшем случае она будет визуально и физически достоверной )

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

5 лайков

Насколько знаю, со слов игроков которые работают в CDK это делается одним условием.

Дай угадаю: это условие «хотя бы иногда заходить в игру»?

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

Но это проблема вообще всех рек в игре

1 лайк

У меня вообще ощущение, что это давно правили и после опять сломали.

И формулировка там была такая шуточная мол “мы убрали шторм в озёрах на танковых картах” или что то такое.

1 лайк

Если ничего не пропустил, то нет, это не трогали.

Исправляли течение реки на тунисе (она текла из моря вглубь суши) и уровень воды на восточной провинции (несколько раз подряд), но волнение в лужах не трогали

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

был такой фикс, когда плавающие танки прыгали выше мостов

Кстати да. Особенно плавучие батареи будто там дискотека. Забавно наблюдать когда это подпрыгивает. Видимо какой-то отклик на коллизию.

Это не шибко сложно. Другой вопрос, что мощности которые смогут обработать такой объём информации в реальном времени просто нет.

Обработать 1 самолёт ещё можно, но не 30 в одной сессии ещё и синхронизировать.

Вот я тоже помню, что то подобное.

Иногда играю в флот и да, я за не хватает хотя бы визуальной реалистичности в таких делах. А то реально здоровенные корабли умещаются между скал будто это какая то канонерка.

Прожал за, но не думаю что это поможет выкурить заостровных кемперов, они просто будут вставать немного дальше. Столкновения с островами не наносят никакого урона, и так было сделано намерено в каком-то из давних патчей. А если винты повредились- волшебная кнопка 8 починит их за 10 сек. Пробоины тоже чинятся очень быстро, и не несут никакой угрозы. Что бы это работало, нужно будет еще и систему бзж опять менять. Да и катера не спасет, на большинстве карт их зону эсминцы могут обстреливать прямо со своего респа, с первой секунды боя, им не надо к ним на мелководье заходить.
Однако если добавит немного атмосферы- пусть будет.

Многа букф, так что читать не буду. Я за

1 лайк

Опять же. Тут можно менять расположение респов. У эсмов убраться маркер на катера (на канонерки-фрегаты-морские охотники оставить). Однако если делать именно карты где будут играть эсминцы-крейсера-линкоры у которых считай своя дистанция и свои респы с задачами. То катера вообще можно без эсминцев оставить. В итоге онлайн катеров возрастет (например если в боях большого флота будет отдельное возрождение на катерах, то многим будет интересно остаться в бою, если возрождения на больших кораблях закончились и чтоб просто не уходить хотя-бы что-то попробовать сделать на кораблях малого флота. При этом если линкоры-крейсера будут удалены от островов, а само мелководье еще и заминировано (т.е. катер пройдет так как у него недостаточная осадка для взведения мины, а большой корабль уже нет - сейчас же есть механика разной глубины торпеды), то крейсера-линкоры будут на чистой воде друг с другом биться. А эсминцы будут респасться дальше от всех но ближе друг к другу. Хотя это уже к теме геймплея вообще. Я вот заметил, когда дошел до крейсеров, что эсминец в сетапе выгоднее чем все три возрождения на крейсере. Да и для свежести геймплея как раз не хватает разных ролей в бою. Даже если линкоры найдут способ иначе прятаться, кто-то быстрый да с торпедами успеет дать торпедный залп. Например в малом флоте такое разделение есть. Кто-то быстрый, кто-то медленный, у кого-то еще и арта есть и в целом различие ролей наблюдается. Но потом сквозь острова протискивается один эсминец и все портит))) Обстрел эсмами с респа - все-таки не на всех картах. Больше всего это наблюдается в африканском заливе - там да. Но на других часто и зона катеров бывает скрыта островами. А есть карты где если в команде нет катера, а все вышли на эсминцах, то они ни до катеров ни до точки захвата не успевают дойти, тогда как в противной команде один одинокий катер захватил точку и тем самым получил победу, даже ни кого не поразив.

1 лайк

Да, вот об этом я почти в каждой теме пишу. Нужно карты делать с таким расчетом, что бы было удобно перестреливаться с одноклассниками, но неудобно с тем кто меньше. А тому кто больше неудобно было стрелять по тебе.

Тоже хорошая идея. И желательно что бы для боев 6.0-8.7

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

Спойлер

2026-05-15_13-15-17

1 лайк