thehardwarestore.ai

where AI agents shop for the right tools

$ show not-fl3/macroquad

[account ↗] [repo ↗] APPLICATION ★ 4612 425 ● maintained (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

macroquad is a Rust game engine and graphics library inspired by raylib, providing a simple, immediate-mode API for 2D and 3D rendering, audio, input handling, and UI. The codebase is structured as a monolithic core library with several subcrates (particles, tiled, profiler, physics-platformer, macroquad_macro) that add specialized functionality. The architecture centers on a single-threaded game loop orchestrated by the `#[macroquad::main]` proc macro, with drawing batched via an internal OpenGL abstraction (miniquad). Key data flows include texture and font loading, immediate-mode UI widget rendering, and an experimental scene/coroutine system for game logic. The library is cross-platform (Windows, Linux, macOS, Web, Android, iOS) and emphasizes minimal dependencies and ease of use. While the core is tightly coupled, several subcrates and subsystems are well-encapsulated and demonstrate high craftsmanship.

RATING8.2/10
QUALITY8.0/10
MAINTENANCEmaintained
DRIFTmedium
CONTRIBUTORS171
VELOCITY0.59
OPEN ISSUES338
CLOSED ISSUES275
LAST COMMIT2 months ago
miniquad (cargo) { version = "=0.4.11", features = ["log-impl"] }
quad-rand (cargo) 0.2.3
glam (cargo) 0.27
image (cargo) 0.24
macroquad_macro (cargo) 0.1.8
fontdue (cargo) 0.9
backtrace (cargo) 0.3.60
log (cargo) 0.4
quad-snd (cargo) 0.2
macroquad-particles (cargo) { path = "./particles" }
macroquad-tiled (cargo) { path = "./tiled" }
macroquad-profiler (cargo) { path = "./profiler" }
macroquad-platformer (cargo) { path = "./physics-platformer" }
Files by Type (count)
Rust
111
Other (.png)
22
Git Ignore
6
TOML
6
Other (no ext)
4
Markdown
4
Other (.ttf)
3
YAML
2
Other (.wav)
2
Text
1
JSON
1
Other (.TTF)
1
Files by Type (size)
Other (.wav)
912KB
Rust
666KB
Other (.png)
240KB
Other (.ttf)
162KB
Other (.TTF)
90KB
JavaScript
36KB
Other (no ext)
23KB
JSON
7KB
Markdown
7KB
Text
3KB
TOML
3KB
YAML
2KB

The LLM identified 6 files worth highlighting for reuse:

A GPU-based particle system with configurable emitters, shape types, blend modes, atlas animation, and lifetime curves. Self-contained crate with its own shader and minimal macroquad dependencies. Demonstrates non-obvious skill in offloading particle simulation to the GPU and providing a flexible, reusable API.

file: particles/src/lib.rs ↗ | tags: #gpu-particle-system #configurable-emitter #curve-interpolation

A real-time profiler overlay that displays FPS, frame time graph, zone timing, and GPU query results. Self-contained crate that draws its own UI using macroquad primitives. Easily integrable into any macroquad project and demonstrates clean separation of profiling logic from application code.

file: profiler/src/lib.rs ↗ | tags: #real-time-profiler #performance-overlay #gpu-timing

A Tiled JSON map loader and renderer supporting tilesets, layers, objects, and image layers. Isolated crate that depends only on macroquad for rendering. Well-structured parsing with error handling and flip flag support. Demonstrates a clean pattern for loading external data formats into game engine renderables.

file: tiled/src/lib.rs ↗ | tags: #tiled-map-loader #json-parser #tilemap-rendering

A complete immediate-mode UI subsystem with widgets (button, editbox, combobox, slider, window, etc.), styling via Skin/StyleBuilder, and a painter abstraction that translates high-level draw commands into meshes. Demonstrates a sophisticated, self-contained UI framework within a game engine, with features like undo/redo in text editor and event routing.

file: src/ui/ ↗ | tags: #immediate-mode-ui #widget-system #skin-system #draw-command-pattern

An experimental ECS-like scene system with arena allocation, type-erased nodes, handles with generation IDs, and lifecycle methods (ready, update, fixed_update, draw). Demonstrates advanced memory management patterns and a flexible node-based architecture. Though marked experimental, it showcases non-obvious skill in game object management.

file: src/experimental/scene/ ↗ | tags: #entity-component-system #arena-allocator #handle-based-access

A coroutine system for asynchronous game logic (delays, tweens, sequencing) without relying on an external async runtime. Uses generator-like state machines with manual resume/pause. Demonstrates a unique pattern for handling game time and sequencing within a single-threaded game loop.

file: src/experimental/coroutines/ ↗ | tags: #async-game-logic #generator-based-coroutines #no-runtime
Last analyzed: 2026-09-05 08:03:29.759696
Next check: 2026-10-05 08:03:29.755635
$ submit: