Expand description

macroquad is a simple and easy to use game library for Rust programming language.

macroquad attempts to avoid any rust-specific programming concepts like lifetimes/borrowing, making it very friendly for rust beginners.

Supported platforms

  • PC: Windows/Linux/MacOS
  • HTML5
  • Android
  • IOS


  • Same code for all supported platforms, no platform dependent defines required
  • Efficient 2D rendering with automatic geometry batching
  • Minimal amount of dependencies: build after cargo clean takes only 16s on x230(~6years old laptop)
  • Immediate mode UI library included
  • Single command deploy for both WASM and Android build instructions


use macroquad::prelude::*;

async fn main() {
    loop {

        draw_line(40.0, 40.0, 100.0, 200.0, 15.0, BLUE);
        draw_rectangle(screen_width() / 2.0 - 60.0, 100.0, 120.0, 60.0, GREEN);
        draw_circle(screen_width() - 30.0, screen_height() - 30.0, 15.0, YELLOW);
        draw_text("HELLO", 20.0, 20.0, 20.0, DARKGRAY);



pub use ::log as logging;
pub use miniquad;


Loading and playing sounds.

2D and 3D camera.

Color types and helpers.

The most unstable things in macroquad Some of them will eventually move to other modules, some will move into separate crates and some may just disappear.

Cross platform file management functions.

Cross-platform mouse, keyboard (and gamepads soon) module.

Custom materials - shaders, uniforms.

Math types and helpers.

3D shapes and models, loading 3d models from files, drawing 3D primitives.

Most common types that can be glob-imported use macroquad::prelude::* for convenience.

Cross platform random generator.

2D shapes rendering.

Functions to load fonts and draw text.

Loading and rendering textures. Also render textures, per-pixel image manipulations.

Cross platform system time access and FPS counters.

Immediate mode UI.

Window and associated to window rendering context related functions.


Build a color from 4 components of 0..255 values This is a temporary solution and going to be replaced with const fn, waiting for https://github.com/rust-lang/rust/issues/57241

Attribute Macros

Macroquad entry point.