Structure
September 17, 2026 ยท View on GitHub
Purpose
ALIS combines a small project-branded Unreal Engine game module with reusable plugins and standalone development tools. This owner defines only how those top-level parts divide responsibility.
Owns
- Project-level composition and dependency direction.
- The distinction between branded game integration and reusable components.
- Repository-wide invariants that no narrower component can own.
Does not own
- Plugin internals, which belong to each component under Plugins.
- Game-specific startup implementation, which belongs to Source.
- Build, test, packaging, or generation procedures, which belong to scripts and tools.
- Work status and proposed changes, which are not architecture facts.
Composition
| Part | Responsibility |
|---|---|
| Source | ALIS-branded game targets and composition |
| Plugins | Runtime, editor, UI, test, and World components |
| Scripts | Repository development and release automation |
| Tools | Standalone build, delivery, and World tooling |
| Documentation | Durable technical guidance and routing |
Relationships
The project-level relationships are drawn once in the main view. Each lower owner documents its own graph.
Through ProjectCore contracts, reusable consumers request capabilities without depending on provider internals. Concrete compile-time dependencies remain valid when one component composes a type or consumes data owned by another; plugin rules own that distinction.
Invariants
- Reusable first-party code uses the
Project*prefix; ALIS branding stays in game composition, content, configuration, and user-facing text. - A component owns its behavior, data contracts, configuration, tests, and architecture at the narrowest responsible boundary.
- Parents treat children as black boxes and never copy their internal graph.
- Executable dependencies are declared in
.uproject,.uplugin, andBuild.cs; prose does not maintain a second component inventory. - Unsupported operations fail explicitly rather than reporting success.
- Generated World authority, public release identity, and trust checks remain under their existing owners.
Accepted decisions
- Reusable naming boundary - see Invariants.
- Recursive component ownership - see Composition.
- Interface consumption versus concrete composition - see Relationships.