Skip to content

Latest commit

 

History

History
204 lines (157 loc) · 15.3 KB

File metadata and controls

204 lines (157 loc) · 15.3 KB

Libraries and frameworks for
Game Development in Rust

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 basics

Resources to understand ECS (Entity Component System) and DOD (Data-Oriented Design)

ECS/DOD is quite a big deal in Rust. Here are some resources to understand the basics:

Productivity tools for game development

Game engines

2D + 3D

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.

2D

Recommended if you are going to work strictly with 2D graphics.

Open-Source Games

Some open-source games made in Rust:

  • RecWars A multiplayer top-down tank shooter. Already has some basic gameplay and a playable browser version.
  • RustCycles A third person arena shooter that's about movement, not aim. You have to be smart and think fast.
  • Station Iapetus A third person shooter where you play as a task force agent on a space prison near Saturn's satellite Iapetus.
  • Flamegrower Flamegrower is a 2D platformer revolving around physically simulated vines. In a solarpunk-inspired eco-futuristic world threatened by an invasive alien plant species, you control an android gardener tasked with killing it with fire.
  • Digital Extinction A 3D real-time strategy (RTS) game set in the near future when humans and AI fight over their existence.
  • Oort A space fleet programming game.
  • One-Man-ggj21 A 2D side scrolling shmup game for Global Game Jam 2021. It has 1 level and 3 enemy types.
  • Egregoria An indie city builder, where each individual has its own thought model, meaning every action has its importance and influences the environment. Egregoria is focused on the socio-economical aspect of a city, with a logistics element.
  • automancy A game about Automation, themed around Magic, based on Hexagons, and -- there's no Conveyor Belts.
  • Mage Rush A very tiny vampire-survivors-like open-source game (playable: iinacho.itch.io/mage-rush).
  • Sandbox A sand simulation game.
  • As the Wind Blows Set in a world of floating sky islands, this immersive battle game invites you and your friends to enjoy together.
  • Just Join (来噻) Voxel multiplayer game.
  • Veloren Multiplayer voxel RPG inspired by games such as Cube World, Legend of Zelda: Breath of the Wild, Dwarf Fortress and Minecraft.
  • Hypermine An experiment in 3D hyperbolic space, with multiplayer, infinite procedural terrain, and voxel editing. It is very easy to get lost.
  • qffp Queer folk farmpunk: farming on the moon demonstrates the possibility of creating animated pixel art games that run in a terminal. -Space Frontiers online community multiplayer game that seeks to support a galaxy consisting of multiple sectors and spaceships. Active cooperative and PVP gameplay takes place in and around manned spaceships together with a foundation of Role-Playing-Game features.
  • Qwy3 Wanna-be Minecraft-like in Rust using Wgpu, very early stage.
  • Zombie Shooter Game Inspired by Crimsonland: eliminate hordes of zombies that relentlessly chase after you.
  • ROOM - Rusty Doom Rewrite of Doom C in Rust. Where possible, the Doom behaviour is kept intact, while also making some improvements.
  • Stellar Bit
  • mirr/orb Laser bouncing puzzle game made in Rust.
  • FlappyTetra Game about a fish that has to jump through seaweed.
  • velgi Clone of the first level of Velgress from UFO 50, made for Eggjam #24.
  • astray TUI-based space strategy game.
  • moba A Multiplayer Online Battle Arena game.

Graphics-only

  • 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).

Window creation and OS integration

  • 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.

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

  • thunderdome Generational arena inspired by generational-arena, slotmap, and slab. It provides constant time insertion, lookup, and removal via small keys returned from 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)

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 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.

Font (parser and/or rasterizer)

Space partitioning

Network

  • tokio Asynchronous TCP and UDP sockets.
  • quinn QUIC transport protocol implementation. Built on top of tokio.

Audio

  • 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.

Serialization-Deserialization

  • fjall Embedded key-value database in pure Rust.
  • 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.

Other utilities

  • 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.