Обновленная система погружения

Новая модификация погружения.

Набор ссылок:

Первоисточник

Ссылка на тему о проекте на Гамине


Я хочу рассказать об обновленной системе погружения лодки. Для понимания, я буду рассказывать в стиле сравнения «было – стало».

Начну с того, что было.

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

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

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

В первой версии лодка была хорошо управляема. Лодка очень точно занимала глубину, быстро и без ошибок выполняла все требования. Мне это не нравилось. Вот график смены глубин в первой версии:

Вы видите? Лодка крайне послушна. Я нажимаю «15» и лодка быстро и главное очень точно находит эту глубину. Я нажимаю «перископная» и лодка с той же скоростью поднимается из глубин. Срочная команда или штатная – не имеет значения.

Лодка просто с одинаковой скоростью занимает указанные глубины. Это не правильно.

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

Теперь как оно работает.

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

В процессе набора, плавучесть уменьшается, лодка начинает погружаться. Как только лодка вышла на заданную глубину, начинается выравнивание, мы же не хотим утонуть. И тут появляется первый аргумент – опытность экипажа. Чем опытнее матрос, тем быстрее он перекрывает одни и открывает другие вентили и магистрали.  Если матрос новичок, будьте уверены, желаемая глубина будет достигнута не сразу. Дело в том, что пока матрос стравливает лишний вес и загоняет в емкость сжатый воздух, лодка имеет все еще отрицательную плавучесть,  она продолжает погружение. Это продолжается, пока масса не будет выровнена. Но и это не все. Масса выравнивается теми же методами! Одним вентилем продуваем, другим заполняем, и опять все зависит от опыта моряка. Конечно, чем меньший объем надо загнать или выгнать, тем меньше ошибок, поэтому то, лодка все равно рано или поздно займет желаемую глубину и выровняет массу. Но сколько она скачков совершит, если матрос новичок? Конечно разбеги не большие, но на малых глубинах, могут сыграть злую шутку.

Рассказав, как работают емкости и от чего они зависят, я хочу рассказать немного о срочных командах.

В отличие от предыдущей версии, срочные команды теперь тоже зависят от массы и плавучести. Как и в жизни, для срочного погружения, лодка набирает очень большой объем воды в короткий срок, открывая все клапаны которые есть. За счет такого быстрого приема большого объема воды, лодка буквально проваливается на глубину. Проваливаясь, она стремится так глубоко, насколько ей позволяет критические объемы – на дно. Поэтому очень важно, вовремя сбросить лишний вес. Алгоритм управления прост: Дав команду срочного погружения, игрок выбирает желаемую глубину. Дальше все, как и в предыдущем случае. Но только объемы воды намного больше. Неопытный моряк долго выводит лодку из пике. Занимая нужную глубину, лодка сначала провалится в яму, а потом начнет из нее выбираться. Если место погружения глубокое, это не страшно, но если мелко, то последствия ощутимы. К слову можно даже утонуть. Всплытие аналогично, но оно проще, ударяться  не так страшно. Но всплытие ресурсоемко.

Описав основу, я хочу показать на графике, как изменилось поведение лодки:

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

 

Мелочи

Мелочь первая

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

Еще одна мелочь

Сжатый воздух. Именно им на лодке делают прокачку цистерн и снижают массу. И он имеет свойство кончаться. Но ресурс всегда пополняется, за счет компрессора. К сожалению, многократная продувка влечет большой расход, а компрессор имеет свою скорость работы. Тут возникает еще одна зависимость опыта. Чем больше матрос делает продувок (например, при выравнивании) тем быстрее кончается сжатый воздух. Значит, может случиться так, что в нужный момент воздуха не останется. Срочное всплытие, например, тоже расходует много воздуха. Но рано или поздно компрессор накачает воздух. Только тут возникает еще одна зависимость – расход электроэнергии и увеличение уровня зависимости. Вить каждый агрегат на глубине – это дополнительный источник потребления, а батареи имеют свойство кончаться. В тоже время, каждое устройство издает немало шума, а акустики врага не дремлют. Вот и придется делать выбор, тратить в пустую воздух или лучше приберечь его до нужного момента.

И последняя мелочь

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

Примечание:

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

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