Как мы придумали реалистичный полет уток в симуляторе охоты Bult (и почему все началось с прогулки вокруг стола)

Привет, друзья!

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

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

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

Когда «невидимые рельсы» не работают

Когда только начинали, мы стали изучать, как же реализованы полеты в других играх. Чаще всего используется один из двух подходов:

  1. «Рельсы» — птицы двигаются по заранее проложенным маршрутам. Это удобно: нет никакого риска врезаться в деревья или скалы;
  2. Прямолинейный полет — птицы поднимаются до безопасной высоты, летают прямо, приземляются.

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

Unreal Engine и отсутствие навигации для летающих существ

Вся эта история полетов в Bult началась с того, что мы столкнулись с проблемой в Unreal Engine: здесь просто нет готовой системы навигации для летающих объектов. Есть для пеших, есть для транспорта — но не для птиц.

Тогда мы начали экспериментировать. Первый прототип выглядел так: утка «пускает» невидимую линию вперед (raycast), чтобы проверить, есть ли препятствия. Если что-то на пути — она набирает высоту. Потом добавили проверки слева и справа, чтобы утка могла уворачиваться.

Это сработало… но выглядело странно. Птицы словно двигались вслепую, как человек с тростью на ощупь. Идея была рабочей, но не живой.

«Подожди, а ведь мы заранее планируем свой маршрут!»

Переломный момент случился абсолютно случайно. Мы сидели с ребятами вечером, и Женя Пашков, встав со стула, чтобы пройти к двери, вдруг осознал простую вещь: «Погодите, ведь я заранее представляю, как обойду стол, где поверну и куда дойду. Почему бы и утке не сделать то же самое?»

Так появилась идея предиктивного алгоритма навигации.

Как работает «умная» утка

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

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

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

Как мы придумали реалистичный полет уток в симуляторе охоты Bult (и почему все началось с прогулки вокруг стола)

Итог — живой мир

Благодаря такому алгоритму утки в нашем симуляторе реагируют динамично:

  • могут менять траекторию полета при выстреле;
  • анализируют местность перед посадкой;
  • выбирают оптимальный угол и скорость снижения;
  • посадка больше не выглядит как «вертолетная» — все плавно, естественно и похоже на поведение в природе.

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

Если вам интересно, можем рассказать подробнее, как мы оптимизируем такую систему — и какие ошибки ломали все с первого же теста.

Скоро наша игра Bult выйдет в Steam - добавьте в «желаемое», чтобы поддержать нас! https://store.steampowered.com/app/3929200/BULT_Hunting_simulator/

13
1
5 комментариев