Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Quiet-Wolfe/Rustic-Engine/llms.txt

Use this file to discover all available pages before exploring further.

Requirements

  • Rust stable toolchain via rustup
  • git
Cargo manages all library dependencies. You do not need to install graphics drivers, audio libraries, or any other system packages manually — wgpu handles GPU adapter selection at runtime, and kira bundles its audio backend.

Build commands

Debug build

A debug build includes full debug symbols and no optimizations. This is the default for development.
cargo build
The compiled binary is placed at target/debug/rustic-app.

Release build

A release build enables compiler optimizations. Use this for performance testing or distribution.
cargo build --release
The compiled binary is placed at target/release/rustic-app.

Run directly

cargo run
You can pass --release to run the optimized build:
cargo run --release

Tests

Run all tests across every crate in the workspace:
cargo test
Run tests for a single crate:
cargo test -p rustic-core
rustic-core is the most unit-testable crate because it has no rendering or audio dependencies — it contains only data types and parsing logic.

Linting

cargo clippy
Clippy is the project’s linter. Warnings are expected to be resolved before committing.

Workspace structure

The Cargo.toml at the repository root defines the workspace. All crates are under the crates/ directory.
[workspace]
resolver = "2"
members = [
    "crates/rustic-core",
    "crates/rustic-audio",
    "crates/rustic-render",
    "crates/rustic-gameplay",
    "crates/rustic-scripting",
    "crates/rustic-app",
    "crates/rustanimate",
]
Each member crate has its own Cargo.toml. Shared dependency versions are declared once in [workspace.dependencies] and referenced from individual crates using { workspace = true }.

Crate summary

CrateTypeDescription
rustic-coreLibraryData types, parsing, scoring math — no rendering or audio
rustic-audioLibraryAudio playback and conductor via kira
rustic-renderLibraryAll GPU rendering via wgpu
rustic-gameplayLibraryGame logic, input, hit detection, PlayState
rustic-scriptingLibraryLua VM and Psych Engine API surface
rustic-appBinaryEntry point, window creation, state machine
rustanimateLibraryAdobe Animate atlas parser and playback (renderer-agnostic)

Key dependencies

These are the primary workspace-level dependencies declared in the root Cargo.toml:
CrateVersionPurpose
wgpu28GPU rendering backend (Metal, Vulkan, DX12, WebGPU)
naga28Shader translation (GLSL input → WGSL output)
winit0.30Cross-platform window creation and event loop
glyphon0.10GPU text rendering
kira0.9Audio engine with OGG support
image0.25PNG texture loading
bytemuck1Safe casting of data to GPU buffer bytes
pollster0.4Minimal async executor (used to block on wgpu init)
serde / serde_json1JSON deserialization for charts, characters, and stages
quick-xml0.37Sparrow XML atlas parsing
glam0.292D/3D math (vectors, matrices, transforms)
thiserror2Ergonomic error type derivation
log / env_logger0.4 / 0.11Logging; set RUST_LOG=debug at runtime for verbose output

Notes

The .intentionally-empty-file.o file

The repository root contains a file named .intentionally-empty-file.o. This file is a placeholder and is not compiled into the engine. Its presence is intentional — do not delete it.

First build time

The first cargo build will compile all dependencies from source. Expect this to take several minutes depending on your hardware. Subsequent builds are incremental and much faster.

Logging

Rustic Engine uses env_logger for runtime logging. To enable debug output, set the RUST_LOG environment variable before running:
RUST_LOG=debug cargo run
For output scoped to a single crate:
RUST_LOG=rustic_core=debug cargo run

Build docs developers (and LLMs) love