Все проекты
Движок · библиотека В разработке

Leefield

GPU-ветер и погода для игр в реальном времени

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

Leefield

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

Эффекты едут на том же ветре: объёмный дым за домом, пыль от колёс, взрывов и выстрелов, метель и сугробы, дождь на стекле, туман, искры, пожар по траве и лесу с тушением водой и перелётом искр через просеку, вспышка в помещении и огненный шар, трава с волнами по полю. Игровой код читает ветер пробами, шейдеры — прямо из текстуры.

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

Каждая модель проверяется по протоколу, записанному до кода: пороги замораживаются, провалы записываются честно. Сверки — опыты в аэродинамической трубе (EnFlo), полевые измерения пшеницы, часовые наблюдения метеостанции KNMI за 30 лет, опыты с огненными шарами и вспышками в помещении.

Leefield вырос из ветрового движка нашей игры про ветропарки и стал отдельной библиотекой для Bevy, браузера и других движков через C API.

Что умеет

  • 2D-ветер на решёточном методе Больцмана, который следует за игроком, и 3D-область вокруг зданий для потока над крышами
  • Объёмный дым, пыль с запасами (колёса, взрывы, выстрелы), дождь на стекле, снег с метелью, старением и сугробами, туман, искры
  • Пожар по траве, кустарнику и лесу: по ветру и склону, тушение водой, перелёт искр через просеку, дождь мочит топливо
  • Вспышка в помещении, огненный шар, дульная волна, нагрев металла
  • Трава и колосья: изгиб с насыщением и бегущие волны по полю
  • Общий ветер и режиссёр погоды для мультиплеера — одинаково на macOS, Linux, Windows и в браузере
  • Регулятор бюджета кадра и пресеты качества для встроенной графики
  • Плагин для Bevy, браузер на WebGPU (Rust → WASM, отрисовка three.js), C API для Unity и Godot; шейдеры переносятся в HLSL, GLSL и SPIR-V

Скриншоты