diff --git a/docs/superpowers/plans/2026-09-12-leonida-vice-slice.md b/docs/superpowers/plans/2026-09-12-leonida-vice-slice.md index 1bdbfda..8ba3bd2 100644 --- a/docs/superpowers/plans/2026-09-12-leonida-vice-slice.md +++ b/docs/superpowers/plans/2026-09-12-leonida-vice-slice.md @@ -1477,7 +1477,7 @@ def main() -> None: "slice": "vice-a", "source_commit": COMMIT, "seed": SEED, "chunk_size": 250, "chunks": [p["chunk"] for p in payloads], "class_shares": shares, - "attribution": "GTA VI Map Tiles & Landmarks (CC BY 4.0) — https://map.gtadb.org, YANIS v15", + "attribution": "Kartenkacheln: GTA VI Map (CC BY 4.0) — https://map.gtadb.org, YANIS v15. Wahrzeichen: rolux/gtamaplib-vc (Unlicense).", }) @@ -1487,7 +1487,13 @@ if __name__ == "__main__": Die Hilfsfunktionen `split_by_chunk_all`, `chunk_box_of` und `in_chunk` sind dünne Hüllen um `split_by_chunk` bzw. `chunk_box` aus `emit.py`; beim Umsetzen dort ergänzen, damit `run.py` keine eigene Geometrie-Logik enthält. -Die Datei `data/skyline.json` ist die aus `rolux/gtamaplib-vc` geholte `game/landmarks/landmarks.json`, `data/districts.json` enthält Name und Mittelpunkt je Viertel aus den gtadb-Landmarks. Beide werden in diesem Schritt einmalig heruntergeladen und mit committet. +Die beiden Datendateien liegen bereits unter `tools/extract/data/` im Repository und werden in diesem Schritt **nicht** heruntergeladen — sie sind einmalig erzeugt und mit committet worden, weil an ihnen die Lizenzlage hängt: + +`data/skyline.json` enthält die 54 Wahrzeichen, die in den Ausschnitt fallen, aus `game/landmarks/landmarks.json` von [rolux/gtamaplib-vc](https://github.com/rolux/gtamaplib-vc) bei Commit `98b858fe6cbb3ea0bffa94aa53d86c1d6b0d5a02`. Das Repository steht unter der Unlicense (Public Domain; GitHub erkennt die Datei nicht automatisch, der Text ist wörtlich die Unlicense). Übernommen sind nur `name`, `id`, `xyz` und `height` — die Texturen des Quell-Repos sind Spiel-Screenshots und bleiben ausgeschlossen. `height` ist dort identisch mit `xyz[2]`, also die Höhe der angepeilten Spitze über Null; genau das liest `assign_heights`. Die Namen sind echte Miami-Bauten, weil gtamaplib die Karte gegen reale Referenzen trianguliert. + +`data/districts.json` ist **selbst erstellt**, nicht extrahiert: in gtadb gibt es keine Viertelgrenzen. Die beiden Kerne sind aus den Wahrzeichen abgeleitet — `Downtown` als Mittelpunkt der 11 westlichen Wahrzeichen ab 150 m Höhe, `Ocean Beach` als Mittelpunkt der 27 Wahrzeichen auf der Nehrung. Dazu fünf Mittelpunkte `Suburbs` auf dem Raster x ∈ {−750, 250, 1250}, y ∈ {−250, 750, 1750}, wobei Rasterpunkte näher als 900 m an einem Kern entfallen. `Suburbs` steht absichtlich nicht in `DISTRICT_RANGES` und fällt damit auf `default` zurück — ohne diese Punkte wäre jedes Gebäude des Festlands dem Downtown-Kern am nächsten und die Vorstadt bekäme 20-60 m. + +Gemessen an den 2.352 echten Grundrissen: 68 Gebäude bekommen eine Wahrzeichenhöhe (31-248 m, Median 114,5), 279 fallen auf Downtown (20-59 m, Median 29,6), 543 auf Ocean Beach (8-25 m, Median 12,5), 1.462 auf Suburbs (6-15 m, Median 8,4). Gesamtprofil p50 9,4 m, p90 27,2 m. - [ ] **Step 6: Durchlauf und Sichtprüfung** diff --git a/tools/extract/data/districts.json b/tools/extract/data/districts.json new file mode 100644 index 0000000..da32420 --- /dev/null +++ b/tools/extract/data/districts.json @@ -0,0 +1,37 @@ +[ + { + "name": "Downtown", + "x": -511, + "y": 254 + }, + { + "name": "Ocean Beach", + "x": 1575, + "y": 1020 + }, + { + "name": "Suburbs", + "x": -750, + "y": 1750 + }, + { + "name": "Suburbs", + "x": 250, + "y": -250 + }, + { + "name": "Suburbs", + "x": 250, + "y": 750 + }, + { + "name": "Suburbs", + "x": 250, + "y": 1750 + }, + { + "name": "Suburbs", + "x": 1250, + "y": -250 + } +] \ No newline at end of file diff --git a/tools/extract/data/skyline.json b/tools/extract/data/skyline.json new file mode 100644 index 0000000..e44d08f --- /dev/null +++ b/tools/extract/data/skyline.json @@ -0,0 +1,547 @@ +{ + "source": "https://github.com/rolux/gtamaplib-vc (Unlicense), game/landmarks/landmarks.json", + "source_commit": "98b858fe6cbb3ea0bffa94aa53d86c1d6b0d5a02", + "note": "Nur name, id, xyz und height uebernommen; Texturen und Kamerafelder verworfen.", + "landmarks": [ + { + "name": "Opera Tower", + "id": "L184", + "xyz": [ + -417.55, + 864.58, + 200.87 + ], + "height": 200.9 + }, + { + "name": "Stephen P. Clark Government Center", + "id": "L211", + "xyz": [ + -934.67, + 19.08, + 161.5 + ], + "height": 161.5 + }, + { + "name": "Southeast Financial Center", + "id": "L222", + "xyz": [ + -461.31, + -460.1, + 248.34 + ], + "height": 248.3 + }, + { + "name": "Kaseya Center", + "id": "L187", + "xyz": [ + -272.56, + 433.4, + 46.77 + ], + "height": 46.8 + }, + { + "name": "Trésor Tower", + "id": "L10", + "xyz": [ + 1837.42, + 1946.05, + 119.24 + ], + "height": 119.2 + }, + { + "name": "Jade Ocean Condos", + "id": "L4", + "xyz": [ + 1580.99, + 2482.23, + 202.46 + ], + "height": 202.5 + }, + { + "name": "Portofino Tower", + "id": "L122", + "xyz": [ + 1734.05, + -205.8, + 144.46 + ], + "height": 144.5 + }, + { + "name": "Miami Tower", + "id": "L221", + "xyz": [ + -770.52, + -414.85, + 161.07 + ], + "height": 161.1 + }, + { + "name": "Marriott Miami Biscayne Bay", + "id": "L185", + "xyz": [ + -219.73, + 859.14, + 146.44 + ], + "height": 146.4 + }, + { + "name": "The Grand", + "id": "L182", + "xyz": [ + -262.47, + 952.24, + 176.64 + ], + "height": 176.6 + }, + { + "name": "Wells Fargo Center", + "id": "L225", + "xyz": [ + -655.02, + -408.58, + 186.88 + ], + "height": 186.9 + }, + { + "name": "The Floridian", + "id": "L116", + "xyz": [ + 1265.56, + 409.0, + 96.47 + ], + "height": 96.5 + }, + { + "name": "The Gates Hotel South Beach", + "id": "L86", + "xyz": [ + 1863.97, + 1612.19, + 48.18 + ], + "height": 48.2 + }, + { + "name": "Sunset Harbour South Condo", + "id": "L102", + "xyz": [ + 1441.32, + 1669.71, + 87.36 + ], + "height": 87.4 + }, + { + "name": "1800 Club", + "id": "L181", + "xyz": [ + -349.78, + 1034.41, + 161.96 + ], + "height": 162.0 + }, + { + "name": "Quantum on the Bay", + "id": "L179", + "xyz": [ + -398.51, + 1140.65, + 194.78 + ], + "height": 194.8 + }, + { + "name": "Bank of America Financial Center", + "id": "L84", + "xyz": [ + 1693.67, + 1372.34, + 73.44 + ], + "height": 73.4 + }, + { + "name": "Blue Diamond", + "id": "L9", + "xyz": [ + 1830.96, + 2061.61, + 143.59 + ], + "height": 143.6 + }, + { + "name": "Green Diamond", + "id": "L8", + "xyz": [ + 1772.72, + 2120.85, + 144.48 + ], + "height": 144.5 + }, + { + "name": "W South Beach", + "id": "L16", + "xyz": [ + 1906.2, + 1590.71, + 48.76 + ], + "height": 48.8 + }, + { + "name": "Venetian Isle Condominium", + "id": "L151", + "xyz": [ + 55.22, + 1191.41, + 46.93 + ], + "height": 46.9 + }, + { + "name": "1000 Venetian Way", + "id": "L150", + "xyz": [ + 307.83, + 1129.73, + 54.16 + ], + "height": 54.2 + }, + { + "name": "22 Biscayne Bay", + "id": "L473", + "xyz": [ + -350.41, + 1354.52, + 72.62 + ], + "height": 72.6 + }, + { + "name": "112 NE 41st St", + "id": "L168", + "xyz": [ + 26.62, + 2219.87, + 53.35 + ], + "height": 53.3 + }, + { + "name": "1111 Lincoln Rd", + "id": "L104", + "xyz": [ + 1482.94, + 1340.65, + 56.06 + ], + "height": 56.1 + }, + { + "name": "Capri South Beach", + "id": "L111", + "xyz": [ + 1316.65, + 1132.18, + 57.54 + ], + "height": 57.5 + }, + { + "name": "The Tides South Beach", + "id": "L26", + "xyz": [ + 1993.63, + 888.23, + 53.21 + ], + "height": 53.2 + }, + { + "name": "Old City Hall", + "id": "L70", + "xyz": [ + 1681.71, + 605.02, + 51.6 + ], + "height": 51.6 + }, + { + "name": "Vizcayne North Condominium", + "id": "L205", + "xyz": [ + -528.49, + 137.15, + 177.17 + ], + "height": 177.2 + }, + { + "name": "Marina Blue", + "id": "L189", + "xyz": [ + -455.68, + 414.97, + 177.13 + ], + "height": 177.1 + }, + { + "name": "Icon at South Beach", + "id": "L118", + "xyz": [ + 1355.98, + -13.76, + 154.8 + ], + "height": 154.8 + }, + { + "name": "Citigroup Center", + "id": "L224", + "xyz": [ + -382.36, + -480.26, + 152.12 + ], + "height": 152.1 + }, + { + "name": "50 Biscayne Blvd", + "id": "L523", + "xyz": [ + -434.64, + -246.37, + 146.71 + ], + "height": 146.7 + }, + { + "name": "Ten Museum Park", + "id": "L191", + "xyz": [ + -455.33, + 468.57, + 138.15 + ], + "height": 138.1 + }, + { + "name": "InterContinental Miami", + "id": "L569", + "xyz": [ + -255.84, + -466.24, + 133.46 + ], + "height": 133.5 + }, + { + "name": "Murano Grande", + "id": "L119", + "xyz": [ + 1415.06, + -58.77, + 126.36 + ], + "height": 126.4 + }, + { + "name": "Loft Downtown II", + "id": "L206", + "xyz": [ + -539.52, + 50.15, + 126.04 + ], + "height": 126.0 + }, + { + "name": "The Crimson", + "id": "L474", + "xyz": [ + -458.38, + 1238.37, + 122.89 + ], + "height": 122.9 + }, + { + "name": "New Wave Condominiums", + "id": "L176", + "xyz": [ + -341.11, + 1419.48, + 114.5 + ], + "height": 114.5 + }, + { + "name": "The Waverly South Beach", + "id": "L114", + "xyz": [ + 1249.0, + 602.57, + 110.95 + ], + "height": 110.9 + }, + { + "name": "Pelican Harbor Radio Tower", + "id": "L593", + "xyz": [ + 1101.8, + 1869.0, + 113.36 + ], + "height": 113.4 + }, + { + "name": "St. Moritz Hotel", + "id": "L21", + "xyz": [ + 1983.51, + 1107.58, + 49.35 + ], + "height": 49.4 + }, + { + "name": "Uptown Lofts", + "id": "L177", + "xyz": [ + -349.03, + 1316.42, + 46.15 + ], + "height": 46.2 + }, + { + "name": "Knight Concert Hall", + "id": "L436", + "xyz": [ + -353.55, + 687.21, + 46.16 + ], + "height": 46.2 + }, + { + "name": "New World Center", + "id": "L103", + "xyz": [ + 1653.41, + 1432.42, + 45.18 + ], + "height": 45.2 + }, + { + "name": "419 NE 4th Ave", + "id": "L475", + "xyz": [ + -428.91, + 1210.66, + 34.08 + ], + "height": 34.1 + }, + { + "name": "Hotel Victor", + "id": "L32", + "xyz": [ + 1945.1, + 733.09, + 33.59 + ], + "height": 33.6 + }, + { + "name": "Miami Beach Parking Garage", + "id": "L73", + "xyz": [ + 1850.1, + 682.39, + 34.08 + ], + "height": 34.1 + }, + { + "name": "City View Parking Garage", + "id": "L169", + "xyz": [ + -172.17, + 2060.76, + 33.16 + ], + "height": 33.2 + }, + { + "name": "Jenny Hostel", + "id": "L71", + "xyz": [ + 1911.18, + 602.76, + 30.98 + ], + "height": 31.0 + }, + { + "name": "Star Island Water Tower", + "id": "L382", + "xyz": [ + 760.6, + 480.35, + 28.73 + ], + "height": 28.7 + }, + { + "name": "Flamingo South Beach", + "id": "L112", + "xyz": [ + 1278.92, + 950.05, + 76.39 + ], + "height": 76.4 + }, + { + "name": "Cruise Terminal D", + "id": "L420", + "xyz": [ + 664.47, + -431.34, + 34.79 + ], + "height": 34.8 + }, + { + "name": "Hotel Breakwater", + "id": "L40", + "xyz": [ + 1949.86, + 563.75, + 25.8 + ], + "height": 25.8 + } + ] +} \ No newline at end of file