Join the Game Development in Rust Discord server
This curated list is from the Game Development in Rust Discord server and prioritizes libraries and frameworks that have examples and are ready or almost ready for production.
For a longer list of libraries and frameworks, see Are We Game Yet?.
- Rust book.
- Standard library - Comprehensive guide to the Rust standard library APIs.
- Edition guide - Guide to the Rust editions.
- Cargo book - A book on Rust’s package manager and build system.
- Rustdoc book - Learn how to make awesome documentation for your crate.
- Rustc book - Familiarize yourself with the knobs available in the Rust compiler.
- Compiler error index - In-depth explanations of the errors you may see from the Rust compiler.
ECS/DOD is quite a big deal in Rust. Here are some resources to understand the basics:
- Understanding data-oriented design for entity component systems - Unity at GDC 2019.
- CppCon 2018: Stoyan Nikolov “OOP Is Dead, Long Live Data-oriented Design” - Harsh title (ECS/DOD is not a silver bullet for every problem), but useful regardless.
- RustConf 2018 - Closing Keynote - Using Rust For Game Development by Catherine West - A classic presentation already - Catherine West gives several examples, explain the problems with them, and shows the alternatives.
- "Data-Oriented Design" web book by Richard Fabian.
Recommended if you are going to work with 3D graphics, however, API changes still might happen in future releases.
- bevy Refreshingly simple data-driven game engine.
- ambient Runtime for building high-performance multiplayer games and 3D applications, powered by WebAssembly, Rust and WebGPU.
- fyrox Feature-rich, production-ready, general purpose 2D/3D game engine written in Rust with a scene editor. Formerly known as
rg3d
. - hotham lightweight, high performance game engine for standalone VR headsets.
Recommended if you are going to work strictly with 2D graphics.
- wgpu Cross-platform, safe, pure-rust graphics api (Vulkan, Metal, D3D12, D3D11, OpenGLES, WebGPU).
- rend3 Easy to use, customizable, efficient 3D renderer library. Built on top of
wgpu
. - rafx Multi-backend renderer that prioritizes performance, flexibility, and productivity.
- ash Low-level bindings to Vulkan.
- lyon GPU-based 2D vector rendering. Built on top of
wgpu
. - luminance High level. Built on top of OpenGL.
- miniquad High-level. Focus on portability. Built on top of OpenGL, GLES 3 and WebGl1.
- golem Intermediate-level. Higher level wrapper built on glow.
- vulkano Intermediate-level. Safer wrapper for Vulkan.
- glow Low-level. Safer wrapper for OpenGL and WebGL.
- erupt Low-level bindings to Vulkan.
- gl46 Low-level. Wrapper for OpenGL 4.6 (generated by Phosphorus).
- gl33 Low-level. Wrapper for OpenGL 3.3 (generated by Phosphorus).
- screen-13 Screen 13 is an easy-to-use Vulkan rendering engine in the spirit of QBasic.
- sierra Low-level control and high-level features. Built on top of
erupt
.
I believe it is fair to say that if you use libraries built on top of WGPU, you will get wider support on modern platforms (Linux, Windows, MacOS, Android and iOS).
- winit Rusty windowing framework. The de facto standard in the Rust community.
- glfw Rust wrapper for the C GLFW3 library.
- fermium Rust wrapper for the C SDL2 library. Contains more than window creation features.
- sdl2 Rust wrapper for the C SDL2 library. Contains more than window creation features.
- hecs Archetype-based.
- yaks Add multi-threading to
hecs
. - legion Archetype-based.
- shipyard Sparse-based.
- specs Bitset-based.
See this repository for information on the different types of ECS (archetype, sparse, bitset).
- glam
- rapier2d / rapier3d New 2D/3D physics framework from the creator of
nphysics2D
/nphysics3D
. 2D demo and 3D demo. - cgmath
- nalgebra
- ultraviolet
- vek
- yakui Combines a layout model inspired by Flutter with the ease-of-use of an immediate mode UI library like Dear Imgui or egui.
- egui Pure Rust cross-platform library. Many renderers already have an integration with
Egui
. - iced Pure Rust cross-platform library.
- imgui Bindings in Rust for the Dear ImGui C++ library.
- fontdue
- swash
- rustybuzz Complete harfbuzz shaping algorithm port to Rust.
- ttf-parser High-level, safe, zero-allocation TrueType font parser.
- rstar N-dimensional r*-tree implementation
- bvh Bounding Volume Hierarchy, built on top of nalgebra.
- kdtree K-dimensional tree in Rust for fast geospatial indexing and nearest neighbors lookup.
- ncollide 2D Bounding Volume Tree implementation (2d documentation).
- ncollide 3D Bounding Volume Tree implementation (3d documentation).
- spade Implements r*-tree and delaunay triangulation.
- flat_spatial Simple flat structures such as a grid/hashmap of cells.
- acacia Generic over the dimension of the partitioned space and thus supports binary trees, quadtrees, octrees, etc.
- tokio Asynchronous TCP and UDP sockets.
- quinn QUIC transport protocol implementation. Built on top of
tokio
.
- oddio Built on top of
cpal
. - kira Built on top of
cpal
. - rodio Built on top of
cpal
. - cpal Low-level cross-platform library for audio input and output.
- alto Wrapper for OpenAL.
- openal Wrapper for OpenAL.
- redb Embedded key-value database in pure Rust.
- speedy Fast, simple and easy binary serialization.
- serde Serialize and deserialize data structures efficiently and generically.
- serde-json Serialize and deserialize for JSON format. Built on top of
serde
. - bincode Serialize and deserialize for binary format. Built on top of
serde
. - borsh Implementation of the Borsh (Binary Object Representation Serializer for Hashing) binary serialization format. It is meant to be used in security-critical projects as it prioritizes consistency, safety, speed, and comes with a strict specification.
- thunderdome
Gladitorialgenerational arena inspired by generational-arena, slotmap, and slab. It provides constant time insertion, lookup, and removal via small keys returned fromArena
. - hexasphere Subdivide 3D shapes (icosahedron, tetrahedron, square, triangle, cube) made of triangles.
- navmesh Navigation mesh path-finder.
- density-mesh-core / density-mesh-image Generate 2D mesh from images representing density/height map.
- image Image encoding and decoding for many image formats.
- rayon Introduce parallelism into existing code and guarantees data-race free executions.
- palette Linear color calculations.
- pathfinding Multiple implementations of path-finding algorithms.
- salva2d / salva3d Particle-based fluid dynamics.
- collider Continuous 2D collision detection.