Bausteine · sport · MIT

mana-godot-sport

Was jemand entsendet und was es trifft: Auslauf, Belag, Durchtritt, Flugbahn, Ball, Linien — und sieben ganze Plätze, deren Masse je gegen ihr Regelwerk geprüft sind. Entstanden, weil sechs Sport-Apps mit zusammen 26 400 Zeilen aus sechs Kits kein einziges Modul benutzten und in dieser Lücke viermal derselbe Auslauf gebaut wurde.

7
Projekte benutzen ihn
17
Module
45
Bilder
Mitnehmen

Kopie mit Wächter

Kopiert statt verlinkt, damit das Projekt nach einem frischen Klon aufgeht. Ein Wächter im Prüflauf meldet, wenn die Kopie hinter der Quelle zurückbleibt.

./tools/kit-abgleich.sh holen

Landet unter modules/ im Projekt.

Was es tut

Der Befund, gezählt

Am 2026-09-09 im Haus gemessen: sechs Sport-Apps mit zusammen 26 400 Zeilen GDScript benutzten aus sechs Kits kein einziges Modul — hallenkiste, kegelkiste, whirtray, lawnhall, sjoelbox, dehnhalt. Vier weitere benutzten ein bis drei.

Und in dieser Lücke wurde dasselbe wieder und wieder gebaut:

gebaut mal wo
der Auslauf (konstante Bremse, Ruhe-Erkennung, Notbremse) 4 lawnhall · whirtray · sjoelbox · kugelweg
der Durchtritt durch eine Ebene 3 korb.gd · torwand.gd · cornhole.gd, Zeile für Zeile
ein Ball als flach schattierte SphereMesh 3 lawnhall · whirtray · kegelkiste
eine Bodentabelle mit Bremswerten 4 eine je Spiel, keine geteilt

🛑 Der teuerste Fall ist nicht die Kopie. kugelweg/scripts/boden.gd nennt lawnhall im Kommentar, zitiert dessen Befund zu linear_damp — und baut das Ganze trotzdem neu, samt drei Godot-Fallen zum zweiten Mal. Lehrgeld, dreimal bezahlt, an einer Stelle, an der nichts rot wird.

Wo die Zahlen herkommen

Jede Zahl im ball_generator steht gegen das Regelwerk ihres Verbands — IHF, FIFA, FIBA, ITF, ITTF, MLB, FIVB, FIPJP, USBC — mit der Quelle daneben. Seine Abnahme ist ein Kontaktbogen, kein grüner Haken: bei der ersten lagen vier von sieben Werten ausser Norm, und gefunden wurden sie erst beim Nebeneinanderlegen.

🟢 Seine zwei Python-Wächter laufen seit dem Umzug im Prüflauf statt daneben. Ein Wächter, den niemand ruft, ist kein Wächter — eine Katalogzahl zu brechen färbt jetzt den ganzen Lauf rot, gemessen an einer 900-g-Boule.

Die Eigenheiten, an denen man das Regelwerk erkennt

  • Das Volleyballnetz muss waagrecht sein — beim Tennis genau umgekehrt.
  • Badminton trägt auf EINEM Platz die Linien beider Spiele, und die Aufschlagfelder tauschen in entgegengesetzte Richtungen.
  • Handballs Torraum ist ein Stadion, kein Halbkreis: zwei Viertelkreise um die Pfosten, dazwischen eine Gerade.
  • Beim Tor muss der ganze Ball die ganze Linie überqueren — und eine Öffnung ohne Kollision wird befahren, nicht nur gemessen.

Prüflauf: 1 002 grün.

Ansehen

45 Bilder aus dem Katalog

  • Tennis auf Sand — Platz, Linien, Netz, Pfosten und Einzelstäbe. Das Netz hängt in der Mitte durch: die einzige Netzregel im Kit, die eine Kurve verlangt statt einer Geraden.

    Tennis auf Sand — Platz, Linien, Netz, Pfosten und Einzelstäbe. Das Netz hängt in der Mitte durch: die einzige Netzregel im Kit, die eine Kurve verlangt statt einer Geraden.

  • Die Linien aus der Nähe. `court_lines` zieht sie für alle sieben Plätze — Geraden und Bögen aus denselben Daten, aus denen auch die Prüfung ihre Sollwerte nimmt.

    Die Linien aus der Nähe. `court_lines` zieht sie für alle sieben Plätze — Geraden und Bögen aus denselben Daten, aus denen auch die Prüfung ihre Sollwerte nimmt.

  • Korb nach FIBA: Brett, Ring, Netz. Die Zählung hängt an einer EBENE mit interpoliertem Auftreffpunkt, nicht an einem Auslösefeld — ein Feld zählt doppelt oder gar nicht.

    Korb nach FIBA: Brett, Ring, Netz. Die Zählung hängt an einer EBENE mit interpoliertem Auftreffpunkt, nicht an einem Auslösefeld — ein Feld zählt doppelt oder gar nicht.

  • Von unten. Diese Ansicht ist der Grund, warum es sie gibt: durch den Ring sieht man, ob Netzaufhängung und Ringmitte zusammenfallen.

    Von unten. Diese Ansicht ist der Grund, warum es sie gibt: durch den Ring sieht man, ob Netzaufhängung und Ringmitte zusammenfallen.

  • Fussball: jede Markierung, die Regel 1 festlegt, zwei Tore auf echten Pfosten — und der Strafraum aus dem Torpfosten abgeleitet statt abgemessen.

    Fussball: jede Markierung, die Regel 1 festlegt, zwei Tore auf echten Pfosten — und der Strafraum aus dem Torpfosten abgeleitet statt abgemessen.

  • Volleyball. Das Netz muss WAAGRECHT sein — die entgegengesetzte Regel zum Tennisnetz, und der Fall, an dem ein gemeinsamer Netz-Baustein scheitern würde, wenn er nur eine Bauart kennte.

    Volleyball. Das Netz muss WAAGRECHT sein — die entgegengesetzte Regel zum Tennisnetz, und der Fall, an dem ein gemeinsamer Netz-Baustein scheitern würde, wenn er nur eine Bauart kennte.

  • Badminton: EIN Platz, der die Linien beider Spiele trägt (Einzel und Doppel) — und dessen Aufschlagfelder in entgegengesetzte Richtungen tauschen.

    Badminton: EIN Platz, der die Linien beider Spiele trägt (Einzel und Doppel) — und dessen Aufschlagfelder in entgegengesetzte Richtungen tauschen.

  • Handball. Der Torraum ist ein Stadion, kein Halbkreis: zwei Viertelkreise um die Pfosten, dazwischen eine Gerade. Wer einen Halbkreis zeichnet, hat das Regelwerk nicht gelesen.

    Handball. Der Torraum ist ein Stadion, kein Halbkreis: zwei Viertelkreise um die Pfosten, dazwischen eine Gerade. Wer einen Halbkreis zeichnet, hat das Regelwerk nicht gelesen.

  • Tischtennis, 76 cm hoch. Die vierte Netzregel des Kits — und die erste Stelle, an der die Ballgrösse die Platzmasse bestimmt statt umgekehrt.

    Tischtennis, 76 cm hoch. Die vierte Netzregel des Kits — und die erste Stelle, an der die Ballgrösse die Platzmasse bestimmt statt umgekehrt.

  • Die Flugbahnen, gerechnet und beschriftet. Quadratischer Luftwiderstand: der Federball knickt vorn steil ab, der Tennisball nicht. Mit linearem Widerstand sähen beide gleich aus — und genau das ist der Unterschied, den keine Prüfung meldet.

    Die Flugbahnen, gerechnet und beschriftet. Quadratischer Luftwiderstand: der Federball knickt vorn steil ab, der Tennisball nicht. Mit linearem Widerstand sähen beide gleich aus — und genau das ist der Unterschied, den keine Prüfung meldet.

  • Ein Schläger mit echter Besaitung, Kopfgrösse midplus. Vier weitere Grössen stehen im Katalog, bis legal_max.

    Ein Schläger mit echter Besaitung, Kopfgrösse midplus. Vier weitere Grössen stehen im Katalog, bis legal_max.

  • Der Tennisplatz von oben — die Ansicht, in der sich Masse prüfen lassen, und in der die Prüfung ihre Sollwerte gegen ITF hält.

    Der Tennisplatz von oben — die Ansicht, in der sich Masse prüfen lassen, und in der die Prüfung ihre Sollwerte gegen ITF hält.

Und der Rest des Katalogs

33 Bilder, so benannt, wie der Katalog sie rendert. Ohne Legende — geschrieben wird eine erst, wenn jemand am Bild etwas gesehen hat.

  • platz hardcourt platz hardcourt
  • platz turf platz turf
  • platz carpet platz carpet
  • netz quer netz quer
  • netz nah netz nah
  • netz einzelstaebe netz einzelstaebe
  • aufschlagblick aufschlagblick
  • schlaeger midsize schlaeger midsize
  • schlaeger oversize schlaeger oversize
  • schlaeger junior schlaeger junior
  • schlaeger legal max schlaeger legal max
  • schlaeger kante schlaeger kante
  • korb mini korb mini
  • korb von der seite korb von der seite
  • bplatz von oben bplatz von oben
  • bplatz schraeg bplatz schraeg
  • bplatz ecke bplatz ecke
  • bplatz zone bplatz zone
  • fplatz strafraum fplatz strafraum
  • fplatz tor fplatz tor
  • fplatz ecke fplatz ecke
  • vplatz schraeg vplatz schraeg
  • vplatz netz vplatz netz
  • vplatz antenne vplatz antenne
  • badminton schraeg badminton schraeg
  • badminton netz badminton netz
  • badminton aufschlag badminton aufschlag
  • hplatz torraum hplatz torraum
  • hplatz siebenmeter hplatz siebenmeter
  • hplatz bogenfuss hplatz bogenfuss
  • tisch schraeg tisch schraeg
  • tisch netz tisch netz
  • tisch aufschlag tisch aufschlag
Inhalt

Woraus er besteht

run_out
Die Strecke zwischen Loslassen und Stillstand: konstante Bremse, `s = v²/(2a)`, Rutsch-Roll-Übergang, Ruhe-Erkennung. 🛑 Viermal im Haus gebaut — und `linear_damp` ist NICHT Rollreibung: Dämpfung ist geschwindigkeitsproportional, echte Rollreibung nicht, und mit Dämpfung kommt nichts je zur Ruhe.
flight
Die Bahn zwischen Schläger und Boden, mit **quadratischem** Luftwiderstand. Ein Federball ist der Extremfall: er bremst so stark, dass seine Bahn vorn steil abknickt — mit linearem Widerstand fliegt er wie ein Tennisball, und das sieht man auf jedem Bild.
surface
Der Boden als Zahl — Bremsung je Belag, Rücksprung, und ein Herkunftsvermerk an jedem Wert. Die Bodenliste ist von `footsteps` GELIEHEN, nicht nachgebaut: zwei Listen derselben Sache driften, und dann klingt ein Boden unter dem Fuss anders als unter dem Ball.
crossing
Ging es DURCH (ein Ring, eine Tormündung) oder BERÜHRTE es (eine feste Fläche)? 🛑 Dreimal im Haus gebaut, Zeile für Zeile gleich. Ein Auslösefeld statt einer Ebene zählt doppelt oder gar nicht — und ein Ball, der durch den Ring fällt und zurückspringt, zählt einmal.
ball_generator
Zwölf Bälle — Muster, Naht und Narbung als Shader-Funktionen. **Jede Zahl gegen das Regelwerk ihres Verbands geprüft** (IHF, FIFA, FIBA, ITF, ITTF, MLB, FIVB, FIPJP, USBC), jede mit Quelle daneben. Seine Abnahme ist ein Kontaktbogen, kein grüner Haken. 🟢 Am 2026-09-09 aus `mana-godot-welt` hierher gezogen: dort hatte von 60 Modulordnern genau einer einen Sport-Zweck.
court_lines
Die Markierung auf einem Belag — Geraden und Bögen, als Daten UND als ein Mesh. Sieben Plätze teilen sich denselben Strichzieher.
hoop · goal
Korb mit Brett, Ring und Netz — und eine Zählung, die sich nicht austricksen lässt. Beim Tor die Regel, dass der GANZE Ball die GANZE Linie überqueren muss; eine Öffnung ohne Kollision wird befahren, nicht nur gemessen.
die sieben Plätze
Tennis, Basketball, Fussball, Volleyball, Badminton, Handball, Tischtennis. Jeder mit den Eigenheiten, an denen man merkt, ob jemand ins Regelwerk gesehen hat: das Volleyballnetz muss WAAGRECHT sein (beim Tennis genau umgekehrt), Badmintons Aufschlagfelder tauschen in entgegengesetzte Richtungen, Handballs Torraum ist ein Stadion und kein Halbkreis.
Abnehmer

7 Projekte benutzen ihn

Gezählt, nicht behauptet: pnpm bausteine durchsucht jede App im Baum nach Klassennamen des Bausteins und nach vendorierten Kopien. Ein Baustein ohne Abnehmer wäre keiner, sondern eine Bibliothek auf Vorrat. Stand: 2026-09-15.

Herkunft

Wem er gehört, was ihn prüft

Lizenz
MIT — Bausteine sind permissiv lizenziert, Anwendungen AGPL-3.0. Ein Baustein, der ansteckt, wäre keiner.
Träger
Der Verein
Gebiet
sport —
Wache
kit_smoke.gd — prüft ihn headless.
Katalog
kit_katalog.gd — rendert seine Bauteile als Bilder.

🛑 Kein Link ins Repository: die Kit-Repos liegen auf der eigenen Forge und sind noch nicht öffentlich. Ein Link, der 404 antwortet, wäre schlechter als keiner.

Grundsätze

Was er verkörpert

  • Offenheit
    Code und Mittelverwendung öffentlich.
  • Langlebigkeit
    Bewährte Stacks, gute Doku.
  • Achtsamkeit
    Keine Engagement-Tricks.
Stand

Was offen ist

  • Nichts davon lief auf einer Brille — und hier wiegt das schwerer als bei den anderen Kits, weil vier der Abnehmer VR-Apps sind (wurfbogen, tresenwurf, kugelweg, taktspiegel).
  • Die REGELN bleiben bewusst draussen. Vier Regelsätze im Haus passen in je eine Datei, sind headless prüfbar und tragen den Kommentar, warum sie so klein bleiben dürfen. Ein gemeinsamer Punkte-Rahmen tauschte vier saubere Dateien gegen eine Abstraktion, die keine von ihnen braucht.
  • `surface` leiht `Footsteps.GROUNDS` aus `mana-godot-welt` — eine `class_name`-Kopplung über eine Repo-Grenze, und `class_name` ist eine Kopplung OHNE Textspur: ein grep nach `res://` findet sie nicht.