// TECH //

Vom Klick zum Live-Match in Sekunden

Was der Browser lädt, wie deine Identität die Iframe-Grenze überquert, und was die Server tun, während du spielst. Jede Zahl hier wurde an der Live-Seite gemessen.

Was ein Klick auf Spielen wirklich lädt

Eine Kachel auf der Startseite bringt dich nach /play.html?game=<slug>. Diese Seite ist absichtlich klein: elf Dateien, etwa 82 KB HTML, CSS und JavaScript, rund 31 KB komprimiert, geparst und lauffähig 100 bis 150 Millisekunden, nachdem die Anfrage rausgeht.

Nichts davon ist das Spiel. Die Seite liest den Slug aus dem Query-String, holt den Katalog von games.blitzbrawl.com/catalog.json und schlägt ihn nach. Schlägt dieser Abruf fehl, wird eine in die Seite eingebaute Kopie benutzt, damit eine schlechte Minute im Netz trotzdem ein Spiel zeigt.

Der Eintrag liefert das Einzige, was zählt: eine Spiel-URL der Form games.blitzbrawl.com/<Spiel-ID>/<Versions-ID>/index.html. Die Seite erzeugt ein Iframe, zeigt es dorthin, und ist fertig.

Warum es keinen Installationsschritt gibt

Diese Versions-ID leistet echte Arbeit: Jeder Build landet auf einem neuen, unveränderlichen Pfad, also cachen Browser und CDN ihn hart, und ein Release macht nichts ungültig. Es wird nichts installiert, weil es nichts zu installieren gibt: Die Spiele sind HTML, JavaScript und ein Canvas.

Was ein erster Besuch mit leerem Cache kostet, aus dem Resource Timing des Browsers selbst:

Alle drei Menüs waren an einer Desktop-Verbindung innerhalb einer Sekunde auf dem Bildschirm und klickbar. Ein Handy mit schwachem Signal braucht länger, und je schwerer die Grafik, desto mehr merkt man das.

Das Spiel läuft in einer Sandbox, auf einer eigenen Domain

Das Spiel läuft nicht auf blitzbrawl.com. Es läuft auf games.blitzbrawl.com, in einem Iframe, das mit sandbox="allow-scripts allow-same-origin allow-pointer-lock" und allow="autoplay; fullscreen" deklariert ist.

Eine andere Origin bedeutet, dass das Spiel die Seite um sich herum nicht lesen kann, weder ihr DOM noch ihren Speicher, und diese Seite nicht die des Spiels. Vollbild und Pointer Lock werden bewusst erlaubt, damit der Vollbild-Button die echte Browser-API benutzt, wo es eine gibt, und den Viewport von Hand übergibt, wo es keine gibt, wie in Safari auf dem iPhone.

Wie das Spiel erfährt, wer du bist, ohne Passwort

In diesem Stack gibt es keine Passwörter. Wenn zum ersten Mal eine Identität gebraucht wird, prägt der Kontodienst ein anonymes Gerätekonto: ein undurchsichtiges Token und eine Spieler-ID, keine E-Mail. Um es zwischen Handy und Laptop mitzunehmen, gibst du eine E-Mail-Adresse an und bestätigst einen 6-stelligen Code. Das ist die ganze Anmeldung. Die Routine, die eine bestehende Sitzung prüft, registriert nie, also kann ein wackeliges Netz ein echtes Konto nicht gegen ein frisches anonymes tauschen.

Das Token lebt in einem bb_dt-Cookie mit Geltung für .blitzbrawl.com, mit einer Kopie im Local Storage. Dieser führende Punkt ist es, der die geteilte Origin zum Laufen bringt: Ein Spiel auf games.blitzbrawl.com sitzt unter derselben Domain und sieht das Token bereits.

Der sauberere Weg ist ein Handshake über die Iframe-Grenze. Das SDK des Spiels schickt ein hello mit seiner Protokollversion; die Seite antwortet mit ready, der Spiel-ID und dem aktuellen Spieler. Beide Seiten bleiben misstrauisch: Die Seite ignoriert alles, was nicht von der exakten Spiele-Origin und dem exakten Iframe kommt, das sie eingehängt hat, und das Spiel rastet beim ready auf die Eltern-Origin ein. Vor dieser Sperre bewegen sich keine Spielerdaten, und ein fehlgeschlagener Handshake fällt auf das Cookie zurück. Meldest du dich mitten im Spiel an oder ab, fährt ein playerChange-Ereignis über denselben Kanal, sodass der Multiplayer ohne Neuladen aufleuchtet.

Wie du in einem Match mit einem echten Menschen landest

Zwei der drei Spiele teilen sich einen serverseitigen Matchmaker, und der probiert zuerst die langweilige Option: Wartet eine öffentliche Lobby mit einem freien Platz und einem lebendigen Host, wirst du dort bereits als bereit hineingesetzt. Die Wertung wird dabei ignoriert: In einem laufenden Spiel zu landen, schlägt eine faire Paarung, wenn niemand in der Warteschlange steht.

Gibt es keine Lobby zum Beitreten, kommst du in eine Warteschlange, die sich weitet, während du wartest. Der akzeptable Wertungsabstand beginnt bei 150 Punkten und wächst um 100 pro fünf gewartete Sekunden, und die Fenster beider Spieler müssen den Abstand überspannen, bevor sie gepaart werden, sodass ein langer Wartender nie einen unpassenden Neuankömmling vorgesetzt bekommt. Es gibt keine serverseitigen Timer: Dein Client schickt seine Anfrage alle fünf Sekunden neu, und zwei kompatible Suchende werden sofort gepaart. Das Match beginnt 800 Millisekunden später, auf einer Uhr, auf die sich beide Clients einigen.

Blob Volley fährt eine gröbere Version derselben Idee und stuft den Abstand über 200, 500 und 1000 Wertungspunkte bis hin zu jedem, fünf Sekunden pro Stufe.

Matchmaking dauert Sekunden, wenn gerade noch jemand sucht. Wenn nicht, ist es ein Warten, und das repariert keine Technik, weshalb alle drei Spiele auch einen vierstelligen Lobby-Code ausgeben, den du einem Freund schicken kannst.

Was das Match am Laufen hält

Jedes Online-Match läuft über einen WebSocket zu einem regionalen Endpunkt. Clash of Stars rät die Region aus deiner Zeitzone (Frankfurt, Virginia oder Singapur) und lässt dich das in den Optionen überschreiben. Blob Volley öffnet alle drei und behält den, der zuerst antwortet. Zone Command läuft heute in einer Region, Frankfurt.

Dieser Socket ist ein Relay, und das Relay ist der Boden, nicht die Decke. Jedes Spiel handelt zusätzlich einen direkten WebRTC-Datenkanal aus, ungeordnet und ohne Wiederholungen, weil eine verspätete Eingabe nichts wert ist. Solange beide Routen existieren, gehen Pakete über beide raus, sodass die direkte Route die Latenz nur senken und ein Match nie zu Fall bringen kann. Blob Volley dreht die Reihenfolge um: Es bevorzugt den direkten Kanal und fällt nach 15 Sekunden auf das Relay zurück.

Was über die Leitung geht, ist kein Spielzustand. Alle drei schicken Eingaben und Befehle und berechnen die Folgen lokal, weshalb der Verkehr winzig ist:

Wo die Sekunden wirklich bleiben

Zusammengezählt für einen kalten ersten Besuch an einer Desktop-Verbindung: etwa 150 Millisekunden für die Seite um das Spiel herum, unter einer Sekunde, bis das leichteste Spiel ein klickbares Menü zeigt, zwei Taps bis zur Schnellsuche, und dann die eine Zutat, die keine Technik liefern kann, ein anderer Mensch.

▶ Zu den Spielen
Weiterlesen: Wie Zone Command eine Karte in eine Kriegswirtschaft verwandelt Wie Clash of Stars Hunderte Schiffe synchron hält