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)
- glam
- rapier2d / rapier3d — современный физический движок для 2D/3D от автора
nphysics; есть демонстрации для 2D и 3D (2D demo, 3D demo). - cgmath
- nalgebra
- ultraviolet
- vek
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 и др.), которые можно изучить как источник архитектурных идей и практических реализаций.