Commit Graph
115 Commits
Author SHA1 Message Date
knsoandClaude Sonnet 5 73a6df7f08 fix(extract): Hüllrechteck ohne Zusatzpunkte auf den Kanten
_sides() und _place_rows() nehmen die ersten vier Ringpunkte eines Rechtecks
als seine Ecken. GEOS setzt nach dem Puffern je nach Plattform zusätzliche
Punkte mitten auf die Kanten (macOS 0, Windows 2), und dann messen beide die
falschen Kanten: ergänzte Gebäude bekamen unter entfernten Beschriftungen eine
falsche Größe und eine falsche Richtung. simplify(0) entfernt genau diese
Punkte und lässt die Form unverändert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 05:54:22 +02:00
knsoandClaude Sonnet 5 aa699b1585 fix(test): zwei plattformabhängige Tests unter Windows neutral
GEOS setzt bei entarteten Eingaben je nach Plattform zusätzliche Punkte auf
eine Kante, und fileURLToPath liefert unter Windows Backslashes. Beide Tests
prüfen jetzt, was sie meinen: die Ecken des Rechtecks und den Ort im Baum.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 05:43:43 +02:00
knsoandClaude Opus 5 c6241db90f docs: Umsetzungsplan für Flamingo Park, Spec beim Planen geschärft
Beim Nachrechnen korrigiert: affine statt bilinearer Einpassung (bilinear
verfehlte den Hood Yard um 4,2 m), offset_u 6,25 m, gemessenes Schnitt-Vieleck
der Gasse, Mittellinienstücke erst ab 15 m, Tribüne ohne replaces, Startpunkt
als eigenes Modul, PYTHONUTF8=1 unter Windows.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 23:57:30 +02:00
knsoandClaude Opus 5 c278ad3d9d docs: Entwurf für Flamingo Park nach OpenStreetMap
Teil 1 von zwei: Der Park bekommt die echten Wege, Felder, Plätze, Pool,
Parkplatz und Gebäude, eingepasst nach Variante D, dazu die Jefferson Avenue
als gerade Verlängerung nach Süden. Umsetzung in der Extraktion. Teil 2
(Bordstein, Gehweg, amerikanische Markierungen) bekommt einen eigenen Entwurf.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 23:22:09 +02:00
knsoandClaude Opus 5 fb38652e7f chore(controller): three-player-controller als Ordner statt Submodul
Das Submodul zeigte auf GitHub, der eingetragene Stand 028c652 lag aber nur
lokal vor: GitHub-Master ac39682 plus Showcase mit Figuren und launch.json.
Frische Klone konnten den Controller deshalb nicht laden. Jetzt liegt dieser
Stand als normaler Ordner im Repo, ohne Verweis auf GitHub.

dist/ und node_modules/ im Controller bleiben ignoriert und werden wie bisher
lokal gebaut.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 21:27:03 +02:00
knsoandClaude Opus 5 780e246fe5 Merge branch 'leonida/tribuene'
Tribüne im Park J6 statt des alten Gebäudekastens, mit Materialrollen,
ersetzten Grundrissen beim Chunk-Aufbau und Asset-Test je Ort.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 21:26:58 +02:00
knso a55dca5fb6 start 2026-09-15 21:05:18 +02:00
knsoandClaude Sonnet 5 71011e27e2 docs(skills): Projekt-Skill kennt replaces und den Asset-Test je Ort
Behebt Befund 1 aus dem Abschluss-Review: der Skill war seit den
Tribüne-Tasks veraltet - er kannte weder replaces noch die
Materialzeilen je Ort in SOLID_BY_PLACE/BUMP_BY_PLACE. Ersetzt statt
angehängt, an den drei Stellen, wo man danach sucht: Überblick
(Ein-neuer-Ort-Liste), Schritt 2 (Stelle holen) und Schritt 8 (Tests),
dazu zwei Fallstricke-Zeilen für die roten Ausgangszustände.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 03:57:37 +02:00
knsoandClaude Sonnet 5 237a4ed389 test(world): ersetzte Grundrisse und feste Materialien je Ort strenger prüfen
Behebt Befunde 2-6 aus dem Abschluss-Review: der replaces-Test prüft
jetzt zusätzlich jede Ecke des getroffenen Grundrisses gegen die
Außenmaße plus REPLACED_OVERHANG (5 m), der Verteilungstest vergleicht
als Mengen und bekommt eine Gegenrichtung je Datei, BUMP_BY_PLACE
erzwingt eine Zeile je Ort statt sie mit "?? []" zu verdecken, ein
Gebäude an einer Chunkgrenze bekommt einen Test über zwei Chunks samt
JSDoc-Hinweis, und der Rückwand-Messwert in der Spec nennt Kapselmitte,
Wandfläche und Radius einzeln.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 03:57:31 +02:00
knsoandClaude Opus 5 14fd9cefde docs: Tribünen-Spec mit Messwerten aus dem Spiel
Browserprüfung: alter Kasten weg (Strahl trifft Boden bzw. Tribünendach), acht feste Materialien als Float32 im Collider, Rückwand stoppt die Kapsel am Sockel, Tunnel samt Treppe begehbar, Sitze durchlässig, +0,1–0,3 ms je Bild, vorgewärmt (48 ms bis zum Einsetzen, größte Lücke 56 ms).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 20:57:00 +02:00
knsoandClaude Sonnet 5 190fe9c13c feat(world): Tribüne im Park J6 statt des alten Gebäudekastens
tribuene.glb mit places.mjs aufbereitet (6,3 MB -> 1,7 MB, 69 557 Dreiecke, 14 Primitive, 49 MB Grafikspeicher). PLACES-Eintrag bei (1409,9 | 1051,1), 45° gedreht, lift 0, replaces auf den 18,6 m hohen Kasten. Der Lage-Test übergeht ersetzte Grundrisse und prüft, dass jeder replaces-Punkt genau ein Gebäude unter dem Ort trifft.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 20:36:29 +02:00
knsoandClaude Sonnet 5 ae0f6106bb feat(world): Materialrollen der Tribüne, Asset-Test je Ort
Fest: Sichtbeton, Estrich, Verkleidung, Stahl, Trapezblech, Riffelblech, Verglasung, utility_box_01. Nahflächen: Sichtbeton, Estrich, Verkleidung, Stahl, Sitzschale. Kabel, Kabeldosen, Wandleuchten und Kästen auf 0,25. Der Asset-Test prüft jede Datei aus PLACES gegen ihre eigene Zeile fester Materialien statt gegen die ganze globale Liste, Bump nur beim Hood Yard.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 20:24:09 +02:00
knsoandClaude Opus 5 e33c1817ec feat(world): Gebäude, die ein Ort ersetzt, beim Chunk-Aufbau weglassen
withoutReplacedBuildings filtert die Grundrisse, in denen ein Weltpunkt aus PLACES[].replaces liegt; ChunkStreamer baut die Geometrie daraus, main.js übergibt die Punkte aller Orte. Damit entfallen Kasten, Schatten und Kollision des alten Gebäudes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 20:13:47 +02:00
knsoandClaude Opus 5 f7506ac556 docs: Umsetzungsplan für die Tribüne im Park J6
Vier Tasks: ersetzte Gebäude beim Chunk-Aufbau weglassen, Materialrollen und Asset-Test je Ort, Tribüne aufbereiten und eintragen (am Prototyp gemessen: 1,7 MB, 69 557 Dreiecke, 14 Primitive, 49 MB), Prüfung im Browser mit vorberechneten Blick- und Kapselpunkten.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 20:08:18 +02:00
knsoandClaude Opus 5 4a1b337609 docs: Entwurf für die Tribüne im Park J6
Die Tribüne aus tribuene.glb ersetzt 1:1 den Gebäudekasten in J6:
längs mittig auf dem alten Gebäude, 45° gedreht, Front 1 m vor dessen
Feldseite (Vergleichsbild im Gespräch bestätigt), lift 0 ohne
Bodenplatte. Neu gegenüber dem Hood Yard ist replaces im Orte-Eintrag:
der ChunkStreamer lässt den Grundriss beim Aufbau weg. Dazu
Materialrollen, Budget und der Umbau des Asset-Tests auf alle Orte.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 19:55:12 +02:00
knsoandClaude Opus 5 6a056262a8 chore(skills): Projekt-Skill zum Platzieren von three-d-stage-Modellen
Ablauf wie beim Hood Yard mit den gefundenen Fallstricken (Dreiecke je Knoten,
Bodenplatte +6 cm, globale Materiallisten, Asset-Test je Ort, launch.json nur im
Hauptordner, gl.finish-Messung, Vorwärmen prüfen) und Werkzeugen: Modell vermessen,
Kartendaten eines Weltfensters, Vergleichsbild Satellit/Spiel, Screenshot-Dekodierung,
erprobte Browser-Ausschnitte.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 19:22:20 +02:00
knsoandClaude Sonnet 5 7e4af1d0bc docs: Hood-Yard-Spec mit Messwerten und Vorwärmen
Wortlaut: die Radien garantieren nur, dass die Chunks unter einem Ort
angefordert sind, solange er in der Szene ist — nicht, dass ihr Boden
schon gebaut ist (ChunkStreamer baut höchstens einen Chunk je Bild).
"geladen" -> "angefordert" im Kommentar über den Radien
(src/world/places.js), über der PlaceLayer-Konstruktion (src/main.js),
im Testnamen (tests/placesSite.test.js) und in der Spec, dort mit
einem Satz zu den paar Bildern nach einem Kartensprung.

Spec zusätzlich: warmUp in den Bullets "Vorbereiten"/"Einsetzen",
robustes Einsetzen (Warnung, kein erneuter Versuch) im Bullet zum
Ladefehler, und ein neuer Messwerte-Bullet in "Fehlerfälle und
Risiken" (+0,4–0,6 ms je Bild, ~130 ms einmaliger Texturupload ohne
warmUp).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 13:43:23 +02:00
knsoandClaude Sonnet 5 fc9e818c79 test(world): entquantisierte Positionen auch für interleaved Attribute
GLTFLoader liefert quantisierte Positionen in echt als
InterleavedBufferAttribute (gemeinsamer Puffer mit Normale/UV), nicht
als eigene BufferAttribute wie im bisherigen Test. dequantizePosition
braucht dafür keine Änderung: es liest nur über das gemeinsame
Attribut-Interface (normalized, getX/getY/getZ, count), das three.js
für beide Klassen implementiert. Der Test läuft grün und schreibt das
fest.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 13:41:46 +02:00
knsoandClaude Sonnet 5 23a0623898 fix(assets): Zielpfad der Aufbereitung unabhängig vom Arbeitsverzeichnis
places.mjs schrieb bisher nach public/models/places/<id>.glb relativ
zu process.cwd() und nahm jede id ungeprüft an. Die neue, exportierte
placeTarget(id) löst den Pfad stattdessen von import.meta.url ab (egal
von wo das Skript aufgerufen wird) und lehnt IDs außerhalb von
[a-z0-9-]+ ab, bevor daraus ein Pfad wird, der aus public/models/
places/ herausführen könnte.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 13:41:18 +02:00
knsoandClaude Sonnet 5 ed5254f88e fix(world): Einsetzen eines Orts gegen Collider-Fehler absichern
#show baute bisher scene.add, bevor player.addCollider lief: wirft
addCollider (z. B. toter Worker), blieb die Wurzel ohne active-Eintrag
in der Szene stehen — sichtbar, aber nie wieder entfernbar — und die
Ausnahme entkam synchron aus update() in die Spielschleife.

Der Collider-Handle wird jetzt vor scene.add in einem try/catch
gebaut; schlägt er fehl, bleibt die Szene unverändert, der Ort landet
in this.failed (kein erneuter Versuch) und #show überspringt ihn beim
nächsten Aufruf.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 13:40:28 +02:00
knsoandClaude Sonnet 5 1c24fbf71e feat(world): Orte beim Vorladen vorwärmen
PlaceLayer nimmt jetzt ein optionales warmUp(root) entgegen und ruft es
nach prepareModel, aber vor dem Einsetzen auf. main.js nutzt das, um
Texturen hochzuladen und CSM-Shader zu übersetzen, solange der Ort noch
nicht in der Szene ist — gemessen kostete das sonst rund 130 ms auf
einen Schlag im ersten Bild, in dem der Hof erscheint. Schlägt das
Vorwärmen fehl, wird nur gewarnt; der Ort wird trotzdem eingesetzt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 13:39:50 +02:00
knsoandClaude Sonnet 5 522101c026 fix(world): quantisierte Positionen vor dem Kollisionsaufbau in Float32 wandeln
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 12:42:25 +02:00
knsoandClaude Haiku 4.5 9f6570b11d feat(world): Hood Yard im Spiel
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-09-14 11:35:17 +02:00
knsoandClaude Sonnet 5 ef2001542a feat(world): PlaceLayer lädt vor, setzt ein und nimmt heraus
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 11:26:34 +02:00
knsoandClaude Haiku 4.5 16eb651308 test(world): Lage der Orte gegen Straßen, Gebäude, Palmen, Laternen und Chunk-Radien
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-09-14 11:15:14 +02:00
knsoandClaude Haiku 4.5 d923f1ba2f feat(assets): Hood Yard aufbereitet (653,6 MB -> 16,2 MB)
2,9 Mio. -> 658 000 Dreiecke, 542 -> 43 Primitive, 105 PNG in 2048 px ->
32 WebP in 1024 px und 37 in 512 px. EXT_materials_bump der Container erhalten.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-09-14 11:08:26 +02:00
knsoandClaude Haiku 4.5 62dbbe41d2 feat(world): Orte-Liste mit Lage, Radien und Kollisionsmaterialien
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-09-14 10:59:02 +02:00
knsoandClaude Haiku 4.5 6c291c4106 feat(assets): Aufbereitung für Orte mit Texturgrößen je Material und Vereinfachung
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-09-14 10:49:31 +02:00
knsoandClaude Opus 5 0ebe8adb8b feat(assets): EXT_materials_bump für gltf-transform
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 10:39:39 +02:00
knsoandClaude Opus 5 3321a029fa docs: Umsetzungsplan für den Hood Yard, Spec am Prototyp geschärft
Prototyp am echten Modell: 653,6 MB -> 16,2 MB, 2,9 Mio. -> 658 000 Dreiecke,
Bump-Maps erhalten. Radien geändert: Der Hof erscheint erst ab 250 m und
verschwindet ab 450 m, sonst stünde er vom Startpunkt aus über ungeladenem
Boden. Vereinfachung je Material statt eines gemeinsamen Anteils.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 10:24:46 +02:00
knsoandClaude Opus 5 b61d9ab6a1 docs: Entwurf für den Hood Yard im Park J6/K6
Eigenes Modell aus three-d-stage 1:1 an die Stelle der kleinen Gebäude
zwischen Baseball- und Fußballfeld: Aufbereitung mit gltf-transform unter
Erhalt von EXT_materials_bump, Orte-Schicht mit Laden je nach Abstand,
Kollision über Materialnamen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 09:44:20 +02:00
knsoandClaude Opus 5 e26bded427 docs(minimap): Leerzeile in der Liste entfernt, früheren Spawn als solchen benannt
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 20:55:35 +02:00
knsoandClaude Opus 5 dedf5be507 docs: Folgen der Beschriftungs-Entfernung für Feinkalibrierung, Minimap und Start
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 20:39:55 +02:00
knsoandClaude Opus 5 4534a47eec fix(world): Start und Autos auf die wiederaufgebaute Straße am Park
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 20:03:17 +02:00
knsoandClaude Opus 5 dac19fa1ee feat(extract): alle Kartenbeschriftungen entfernt und Welt neu erzeugt
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 20:03:09 +02:00
knsoandClaude Opus 5 f098fe14b7 feat(extract): Beschriftungen suchen, Liste auf Vollständigkeit prüfen, Prüfbilder
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:38:14 +02:00
knsoandClaude Opus 5 b219013bbf feat(extract): Beschriftungen in run.py entfernen, Minimap am Ende erzeugen
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:30:51 +02:00
knsoandClaude Opus 5 97ff63b2b6 feat(extract): Beschriftungsmasken, Gitternetz und Entfernen mit Bericht
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:15:32 +02:00
knsoandClaude Opus 5 ce93e57936 feat(extract): angeschnittene Gebäude schließen und verdeckte Blockteile bebauen
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:08:53 +02:00
knsoandClaude Opus 5 368ea90b3a feat(extract): Wiederaufbau von Straßen, Wegen und Flächen unter Beschriftungen
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 18:37:05 +02:00
knsoandClaude Opus 5 c9e0615a88 feat(extract): Chunk-Zuordnung in Python und Beschriftungsliste lesen
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 18:27:33 +02:00
knsoandClaude Opus 5 a8817e2849 docs: Umsetzungsplan zum Entfernen der Kartenbeschriftungen
Acht Aufgaben, Code und Liste aus dem gegen die echte Vorlage geprüften
Prototyp; in Plan-Reihenfolge in einer Repository-Kopie nachgespielt.
Spec: Start und Autos ziehen von der Buchstabenkontur auf die
wiederaufgebaute Straße am Park, Nummern im Berichtsbeispiel.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 18:17:32 +02:00
knsoandClaude Opus 5 ac2f414bb6 docs: Beschriftungs-Spec am Prototyp gegen die echte Vorlage geschärft
Straßenenden über das Skelett samt Maske, Korridor statt Versatzgrenze,
Weiterführen über Kreuzungen, Ziel auf der anderen Seite, keine gemalten
Sackgassen, Kartenrand; Gebäudevorlage ab 100 m² im 150-m-Fenster;
randvoll vor dem Wachsen; Kontrastregel der Suche; Probelauf mit Kennzahlen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 17:53:13 +02:00
knsoandClaude Opus 5 57ffb5953a docs: Entwurf zum Entfernen der Kartenbeschriftungen
Alle Beschriftungen der Vorlage (Schriftzüge, Marker, Schilder, Symbole,
Straßennamen, Gitternetz) werden vor der Vektorisierung aus dem Klassenbild
entfernt und darunter wiederaufgebaut: Straßen laufen durch, Flächen
schließen sich, angebissene Gebäude werden geschlossen, verdeckte Blockteile
bekommen passende, als ergänzt markierte Gebäude. Ersetzt task_999fed4a.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 16:33:23 +02:00
knsoandClaude Opus 5 f76e97b69d feat(world): HDRI-Himmel „Nowhere Road" mit Umgebungslicht und scharfen Kaskaden-Schatten
- Himmel: 4k-HDRI von Poly Haven (CC0, tools/assets/hdri.mjs) statt Sky-Shader. Kuppel zeigt das Foto
  ab 12°, darunter weiches Band und Dunst in Nebelfarbe; Umgebungslicht und Spiegelungen per PMREM;
  Sonne aus dem Bild gekappt und als Licht übernommen (77°, Stärke 2,5)
- Schatten: CSM mit vier Stufen (25/100/350/1000 m, je 2048²), Schutznetz für beleuchtete Materialien,
  Normal-Bias 1,5 Texel je Stufe gegen Streifen auf doppelseitigen Materialien (Figur, Autos)
- Startfigur wirft Schatten, Palmen und Laternen empfangen Schatten, Wasser als ruhige See
- Debug-Panel: Sonne, Himmelslicht, Himmelshelligkeit; Namensnennung um das HDRI ergänzt

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 15:38:44 +02:00
knsoandClaude Opus 5 034b12537a docs: Entwurf und Umsetzungsplan für scharfe Kaskaden-Schatten
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 15:38:18 +02:00
knsoandClaude Opus 5 c79b4f347b docs(minimap): Lage der Koordinatenanzeige auch im Abschnitt Stapelordnung
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 13:04:49 +02:00
knsoandClaude Sonnet 5 dd5ced505b fix(ui): Landeplatz nur auf ganzem Kollisionsboden, Trackpad-Zoom, Fokus und Ladefehler der Minimap
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-13 12:47:51 +02:00
knsoandClaude Opus 5 e702517662 docs(minimap): Landeplatz auf ganzem Kollisionsboden, Fokus, Trackpad-Zoom und Ladefehler nach dem Abschluss-Review
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 12:27:39 +02:00
knsoandClaude Haiku 4.5 3b09482e6a fix(ui): Downtown-Bezugspunkt statt Downtown-Kern, leere Standortanzeige ausblenden
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-09-13 11:47:44 +02:00