Game on Rust — обзор фреймворков и библиотек для разработки игр на Rust

Этот обзор основан на подборке rust-game-development-frameworks и обобщает основные направления, зрелые проекты и утилиты, полезные при создании игр на [rust]. Статья написана с помощью gpt-5 mini.

Rust выдвигается как конкурентная платформа для разработки игр: безопасность памяти, высокая производительность и сильная экосистема для работы с графикой (wgpu), параллелизмом и сетями. Сообщество поддерживает множество движков и специализированных библиотек — от «легковесных» 2D‑фреймворков до полноценной 3D‑стека и инструментов для physics, аудио и UI.

Основные категории и заметные проекты

Полноценные игровые движки (2D + 3D)

  • Bevy — современный data‑driven игровой движок на Rust, основанный на ECS; быстро развивается и имеет активное сообщество.
  • Ambient — runtime для высокопроизводительных мультплеерных игр и 3D‑приложений, ориентирован на WebAssembly и WebGPU.
  • Fyrox (бывший rg3d) — feature‑rich движок с редактором сцен, подходящий для 3D‑проектов.
  • Hotham — легковесный движок с прицелом на VR/стенд‑алоне.

2D‑фреймворки (простые и быстрые стартовые наборы)

  • Macroquad — лёгкий мультиплатформенный фреймворк, прост в использовании, похож на или вдохновлённый raylib/miniquad.
  • ggez — удобный для прототипов 2D игр (интерфейс, похожий на Love2D из мира Lua).
  • Tetra — небольшой, прост в освоении 2D‑фреймворк.
  • Emerald, Nova, Oxygengine — другие варианты 2D‑ориентированных фреймворков.

Графические библиотеки и рендер‑бэкенды

  • wgpu — современный кроссплатформенный рендер‑бэкенд (Vulkan/Metal/D3D/GL/WebGPU). Базовая инфраструктура для многих проектов.
  • rend3, rafx — более высокоуровневые рендер‑решения поверх wgpu.
  • ash — низкоуровневая обёртка Vulkan
  • glow - низкоуровневая обёртка над OpenGL/WebGL
  • vulkano, erupt — низкоуровневая обёртка Vulkan
  • lyon, miniquad — 2D‑рендеринг/векторная графика и переносимость.
  • luminance - высокоуровневая реализация поверх OpenGL
  • golem - высокоуровневая обертка на основе подсветки
  • gl46 — низкоуровневая обёртка для OpenGL 4.6 (сгенерирована Phosphorus).
  • gl33 — низкоуровневая обёртка для OpenGL 3.3 (сгенерирована Phosphorus).
  • screen-13 — простой Vulkan‑рендерер в духе QBasic.
  • sierra — низкоуровневый контроль и высокоуровневые возможности; построен поверх erupt.

Window creation and OS integration

  • winit — фреймворк для создания окон и обработки событий; де‑факто стандарт в сообществе Rust.
  • glfw — обёртка на Rust для C‑библиотеки GLFW3.
  • fermium — обёртка на Rust для SDL2; предоставляет больше, чем просто создание окон.
  • sdl2 — обёртка на Rust для SDL2 с расширенным функционалом.

Frameworks for generational-arena (containers for entities and other objects)

  • thunderdome — генерационная арена, вдохновлённая generational‑arena, slotmap и slab; обеспечивает вставку, поиск и удаление за константное время с помощью небольших ключей Arena.
  • slotmap Container with persistent unique keys to access stored values.
  • generational-arena A safe arena allocator that allows deletion without suffering from the ABA problem by using generational indices.

Frameworks for ECS (containers for entities and other objects)

  • hecs — реализация ECS на основе архетипов (archetype).
  • yaks — добавляет многопоточность к hecs.
  • legion — ECS на основе архетипов.
  • shipyard — реализация ECS на основе sparse‑структур.
  • specs — ECS, использующая битовые множества (bitset).

See this repository for information on the different types of ECS (archetype, sparse, bitset).

Frameworks for physics and linear math (for 2D and 3D programming)

Graphical user interface (GUI)

  • yakui — сочетает модель компоновки, вдохновлённую Flutter, с простотой immediate‑mode UI (Dear ImGui / egui).
  • egui — кроссплатформенная GUI‑библиотека на Rust; многие рендереры имеют интеграцию с egui.
  • iced — декларативная кроссплатформенная GUI‑библиотека на Rust.
  • imgui — биндинги Dear ImGui (C++) для Rust.

Font (parser and/or rasterizer)

  • fontdue
  • swash
  • rustybuzz — полная реализация алгоритма шейпинга HarfBuzz, портированная на Rust.
  • ttf-parser — высокоуровневый, безопасный парсер TrueType шрифтов без выделения памяти (zero-allocation).

Space partitioning

  • rstar — N‑мерная реализация [r-tree](https://en.wikipedia.org/wiki/R_tree) для пространственного индексирования.
  • bvh — иерархия ограничивающих объёмов (Bounding Volume Hierarchy), реализована поверх nalgebra.
  • kdtree — k‑мерное дерево для быстрого геопространственного индексирования и поиска ближайших соседей.
  • ncollide 2D — реализация Bounding Volume Tree для 2D. (2d documentation).
  • ncollide 3D — реализация Bounding Volume Tree для 3D. (3d documentation).
  • spade — реализует [r-tree](https://en.wikipedia.org/wiki/R_tree) и триангуляцию Делоне. delaunay triangulation.
  • flat_spatial — простые плоские структуры (например, сетка или хеш‑таблица ячеек) для быстрых запросов.
  • acacia — обобщённая по размерности структура разделения пространства; поддерживает бинарные деревья, квадродерева, октодрева и т.д.

Network

  • tokio — асинхронный рантайм и набор утилит для работы с I/O; поддержка асинхронных TCP и UDP сокетов.
  • quinn — реализация транспортного протокола QUIC на Rust; построен с учётом интеграции с tokio.

Audio

  • oddio — библиотека аудио, построенная на cpal.
  • kira — аудиобиблиотека поверх cpal.
  • rodio — высокоуровневая аудиобиблиотека поверх cpal.
  • cpal — низкоуровневая кроссплатформенная библиотека для ввода/вывода аудио.
  • alto — обёртка над OpenAL.
  • openal — биндинги/обёртка для OpenAL.

Serialization-Deserialization

  • fjall — встроенная key‑value база данных, написанная на чистом Rust.
  • redb — встраиваемая key‑value база данных на Rust.
  • speedy — быстрая и простая бинарная сериализация/десериализация.
  • serde — универсальная библиотека для сериализации и десериализации структур данных.
  • serde-json — реализация формата JSON для serde.
  • bincode — компактный бинарный формат сериализации на основе serde.
  • borsh — реализация бинарного формата Borsh, ориентированного на детерминированность, консистентность и безопасность.

Other utilities

  • hexasphere — делит 3D‑формы (икосаэдр, тетраэдр, квадрат, треугольник, куб) на треугольные сетки.
  • navmesh — навигационная сетка (navmesh) для поиска пути.
  • density-mesh-core / density-mesh-image — генерация 2D‑сетки из изображений, представляющих плотность/высотную карту.
  • image — кодирование и декодирование изображений во множестве форматов.
  • rayon — добавляет параллелизм в код и упрощает безопасное многопоточное выполнение без data‑race.
  • palette — операции и преобразования в цветовом пространстве, линейные цветовые вычисления.
  • pathfinding — набор реализаций алгоритмов поиска пути.
  • salva2d / salva3d — моделирование динамики жидкости на основе частиц.
  • collider — непрерывное обнаружение столкновений в 2D.

Примеры открытых игр в репозитории

В подборке перечислены множество проектов‑примеров (RecWars, Veloren, RustCycles и др.), которые можно изучить как источник архитектурных идей и практических реализаций.

Смотри еще