# Unreal prototype An Unreal Engine 5 project that builds three things in order and proves each one feels right before anything is built around it: a movement controller, fighting, and crafting. Server-authoritative from the first line, C++ first, data-driven, telemetry from step 2, and worked as a ladder of small proofs rather than a roadmap. Step 1 is built: `Salty.uproject` on Unreal Engine 5.8, two modules, the headless test runner and the gym. Step 2 (telemetry) is next. ## Read - [`Docs/Design.md`](Docs/Design.md): what this is, in about two hundred lines. Start here. - [`Docs/Steps.md`](Docs/Steps.md): the order of work and what closes each step. - [`Docs/Spec/`](Docs/Spec/README.md): the specifications an implementer builds from. - [`Docs/Ideas.md`](Docs/Ideas.md): what was carried over from the two earlier projects and not yet built. - [`Docs/Decisions.md`](Docs/Decisions.md): every decision, the open ones, the deferred ones. - [`CLAUDE.md`](CLAUDE.md): the instructions an AI agent works from in this repository. ## Layout ``` UnrealEnginePrototyping/ ├── CLAUDE.md Instructions for an AI agent: conventions, layout, commands, upkeep. ├── README.md This file. ├── Docs/ Design, steps, ideas, decisions, worklog, and Spec/ with one document per system. ├── Salty.uproject Unreal Engine 5.8. At the root, which is what the .gitignore assumes. ├── Source/ SaltyCore (rules, no actors) and Salty (gameplay). Variant_* is template reference. ├── Content/ Assets, one folder per feature; Maps/L_Gym; Tests/; the Fab packs. ├── Config/ Engine and game config; Tags/ holds the gameplay tag sources. └── Scripts/ Test and build scripts run by hand; Authoring/ for editor Python. ``` ## Getting started Open `Salty.uproject` with Unreal Engine 5.8, run `Scripts/run-tests.sh`, and press Play in `L_Gym` with two clients and "Run Dedicated Server" on. `Scripts/Authoring/create_gym.py` rebuilds the gym. Binary assets go through Git LFS; run `git lfs install` once per machine.