[][src]Crate macroquad

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

Features

  • 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)
  • Immidiate mode UI library included
  • Single command deploy for both WASM and Android build instructions

Example

use macroquad::prelude::*;

#[macroquad::main("BasicShapes")]
async fn main() {
    loop {
        clear_background(RED);
 
        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);
 
        next_frame().await
    }
}

Modules

camera

2D and 3D camera.

collections

Special macroquad-friendly collections. The datatypes from this module may help to organize game code.

coroutines

The way to emulate multitasking with macroquad's .await. Usefull for organizing state machines, animation cutscenes and other stuff that require some evaluation over time.

file

Cross platform files management functions.

input

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

logging

Logging macroses, available with "log-impl" feature.

material

Custom materials - shaders, uniforms.

models

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

prelude

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

rand

Cross platform random generator.

shapes

2D shapes rendering.

text

Functions to load fonts and draw text.

texture

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

time

Cross platform system time access and FPS counters.

window

Window and associated to window rendering context related functions.