Crate macroquad

source ·
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);




  • 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 this issue to be resolved.


Attribute Macros§

  • Macroquad entry point.