Architekturentscheidungen (ADRs)
Dieser Abschnitt enthält die Architekturentscheidungs-Protokolle, die signifikante Architekturentscheidungen, Trade-offs und Designprinzipien in Small World Engine dokumentieren.
Index der Entscheidungen
- ADR 0001: Config-Form (benannte Schlüssel) — Config-Unterstrukturen nutzen benannte Schlüssel, keine
{ type, ... }-Arrays. - ADR 0002: TAA-Jitter — TAA-Jitter wird in die gemeinsame View-Projection-Matrix eingebacken, nicht in eine separate.
- ADR 0003: Globaler Hit-Stop — Hit-Stop skaliert die Gameplay-Zeit global, nicht pro Entität.
- ADR 0004: Globale Licht-Obergrenze — Die Punkt-/Spot-Licht-Obergrenze ist global, nicht pro Objekt.
- ADR 0005: CCD nur für Kugeln — Continuous Collision Detection (CCD) deckt nur Kugelkörper ab.
- ADR 0006: PCSS-Weichschatten-Umfang — Directional Lights überall, Spot Lights nur auf WebGPU.
- ADR 0007: Clustered Forward+ Lighting — Raster fester Kapazität, Kapazitätserhöhung nur auf WebGPU.
- ADR 0008: Hierarchical-Z-Occlusion-Culling — Nur WebGPU, Kugel-Bounds, einen Frame veraltet.
- ADR 0009: Charakter-Pipeline & Mixamo-Rigging — Standardisiertes humanoides Skelett, Skalen-Isolation und Socket-Transforms.
- ADR 0010: Maker-Editor-Architektur — Eigenständiger 3D-Editor, glTF-2.0-+-
SW_*-Persistenz, Undo-Stack und Transform-Gizmos. - ADR 0011: Modulare Asset-Kits & Remote-Katalog — Out-of-Tree-modulare Asset-Pakete und manifest-gesteuertes Remote-Bibliotheks-Laden.
- ADR 0012: Atmosphärisches Indie-Game-Design ("Das Streuner-Prinzip") — Story-first-Philosophie, filmische Beleuchtung und Stimmung statt rohem Spec-Jagen.
- ADR 0013: Vereinheitlichte Flüssigkeits-Materialien — Gemeinsame Flüssigkeits-Shader-Chunks: Wellen-Familie (Ozean/Wasser) und Fluss-Familie (Lava/Schleim).
- ADR 0014: Modulares Ökosystem & Domänen-Schichtung — Auflösung von
extensions/in domänenspezifische Namensräume (physix,environment,geometry,audio). - ADR 0015: App-First-Regel für Genre-Code — Genre-spezifischer Gameplay-Code bleibt in Apps, bis ein zweites Projekt die Extraktion in den Kern verlangt.
- ADR 0016: 2.5D-Bühnen-Zonen als glTF-Erweiterung —
SW_stage_zone/SW_stage_vanishing_pointerweitern Makers bestehendes Format statt ein zweites zu schaffen; beliebige-n-Eck-Zonen und ein datengetriebenesuvToWorld. - ADR 0017: glTF-Extension-Plugin-Registry —
GltfLoader/WorldWriterlesen/schreiben Vendor-Extensions über eine registrierbare Plugin-Liste statt hartkodierter if/else-Zweige. - ADR 0018: glTF Data-Level-Extensions &
@small-world/gltf-extensions— Erweiterung der Registry umdecodeGeometry/resolveTexture-Hooks und Auslagerung von Draco- und BasisU-Unterstützung in ein separates Ökosystem-Paket. - ADR 0019: Modulare Environment-Texturierung & 4-Säulen-Skalierungs-Doktrin — Multizonale PBR-Paletten, modulares 3m/5m-Bunker-Raster (Pfeiler/Unterzüge), duale Decal-Hierarchie und deterministischer UV-Jitter gegen Tiling-Artefakte.
- ADR 0020: Deklarative Level-Deskriptoren & Instanzbasierte Kit-Runtime (
KitRegistry) — Zweistufige Level-Pipeline, automatischesmeta.json-Parsing mit Socket-Lichtern, Schema-Validierung und Entkopplung von Raum-Dressing und Story-Controller. - ADR 0021: Ökosystem-Pakete für exotische Geometrien & höherstufige Physik —
@small-world/geometry-extras(AbstractGeometry-Erweiterungen: Lathe, Platonische Körper, parametrische Flächen, Polygon-Füllung, Voronoi, Marching Cubes, ...) und@small-world/physics-extras(z.B. Voronoi-Frakturen) als entkoppelte Workspace-Pakete über dem Kern. - ADR 0022: GPU-Instanzierte VFX-Partikel-Pipeline &
@small-world/vfx-extras—@small-world/vfx-extras(ParticleSystem,ParticleMeshRenderer, Kraftfeld-Affektoren, Akkretionsscheiben-Simulation, relativistisches Lensing) für hochperformante VFX in einem einzigen Draw Call. - ADR 0023: Modernisierung der Physik-Engine & Constraint-System — Collision Layers, Bitmasken, Trigger-Lifecycle, Query API, 3D-Trägheitstensoren und modulares Joint-System (
DistanceJoint,SpringJoint,BallSocketJoint,HingeJoint). - ADR 0024: Entwicklungswerkzeuge als eigenes Ökosystem-Paket —
@small-world/tools(Maker, MaterialStudio, Pixler, Xtractor, MapGenerator, Forge) als entkoppeltes Workspace-Paket; Kern verliert die hartkodierte Inspector-Verdrahtung zugunsten eines explizitenattachDevTools(app).