Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

The repository

Everything Rusteal ships comes from one repository, viniciusmorgado/rusteal. This chapter is its map: what each directory is, which branches exist and how a change travels from a branch to a release.

Top level

PathWhat it isVersioned
Cargo.tomlThe Cargo workspace: its members, the shared [workspace.package] (version, edition, license) and the dependencies every crate takes from [workspace.dependencies], the internal ones with both a version and a path (see Releases and versions).yes
rust-toolchain.tomlPins Rust 1.88.0, the MSRV, with clippy and rustfmt, so the checkout cannot use newer Rust by accident.yes
rusteal-ue-flags/The engine’s reflection flags as Rust constants.yes
rusteal-ffi/The #[repr(C)] contract between Rust and the C++ plugin.yes
rusteal-core/The safe runtime over that contract.yes
rusteal-macros/#[uclass], #[uclass_impl], #[ustruct], #[uenum], #[udelegate].yes
rusteal-runtime/What a game crate depends on: re-exports, the prelude, entry!().yes
rusteal-codegen/Reflection JSON to bindings crate and C++ wrappers.yes
rusteal-cli/The rusteal binary (and cargo-rusteal), with the game templates (templates/), the plugin templates and gameplay features (plugin_templates/), the project-file features (project_features/) and the default platform optimizations (optimizations.toml).yes
ue_plugin/Rusteal/The runtime UE plugin: the Rusteal module (the host of the Rust libraries) and the RustealEditor module.yes
ue_plugin/RustealGenerator/The build-time UE plugin: the UHT exporter (C#) and its anchor module.yes
ide/RustealRules/A C# project for language servers only, giving the plugins’ *.Build.cs files their context.yes
rusteal.slnThe .NET solution holding the exporter and RustealRules, for C# language servers.yes
xtask/Contributor tooling: cargo xtask dev-setup. Never published.yes
docs/Tracking documents: deprecations, the third person gaps, how the variants were ported, the plugin roadmap, hot reload notes (see Tracking documents and conventions).yes
assets/The logo, the mascot and the template screenshots used by the README.yes
.github/workflows/CI and the release pipeline (see Releases and versions).yes
.cargo/config.tomlThe cargo xtask alias.yes
.clang-formatLLVM style for the C++ plugin, with SortIncludes: Never: UHT requires a header’s .generated.h to be its last include, which sorting would break.yes
.env.exampleThe contributor settings to copy into .env: RUSTEAL_DEV_ENGINE_ROOT, the engine root.yes
.env, compile_commands.json, .cache/Written by cargo xtask dev-setup for this machine.no
Cargo.lockRewritten by every build because of the internal versions; cargo packs its own into the published crates.no
rusteal-cli/ue_plugin_embed/The plugin snapshot the published CLI embeds, written by rusteal sync-plugin.no
rusteal-core/api_table.rsA copy of the FFI table definition for the published crate, written by rusteal-core/build.rs.no
ue_plugin/Rusteal/Source/Rusteal/Generated/Codegen output, which only exists inside a game project.no

Branches

BranchWhat it is
developThe default branch, where work is integrated. Every change reaches it through a pull request, with CI on it.
mainWhat is released. It only receives the release pull request from develop, protected by the “main: release checks” ruleset (the build and bump statuses, no bypass); each merge publishes a version.
feat/..., fix/..., docs/..., chore/...Work branches, made from an up-to-date develop and merged back into it by pull request. Their names follow the Conventional Commits type of the work.
ue6The adaptation to Unreal Engine 6, apart from main until UE6 ships. Its docs/ue6-radar.md tracks what UE6 changes for Rusteal.

A change goes: a work branch from develop → commits with Conventional Commits subjects → a pull request to develop (CI) → merge → the release pull request develop → main (Prepare release) → merge → Release publishes and tags → Sync develop brings the version commit back to develop. Before opening a pull request, bring the branch up to date with develop: a branch made before a release still shows the previous version until then.

The handbooks

The two handbooks are mdBooks in repositories of their own, published with GitHub Pages:

HandbookRepositorySite
The game developer’s handbook: using Rustealgame.rusteal.github.ioviniciusmorgado.github.io/game.rusteal.github.io
This handbook: working on Rustealdev.rusteal.github.ioviniciusmorgado.github.io/dev.rusteal.github.io

A pull request that changes what a game developer sees (a command, an attribute, a template) updates the game developer’s handbook in the same round; one that changes how Rusteal works inside, or decides something, updates this one. The README only presents the project and points to both.