Как мы придумали реалистичный полет уток в симуляторе охоты Bult (и почему все началось с прогулки вокруг стола)
Привет, друзья!
Мы разрабатываем Bult — реалистичный симулятор охоты на водоплавающих птиц. Это игра, где все создано охотниками с реальным опытом — от звуков и поведения уток до физики выстрелов и реакции животных на игрока.
Наша цель — показать настоящую охоту на природе: с динамичной погодой, реалистичной баллистикой и живыми, непредсказуемыми птицами.
Сегодня хотим рассказать о том, как мы создавали систему полета уток — и почему простая прогулка вокруг стола однажды помогла нам решить сложнейшую задачу навигации.
Когда «невидимые рельсы» не работают
Когда только начинали, мы стали изучать, как же реализованы полеты в других играх. Чаще всего используется один из двух подходов:
- «Рельсы» — птицы двигаются по заранее проложенным маршрутам. Это удобно: нет никакого риска врезаться в деревья или скалы;
- Прямолинейный полет — птицы поднимаются до безопасной высоты, летают прямо, приземляются.
Иногда эти методы комбинируют, просто отключая столкновения. Да, это просто и безопасно. Но и предсказуемо, скучно и нереалистично, пропадает реиграбельность. Игрок быстро понимает, что все в мире искусственно. Например, утка внезапно пролетает сквозь дерево, и магия атмосферы охоты ломается мгновенно.
Unreal Engine и отсутствие навигации для летающих существ
Вся эта история полетов в Bult началась с того, что мы столкнулись с проблемой в Unreal Engine: здесь просто нет готовой системы навигации для летающих объектов. Есть для пеших, есть для транспорта — но не для птиц.
Тогда мы начали экспериментировать. Первый прототип выглядел так: утка «пускает» невидимую линию вперед (raycast), чтобы проверить, есть ли препятствия. Если что-то на пути — она набирает высоту. Потом добавили проверки слева и справа, чтобы утка могла уворачиваться.
Это сработало… но выглядело странно. Птицы словно двигались вслепую, как человек с тростью на ощупь. Идея была рабочей, но не живой.
«Подожди, а ведь мы заранее планируем свой маршрут!»
Переломный момент случился абсолютно случайно. Мы сидели с ребятами вечером, и Женя Пашков, встав со стула, чтобы пройти к двери, вдруг осознал простую вещь: «Погодите, ведь я заранее представляю, как обойду стол, где поверну и куда дойду. Почему бы и утке не сделать то же самое?»
Так появилась идея предиктивного алгоритма навигации.
Как работает «умная» утка
Теперь каждая утка в Bult не просто реагирует на препятствия, она планирует маршрут заранее, просчитывая десятки возможных ветвей движения.
Если на пути дерево — алгоритм разветвляется влево, вправо, выше, ниже. Неудачные маршруты отбрасываются, пока не останется единственный оптимальный путь — тот, где утка достигает нужной высоты без столкновений.
Но это еще не все. Мы добавили учет ветра, видимости охотника и поведения других уток. Теперь птица решает, что важнее: быстрее взлететь против ветра, избежать столкновения или же не приближаться к охотнику.
Итог — живой мир
Благодаря такому алгоритму утки в нашем симуляторе реагируют динамично:
- могут менять траекторию полета при выстреле;
- анализируют местность перед посадкой;
- выбирают оптимальный угол и скорость снижения;
- посадка больше не выглядит как «вертолетная» — все плавно, естественно и похоже на поведение в природе.
Да, система сложнее, чем простая траектория из точки А в точку Б, но именно благодаря ей игрок чувствует, что вокруг него живой мир, а не набор заранее записанных анимаций.
Если вам интересно, можем рассказать подробнее, как мы оптимизируем такую систему — и какие ошибки ломали все с первого же теста.
Скоро наша игра Bult выйдет в Steam - добавьте в «желаемое», чтобы поддержать нас! https://store.steampowered.com/app/3929200/BULT_Hunting_simulator/