PROJEKTEINBLICK ·
Bevor andere darauf werfen
Solange nur ich die Dartbude benutzte, konnte ich mit kleinen Macken leben. Ich wusste, welcher Knopf zweimal gedrückt werden wollte und welche Anzeige nach einem Neustart kurz falsch war. Sobald andere die App benutzen, gilt das nicht mehr. Deshalb stand vor dem Release eine lange Phase, in der ich nichts Neues gebaut, sondern nach Fehlern gesucht habe.

Dartboards hängen selten neben dem Router. Deshalb war mir von Anfang an wichtig, dass die Dartbude auch ohne Verbindung weiterläuft. Ein Training, das bei einem Funkloch abbricht, ist schlimmer als gar keins.
Die App speichert deshalb jede Aufnahme zuerst lokal im Browser. Ist das Netz weg, läuft das Training einfach weiter. Kommt die Verbindung zurück, überträgt die App alles an den Server. Das gilt inzwischen für alle zehn Trainingsformen und für die Spiele 501, 301, Cricket, Around the Clock und High Score.

Ohne Internet können die Geräte weiterhin über den lokalen Server zusammenarbeiten. Bricht jedoch die Verbindung zu diesem Server ab, läuft das Training auf dem Eingabegerät lokal weiter. Ein separates Wand-Tablet erhält dann keine neuen Würfe. Für Cloud-Coach und Cloud-Stimme wird eine Internetverbindung benötigt.
Bei mir zu Hause ist die WLAN-Abdeckung kein Problem: Auf jedem Stockwerk steht ein Access Point. Aber darauf wollte ich mich bei der Dartbude nicht verlassen. Ein Board kann auch in einem Keller oder einer Garage hängen, wo das WLAN schwach ist oder gar nicht ankommt. Auch dort soll man vernünftig trainieren können.
Offline klingt nach einer Funktion. In Wirklichkeit ist es eine ganze Sammlung von Fragen. Was passiert, wenn die App während eines Spiels neu geladen wird? Was, wenn die Übertragung halb klappt? Und welche Regeln gelten offline, wenn die Spiellogik eigentlich auf dem Server liegt? Die Antwort auf die letzte Frage: Dieselben Regeln müssen auch im Browser laufen, und zwar exakt gleich. Dafür gibt es gemeinsame Testfälle, die beide Seiten bestehen müssen.
Fehler, die man nicht sieht
Die interessantesten Fehler dieser Phase waren die, die im Alltag kaum auffallen, aber still Daten verfälschen.
| Fehler | Was passiert wäre |
|---|---|
| Zwei Eingaben fast gleichzeitig, etwa ein Kamerawurf und ein getippter Wurf | Eine der beiden Aufnahmen ging verloren |
| Der Server speichert, aber die Antwort kommt beim Handy nicht an | Die App schickt erneut, und die Session existiert plötzlich doppelt |
| Montag offline trainiert, Dienstag übertragen | Das Training landet in der Statistik am Dienstag |
Der letzte Fehler ist mein Lieblingsbeispiel. Beim Übertragen schickte die App zwar die Würfe, aber nicht die ursprünglichen Zeiten. Der Server nahm die aktuelle Uhrzeit. Aus Montag wurde Dienstag, die Streak im Kalender stimmte nicht mehr, und ein Rekord trug das falsche Datum. Nichts davon hätte eine Fehlermeldung erzeugt.
Inzwischen überträgt die App die echten Zeitpunkte. Jede Session und jede Aufnahme hat außerdem eine feste Kennung. Schickt das Handy etwas ein zweites Mal, erkennt der Server es wieder und legt nichts doppelt an.
Auch die Uhrzeit selbst war eine Falle. Der Server rechnete die Tagesgrenzen zunächst in UTC. Wer in Deutschland kurz nach Mitternacht trainierte, bekam den Tag womöglich falsch zugeordnet. Jetzt rechnet die App mit der deutschen Zeitzone.
Bug-Hunts statt neuer Features
Zwischen Mai und September gab es mehrere gezielte Fehlersuchen, jeweils fachlich und technisch. Fachlich heißt: Stimmen die Dartregeln? Technisch heißt: Was passiert bei Neustarts, Abbrüchen, gleichzeitigen Zugriffen und vergessenen Sonderfällen?
Ein paar Beispiele, die ohne diese Suche geblieben wären:
- Ein Datenreset löschte die Spieler, ließ aber ihre Trainingspläne und Coach-Auswertungen als Überreste zurück.
- Im Gruppentraining landete die Reihenfolge auf Spielern, die schon fertig waren, und die Session wirkte blockiert.
- Zahlen erschienen mit Punkt statt Komma, also „57.3“ statt „57,3“.
- Ein neu trainiertes Kameramodell wäre in der installierten App nie angekommen, weil die alte Version im Zwischenspeicher lag.
Die Regel mit den 600 Zeilen
Zur Pflege gehören auch Regeln, die man sich selbst auferlegt. Wie schon bei Joris darf eine Datei in der Dartbude höchstens 600 Zeilen lang werden. Wächst sie darüber hinaus, wird sie aufgeteilt. Ein kleines Prüfprogramm achtet darauf.
Das hat mich mehrmals zum Aufräumen gezwungen, bevor ich weiterbauen durfte. Vor dem Bot zum Beispiel war die Datei für die Spielansicht schon so groß, dass ich sie erst zerlegen musste.
Der Kern zuerst
Dabei wurde mir immer klarer, was für die Dartbude Vorrang haben musste: Sie sollte auch ohne Kamera eine vollständige Trainings-App sein – mit Training, Spielen, Offline-Betrieb, Statistiken, Coach und Tablet-Anzeige. Die Bude-Cam kommt dazu, wenn sie so weit ist. Auf sie sollte der Rest nicht warten müssen.
Das Zielbild dafür ist ein ganz normaler Dartabend: App starten, Spieler wählen, spielen, bei schlechtem Netz lokal weiterspielen, später übertragen. Und danach zeigen Profil, Statistiken, Coach und Plan dasselbe, konsistente Ergebnis.
Heute laufen bei jeder Änderung rund 300 Tests für den Server, über 400 für die Oberfläche und mehrere Tests im echten Browser, darunter einer, der den Offline-Neustart der installierten App prüft.
Bereit für die ersten Gäste
Nach diesen Monaten fühlte sich die Dartbude zum ersten Mal wie etwas an, das ich auch anderen geben kann. Parallel dazu stellte sich eine andere Frage: Wie sollten andere von der Dartbude erfahren? Dafür brauchte die Bude ein Schaufenster.






