Разработка ремейка методами чайника 10. Скиллы, швартовка, ускорение и прочая всячина

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

Попрыгунчик

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

В конце-концов, нашел для себя вариант - пока что заморозить Z координату для корабля, тогда корабль красиво ходит по волнам без прыготни(что важно для прицеливания из пушек). Однако для какой-нибудь лодки это неприемлемо, ибо она начинает ходить по воздуху. Так что более правильно наверное было бы как нибудь применить дампинг только для z координаты, но я не очень шарю как…

Как было:

Как стало:

Повреждения парусов

Тут все кратко: я это починил. Оказалось, что событие оверлапинга не имеет информации о точке попадания по умолчанию. Для этого нужно чтобы у снаряда был установлен компонент projectile с флагом Sweep Collision. Также добавил для ИИ поведение стрельбой книппелями.

Собсна пруф:

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

Логика ускорения времени которая сломала все

Ооо, вот тут то UE сделал большую подлянку… Можно как хочешь замедлять время, физика это скушает, но нельзя ускорять больше x2. Движок то не сломается от этого, но физика продолжит работать с максимальной для себя скоростью. Мы, господа корсары, прекрасно знаем, что корсары без ускорения времени это жопа, поэтому с этим нужно было что-то сделать.

Я пытался найти какую-то информацию по этому поводу, но тщетно. Тогда я задал вопрос на форуме UE, в надежде что я просто криворукий урод и делаю что-то не так. Ответ убил!

Выбирайте другой игровой движок либо пишите свою физику.

Пара чуваков с форума

Итак, что же делать? Движок менять уже слишком поздно, а писать логику физики для меня, не то чтобы посильная задача… Но я могу написать логику перемещения путем простого изменения локации корабля!

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

К сожалению, я пока что не вижу способа сохранить оба достоинства с ускорением времени. Может когда нибудь найдется решение получше.

К слову, все видео в этом посте уже с этой логикой.

Динамическая погода и смена суток

К счастью, у плагина Ultra Dynamic Sky вся эта логика уже встроена. Все что необходимо сделать, это настроить длительность суток и ранжирование погоды. Однако сила ветра статична для каждой из пресетов погоды, что нам не подходит. Так что пришлось написать небольшую доработку-костыль, которая при смене погоды, динамически подбирает силу ветра и немного колышет её в течении исполнения.

Смена дня и ночи:

Смена погоды:

Скорость смены была увеличена раз в 15x, + пользовательское ускорение 8x., поэтому это не будет выглядеть так резко.

У кого-то мог встать вопрос(и не только он): а почему волны не подстраиваются под силу ветра?

Ответ: потому что Oceanology не меняет поведение моря плавно, а только с перезагрузкой, что приводит к морганиям. Я задал вопрос разработчику, что с этим можно сделать, надеюсь найдется решение. Если же его не будет, придется искать какое-то другое решение… и тогда -150 бачей на ветер Т_Т. Хотя с учетом качества поддержки это уже давно выглядит как пустая трата денег.

Скиллы и перки

Я перенес немного морских скиллов и перков. Формулы расчета эффективности постарался оставить без изменений.

Что перенесено из скилов:

  • Навигация: скорость корабля и работы с парусами.
  • Орудия: скорость перезарядки
  • Защита: уменьшение урона команде

Что перенесено из перков:

  • Быстрая перезарядка
  • Увеличенные повреждения по корпусу и команде
  • Критический выстрел
  • Увеличенное расстояние выстрела
  • Профессиональный канонир
  • Основная, продвинутая и профессиональная защита корабля
  • Увеличение скорости корабля
  • Опытный мореплаватель(только скорость)
  • Гроза морей(только скорость)
  • Увеличение динамики
  • Быстрые паруса
Как можно увидеть, прокачанный бот утопил бомбами не прокачанного буквально за пару залпов. Возможно был крит, но я пока этого не выводил в интерфейс.

Разумеется все это лишь верхушка айсберга из того, что нужно будет еще перенести…

Швартовка и отшвартовка в порту и бухтах

Тут все просто. Я создал специальный актор-коробку, в которой предполагается что будет стоять корабль. Дополнительно у коробки есть отдельная точка, на которой должен будет спавнится игрок после швартовки. Если игрок находится на расстоянии 200 метров от коробки, то он будет видеть небольшой значок взаимодействия, если 100 - появляется возможность пришвартоваться. В таком случае камера затухает, и нас телепортирует на нужную точку. Собственно так же это работает и в обратную сторону.

Собсна вот сама коробка:

Белый треугольник - для понимания куда корабль будет повернут. Там где стрелки координат - место где игрок будет спешиваться.
Белый треугольник - для понимания куда корабль будет повернут. Там где стрелки координат - место где игрок будет спешиваться.

А вот как это на видео:

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

Прочее барахло

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

Что дальше?

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

Разработка ремейка методами чайника 10. Скиллы, швартовка, ускорение и прочая всячина

Так когда будет демка? Да йух его знает… пока все задачи помеченные красным не будут сделаны, в демке нет смысла. И это еще без наземной боевки, ух. Так что скосплею разраба океанологии, и скажу что даты релиза нет!

Бонус

Баганувшийся мановар

А вот такая подстава меня ожидала когда я подгонял ландшафт под форт изнутри, а потом вышел наружу:

Хорошо что был недавний бекап. Не забывайте делать бекапы!

3333
20 комментариев

Комментарий недоступен

2
Ответить

Хай.
Мы вам писали ждём вас на Seawarde.
Так или иначе две команды делают Корсар. Причем реально делают. Есть демо Легаси. Возможно к концу года игра будет.

1
Ответить

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

1
Ответить

Отлично! Продолжай!

1
Ответить

Комментарий недоступен

1
Ответить

А потом прийдет 1с и скажет : удоли.

А если серьезно, если у тебя геймплей зависит от физики волн, то единственное что ты можешь сделать : разрешить ускорение игры лишь вне боя.
Во время боя максимум х2.
Но вне боя можно отключать лишнюю физику, ибо наклоны кораблей на стрельбу из пушек только влиять будут.

Ответить

Ну пусть приходят, что они мне сделают, я в другом городе.

Корсары сама по себе игра неспешная, поэтому x2 категорически не хватает. Тут только если в целом повышать динамику игры... но я пока что не уверен как это будет воспринято сообществом оригинальной игры.

1
Ответить