Files
gig-line/Docs/Architecture/08_concepts.adoc
T
zwitschi 72705268b5 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
2026-11-08 13:08:35 +01:00

47 lines
2.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.