Обновленная система погружения
Новая модификация погружения.
Набор ссылок:
Ссылка на тему о проекте на Гамине
Я хочу рассказать об обновленной системе погружения лодки. Для понимания, я буду рассказывать в стиле сравнения «было – стало».
Начну с того, что было.
На панели существует функциональный раздел, изменяющий глубину лодки. Он разделен на две части: Штатное изменение и срочные команды. Штатное изменение заставляло менять глубину через указание желаемой глубины на шкале, а срочные имели известные глубины и помогали одним быстрым нажатием на кнопку задать максимальную, минимальную или перископную глубину. Мне это перестало нравиться.
Пока я делаю эту игру, или прототип игры не важно, я часто обращаюсь к разной технической литературе, раскрывающей мне разные тонкости.
Получив достаточный набор знаний про изменение глубины, я решил переделать систему погружения.
В первой версии лодка была хорошо управляема. Лодка очень точно занимала глубину, быстро и без ошибок выполняла все требования. Мне это не нравилось. Вот график смены глубин в первой версии:
Вы видите? Лодка крайне послушна. Я нажимаю «15» и лодка быстро и главное очень точно находит эту глубину. Я нажимаю «перископная» и лодка с той же скоростью поднимается из глубин. Срочная команда или штатная – не имеет значения.
Лодка просто с одинаковой скоростью занимает указанные глубины. Это не правильно.
Я пошел дальше. Я добавил на лодку новую систему. Теперь лодка может принимать и сбрасывать балласт. Конечно, я не делал копии настоящих систем, хотя такое желание было. Я не стал разделять емкости, и создавать группы. В этом случае пришлось бы добавить ручное управление, это обязывало бы игрока знать принципы систем и быть почти подводником. А разве игрок обязан им быть? Нет J. Поэтому я не стал нагружать игрока подобным интерфейсом. Все работает в автоматическом режиме.
Теперь как оно работает.
Лодка при погружении стала принимать балласт, выпуская воздух и получая отрицательную плавучесть. Есть и правило скорости, если лодка движется, то балласт набирается небольшой, достаточный для погружения, вертикальные рули помогают быстро погрузиться. А если она без движения, то набирает лодка гораздо больше, вертикальные рули помочь не могут.
В процессе набора, плавучесть уменьшается, лодка начинает погружаться. Как только лодка вышла на заданную глубину, начинается выравнивание, мы же не хотим утонуть. И тут появляется первый аргумент – опытность экипажа. Чем опытнее матрос, тем быстрее он перекрывает одни и открывает другие вентили и магистрали. Если матрос новичок, будьте уверены, желаемая глубина будет достигнута не сразу. Дело в том, что пока матрос стравливает лишний вес и загоняет в емкость сжатый воздух, лодка имеет все еще отрицательную плавучесть, она продолжает погружение. Это продолжается, пока масса не будет выровнена. Но и это не все. Масса выравнивается теми же методами! Одним вентилем продуваем, другим заполняем, и опять все зависит от опыта моряка. Конечно, чем меньший объем надо загнать или выгнать, тем меньше ошибок, поэтому то, лодка все равно рано или поздно займет желаемую глубину и выровняет массу. Но сколько она скачков совершит, если матрос новичок? Конечно разбеги не большие, но на малых глубинах, могут сыграть злую шутку.
Рассказав, как работают емкости и от чего они зависят, я хочу рассказать немного о срочных командах.
В отличие от предыдущей версии, срочные команды теперь тоже зависят от массы и плавучести. Как и в жизни, для срочного погружения, лодка набирает очень большой объем воды в короткий срок, открывая все клапаны которые есть. За счет такого быстрого приема большого объема воды, лодка буквально проваливается на глубину. Проваливаясь, она стремится так глубоко, насколько ей позволяет критические объемы – на дно. Поэтому очень важно, вовремя сбросить лишний вес. Алгоритм управления прост: Дав команду срочного погружения, игрок выбирает желаемую глубину. Дальше все, как и в предыдущем случае. Но только объемы воды намного больше. Неопытный моряк долго выводит лодку из пике. Занимая нужную глубину, лодка сначала провалится в яму, а потом начнет из нее выбираться. Если место погружения глубокое, это не страшно, но если мелко, то последствия ощутимы. К слову можно даже утонуть. Всплытие аналогично, но оно проще, ударяться не так страшно. Но всплытие ресурсоемко.
Описав основу, я хочу показать на графике, как изменилось поведение лодки:
Тут видно, что лодка с разными скоростями уходит на глубину и имеет провалы, о которых говорилось. Мне кажется это более правильное представление.
Мелочи
Мелочь первая
Как и в жизни, лодку трудно удержать на глубине, если она стоит без движения. Погрузившись, и не запуская двигатели, через некоторое время можно видеть, как глубина меняется в разные стороны. Лодка может подниматься, потом углубляться. Это опасное движение, если лодка на мелководье, или неглубоко погрузилась вблизи врагов. Поэтому тут играют роль рулевые. Лодка имеет ход, а рулевые вертикальными рулями помогают нашему матросу удерживать глубину. Экипаж работает сплоченно. Поэтому погружение без хода не рекомендуется, если нет необходимости в этом. Так и занимая глубину, лодка быстрее ее займет без лишних движений, если лодка имеет ход.
Еще одна мелочь
Сжатый воздух. Именно им на лодке делают прокачку цистерн и снижают массу. И он имеет свойство кончаться. Но ресурс всегда пополняется, за счет компрессора. К сожалению, многократная продувка влечет большой расход, а компрессор имеет свою скорость работы. Тут возникает еще одна зависимость опыта. Чем больше матрос делает продувок (например, при выравнивании) тем быстрее кончается сжатый воздух. Значит, может случиться так, что в нужный момент воздуха не останется. Срочное всплытие, например, тоже расходует много воздуха. Но рано или поздно компрессор накачает воздух. Только тут возникает еще одна зависимость – расход электроэнергии и увеличение уровня зависимости. Вить каждый агрегат на глубине – это дополнительный источник потребления, а батареи имеют свойство кончаться. В тоже время, каждое устройство издает немало шума, а акустики врага не дремлют. Вот и придется делать выбор, тратить в пустую воздух или лучше приберечь его до нужного момента.
И последняя мелочь
Сейчас в разработке еще одна система, но о ней я расскажу позже. Но заранее забегая вперед, хочу сказать, что стравливание воздуха или его набивка в цистерны оказывает серьезное влияние на эту, вроде бы никак не связанную систему. Так что стоит действительно задуматься, а стоит ли…
Примечание:
Система набора опыта экипажем сейчас не воплощена в коде, поэтому все моменты, где она уже задействована, заменены на константы с усредненными значениями.
*Замечу, теперь приятнее смотреть, как лодка снижает скорость погружения, по мере осушения цистерн, как она выходит из глубокого пике при срочном погружении. Лично для меня лодка получила маленький процент человечности.
- 01 августа 2013, 11:35
- 06
Это круто, это просто офигенно круто :3
Raseri, как всегда в первых рядах, как всегда полон позитива:)
Геймплей игры заключается в преодолении сложностей управления? Проект движется в сторону хардкорного симулятора?
Все не так страшно. Сложности это если и добавляет то на очень маленький процент. Пара всплытий-погружений и я думаю игрок уже не будет ощущать проблем. Пока основная забота геймплея заключается в тишине. Тише едешь - дальше будешь. Как раз сейчас работаю над этим моментом.