docs: arc42 architecture documentation for Gig Line
Populated from the arc42-template (EN/adoc) with project-specific content
across all 12 sections:
1. Introduction and Goals — requirements overview, quality goals, stakeholders
2. Architecture Constraints — technical (engine, collision, coordinates),
organisational (squash-merge, visual review, provenance), conventions
3. Context and Scope — business and technical context tables
4. Solution Strategy — technology decisions, top-level decomposition,
quality achievement approach
5. Building Block View — Gameplay (6 C++ classes), Site (7 meshes + 7
materials), Facades (9 buildings), Art Pipeline, QA & Review; Level 2
white boxes for input flow and collision model
6. Runtime View — walk, screenshot capture, QA self-test, build/import
pipeline scenarios
7. Deployment View — dev workstation and packaged build infrastructure
8. Cross-cutting Concepts — coordinate system, collision model, lighting,
materials, data provenance, QA harness
9. Architecture Decisions — 7 ADRs (dynamic lighting, UE materials,
C++ collision helper, grounded reset, core ticker, Y convention,
headless Blender)
10. Quality Requirements — overview table + 7 measurable scenarios
11. Risks and Technical Debts — 5 risks, 2 debts with mitigations
12. Glossary — 16 domain-specific terms
Master document: Docs/Architecture/architecture.adoc
Config: Docs/Architecture/config.adoc
This commit is contained in:
1 parent
b577afa730
commit
72705268b5
15 files changed
+610
No files matched your search
@@ -0,0 +1,46 @@
|
||||
ifndef::imagesdir[:imagesdir: ./images]
|
||||
|
||||
[[section-concepts]]
|
||||
== Cross-cutting Concepts
|
||||
|
||||
=== Coordinate system and scale
|
||||
|
||||
* **Source CRS**: EPSG:26911 (UTM zone 11N). Local origin recorded in `Geo/`.
|
||||
* **Blender**: metres. East → +X, north → +Y (Blender convention).
|
||||
* **Unreal**: centimetres. East → +X, north → **−Y** (confirmed from street mesh: `Sidewalk_North` Y −1912..−1053, `Sidewalk_South` Y +718..+1447).
|
||||
* **Conversion**: every exporter calls the metre→centimetre function. Import presets (`ue_metric_v1`, `ue_character_v1`) are named and repeatable.
|
||||
|
||||
Rule: place a building only against a neighbour or street mesh, never in isolation.
|
||||
|
||||
=== Collision model
|
||||
|
||||
* Site meshes (road, sidewalks, kerbs, crossing): `STATIC` mobility, `BlockAll` collision profile.
|
||||
* Terrain: `STATIC`, `CTF_UseComplexAsSimple` (forced by `UGigLineAssetTools` at build time, saved on the asset — the flag lives on the `UStaticMesh`/`UBodySetup`, not the map).
|
||||
* Buildings: `STATIC`, simple collision (convex hull from mesh).
|
||||
* Rule: the collision flag must be saved on the asset. Saving only the `.umap` silently reverts it.
|
||||
|
||||
=== Lighting
|
||||
|
||||
* Dynamic-only: `r.AllowStaticLighting=False`. All lights are `MOVABLE`.
|
||||
* Fixed daytime rig: directional light (sun, −62° pitch), sky light, exponential height fog, post-process volume with fixed exposure.
|
||||
* Rationale: avoids "LIGHTING NEEDS TO BE REBUILT" warnings; no bake step; the scene never changes time of day.
|
||||
|
||||
=== Materials
|
||||
|
||||
* All materials authored in Unreal, not carried from Blender (FBX import loses diffuse colours).
|
||||
* World-space-noise blend nodes for cheap procedural variation (asphalt grain, concrete speckle, stucco roughness).
|
||||
* Instance parameters where tunable (e.g. wetness, ageing).
|
||||
|
||||
=== Geographic data provenance
|
||||
|
||||
* OSM extract is layout data only — not authoritative for façade, height, or pavement detail.
|
||||
* DEM from 3DEP 1 m; elevation verified against cross-sections in `Geo/verification/`.
|
||||
* Reference photography (local, gitignored) drives manual façade work.
|
||||
* In-game ODbL attribution drawn by `AGigLineHUD` every frame, bottom-left.
|
||||
|
||||
=== QA harness
|
||||
|
||||
* `-qaselftest`: core ticker (not world timer) so pause cannot freeze the test that proves pause works.
|
||||
* `GigLine SIM` / `GigLine GROUND`: TEMP diagnostic logging, to be removed before release tag.
|
||||
* Screenshot approval: human must tick `Screenshots/README.md` before visual work is marked done.
|
||||
|
||||
Reference in new issue
Block a user