Our mission is to build and maintain a free, open-source game engine that is simple to use, fast, and open to everyone.
Perro is Rust-first by design. The scripting model is built around macros that keep common gameplay code approachable while preserving memory safety and runtime performance.
Beginners can ship scripts without getting buried in low-level complexity, and experienced teams can move fast with typed APIs, in-place mutations, and predictable behavior.
Built for Game Development
Rust Script System
Author scripts directly in Rust. lifecycle! and methods! wire script behavior, while with_state!, with_state_mut!, with_node!, and with_node_mut! provide safe engine access patterns.
Node Architecture
Runtime data lives in typed nodes managed with stable IDs and inheritance-aware access. Scripts mutate node state through borrow-safe macros and context modules.
Scene Architecture
Scenes define node trees, parent links, script bindings, root templates, and script_vars. That keeps composition data explicit while scripts stay reusable across instances.
Signal and Method Calls
Emit signals globally and call script methods where needed. call_method! enables flexible interaction patterns, including self-calls and recursive flows, without unsafe script extraction.
UI and Rendering
Build interfaces with UI nodes, run frame flow through the render pipeline, and customize visuals with WGSL material/post shaders. Perro keeps gameplay, visuals, and tooling aligned around one Rust-native stack.
How Donations Help Perro Grow
Community donations fund full-time development of Perro Engine, keeping it free, open, and improving every day.
