Moto 0e61a77346 Add comprehensive design and specification documentation (#1)
* Write the Unreal documentation set: design, steps, ideas, decisions and specs

Rewrites the design and engineering docs of the two earlier Unity projects
(Adventurer Guild, Project Malleable) for an Unreal Engine 5 prototype that
builds and proves three things in order: a movement controller, fighting and
crafting. Neither earlier core loop is carried; their ideas are catalogued as
features with what each needs.

- Docs/Design.md: the human summary (pillars, fixed decisions, glossary)
- Docs/Steps.md: a ladder of fifteen proofs, the first six in full
- Docs/Ideas.md: salvaged ideas from both projects, none scheduled
- Docs/Decisions.md: D-01..D-36, open decisions OD-01..OD-08, deferrals
- Docs/Spec/: notation, Architecture, Movement, Interaction, Combat,
  Crafting, Networking, Telemetry, UI, written as Unreal C++ skeletons
- CLAUDE.md and README.md for the repository


* Add the stat block: one attribute set on every body, every influence an effect

Every body (player, enemy, NPC) carries the same UStatBlockAttributeSet, and
every outside influence on it is a gameplay effect: base values, buffs,
debuffs, ground surfaces, carried weight, gear, being downed. Counters are
tags and attributes on the receiver: immunity blocks by tag, resistance
scales by attribute, cleanse removes by tag. Same status from several
sources: strongest wins; different statuses multiply.

- Docs/Spec/Stats.md: the block, effects and their five sources (abilities,
  areas, surfaces, items, the world), stacking, counters, readers, tests
- Movement: the movement component's tagged speed-multiplier map is removed;
  speed is tuning times the MoveSpeed attribute; the ground surface trace
  turns mud into an effect; the gym gets mud and ice patches
- Combat: the attribute set moves to Stats; enemies and kits carry
  FStatBlockDefaults; the funnel reads MagicResist and Immune.Damage tags;
  taunt and mark are statuses
- Interaction: carried weight is GE_Encumbered against CarryCapacity
- Crafting: class bonuses are the WorkSpeed and WorkQuality attributes;
  enchantments may grant a holder effect
- Steps: step 5 builds the block with mud, a volume and an immunity
- Decisions D-37 and D-38; design summary, CLAUDE.md, indexes, worklog
2026-09-15 17:54:00 +03:00
2026-09-14 23:34:30 +03:00

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.

Nothing is built yet. The repository currently holds the documentation set.

Read

  • Docs/Design.md: what this is, in about two hundred lines. Start here.
  • Docs/Steps.md: the order of work and what closes each step.
  • Docs/Spec/: the specifications an implementer builds from.
  • Docs/Ideas.md: what was carried over from the two earlier projects and not yet built.
  • Docs/Decisions.md: every decision, the open ones, the deferred ones.
  • 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.
├── <Project>.uproject      Created in step 1, at the root, which is what the .gitignore assumes.
├── Source/                 <Project>Core (rules, no actors) and <Project> (gameplay).
├── Content/                Assets, one folder per feature; Maps/L_Gym; Tests/.
├── 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

After step 1: open <Project>.uproject with the pinned engine version, run Scripts/run-tests.sh, and press Play in L_Gym with two clients and "Run Dedicated Server" on. Until then there is nothing to run.

Binary assets go through Git LFS; run git lfs install once per machine.

S
Description
No description provided
Readme
3.1 MiB
Languages
Go 41.8%
JavaScript 33.1%
C++ 10.7%
Python 6.9%
HTML 5.3%
Other 2.2%