2026-08-05
HISCORE: ein Punktestand, den du überall hinschicken kannst
Vier Pflichtfelder, eine Zeile Code, kein Konto und kein SDK. Die ganze Definition passt mit Absicht auf diese Seite, weil ein Protokoll, das niemand in einem Zug liest, sich nicht verbreitet.
Künstlich erzeugt
Text. Kennzeichnung nach Artikel 50 der KI-Verordnung (EU) 2024/1689.
Gebändigt von eurem ergebenen Geschmacksmeister und KI-Drachenreiter Jamji Jamaramji.
Das hier ist die Definition. Sie ist kurz, weil die Historie sagt, dass kurz gewinnt: über die Verbreitung entscheiden die Kosten der ersten korrekten Umsetzung, und jede vollständige Spezifikation hat gegen eine grobe verloren.
Der Name ist vorläufig. Auf der Leitung hängt nichts daran.
Der Eintrag
Ein Punktestand ist ein JSON-Objekt.
`` { "game": "polytopia", "player": "jamji", "score": 12345, "mode": "domination/imperius", "unit": "points", "dir": "high", "rules": "1.4.2", "at": "2026-08-05T09:30:00Z" } ``
Pflicht: game, player, score. Mehr nicht. Alles andere hat einen Standardwert und darf fehlen.
| Feld | Bedeutung | Standard |
|---|---|---|
game | wer das erzeugt hat. Eine stabile Zeichenkette, am besten eine, die dir gehört, etwa eine Domain oder ein Slug | Pflicht |
player | wer es geschafft hat. Eine stabile Zeichenkette | Pflicht |
score | eine Zahl | Pflicht |
mode | Modus, Regelwerk, Volk, Schwierigkeit, alles was zwei Punktestände unvergleichbar macht. Mit Schrägstrich getrennt | "" |
unit | points, ms, s, count | points |
dir | high wenn mehr besser ist, low wenn weniger besser ist | high |
rules | Version des Spiels oder Regelwerks, unter der gespielt wurde | "" |
at | wann, in UTC | Eingangszeit |
Warum diese vier Zusatzfelder existieren
Drei davon sind kein Schmuck. Sie sind der Unterschied zwischen einer Bestenliste und einem Haufen Zahlen.
dir und unit, weil du sonst nicht sortieren kannst. Eine Zeit von 42 schlägt eine Zeit von 61. Ein Punktestand von 42 verliert gegen 61. Ohne angegebene Richtung muss der Sammler raten, und er rät bei jedem Rennspiel der Welt falsch.
mode, weil ein Punktestand nur innerhalb seiner eigenen Regeln vergleichbar ist. Polytopia hat verschiedene Völker. Ein Speedrun hat Kategorien. Ohne dieses Feld verschmilzt jede Liste stillschweigend Spiele, die nie dasselbe Spiel waren.
rules, weil ein Patch die Sportart ändert. Ein Wert aus 1.0 ist kein Wert aus 1.4, wenn dazwischen etwas neu ausbalanciert wurde. Im Schach würde auch niemand Partien von vor 1880 in dieselbe Tabelle schreiben.
Der Rest des Entwurfs ist ein Satz: was du nicht ehrlich ausfüllen kannst, lässt du weg.
Wie du ihn schickst
Eine Zeile im Kopf, ein Aufruf am Ende des Laufs.
`` <script src="https://gamesareeatingtheworld.com/gs.js" data-key="DEIN_KEY"></script> <script>GS.submit(score)</script> ``
Oder ganz ohne unseren Code, indem du das Objekt selbst abschickst:
`` POST https://gamesareeatingtheworld.com/api/scores Content-Type: application/json ``
Kein SDK, kein Build-Schritt, kein Rückruf, keine Anmeldung für deine Spieler.
Eines ist nicht umsonst: die Spielkennung muss einmal angemeldet werden. Schreib an john@mcgrinsey.com mit der Kennung, die du willst, ein paar Minuten später gibt es sie. Das ist eine bewusste Schranke und kein Versehen. Ein Endpunkt, der von jedem unter jedem Namen Schreibzugriffe annimmt, ist genau das, woran Trackback gestorben ist, und eine einmalige Anmeldung ist die billigste Abwehr, die einen ehrlichen Entwickler fast nichts kostet.
Wenn irgendetwas davon mehr Arbeit ist, als das Spiel selbst verdient, haben wir schon verloren.
Vier Zusagen, damit du gehen kannst
Jede spielübergreifende Bestenliste, die je gebaut wurde, ist gestorben, meistens am Verkauf. Wer jemanden bittet, sich auf ihn zu verlassen, muss sagen, was passiert, wenn er aufhört.
Deine Punktestände gehören dir und sind exportierbar. GET /api/scores?key=… gibt alles heraus, zum Lesen braucht es keinen Schlüssel.
Keine Exklusivität. Schick denselben Eintrag an drei Sammelstellen. Dem Format ist das egal, und genau das ist der Sinn: ein Eintrag, den jede Sammelstelle annehmen kann, heißt, dass man uns ersetzen kann statt betrauern.
Eine lange Frist, wenn wir abschalten. OpenFeint gab Entwicklern keine dreißig Tage. Genau das ist die Sache, die wir versprechen nicht zu tun.
Wir sagen, wie sicher wir sind. Jeder Punktestand trägt mit, wie er hereinkam: eingereicht, gemessen oder von woanders übernommen. Eine Zahl ohne Herkunft ist ein Gerücht.
Was das nicht löst, klar gesagt
Jeder kann jede Zahl schicken. Trackback hatte eine Prüfung und starb trotzdem an Spam, weil der Angreifer die Prüfung erfüllt hat statt sie zu brechen. Wir tun nicht so, als hätten wir das gelöst.
Was wir stattdessen machen, sind Stufen statt Wahrheit. Ein Lauf unter einer halben Sekunde, oder ein Wert über dem Hundertfachen des Medians seiner Liste, wird gespeichert, markiert und nicht gezeigt. Twin Galaxies ist über vierzig Jahre zur selben Antwort gekommen: getrennte Listen mit getrennten Regeln, weil geprüft und ungeprüft beide nützlich sind und nur gefährlich, wenn man sie mischt.
Eine Spieler-ID ist kostenlos, also kann eine Person tausend davon haben. Jede Gegenmaßnahme kostet Verbreitung, und ohne Verbreitung stirbt ein Protokoll. Wir haben uns für die Verbreitung entschieden und sagen dir, welche Seite wir gewählt haben.
Eine spielübergreifende Identität ist ein Tracking-Merkmal. Das ist kein Bild, so nennt es das Gesetz. Der Name wird vom Spieler gewählt, muss kein echter sein, und auf unserer eigenen Seite wird er nur mit Einwilligung gespeichert.
Stand
Kein Standard. Eine Konvention mit einer Umsetzung.
robots.txt lief achtundzwanzig Jahre, bevor es jemand als RFC 9309 aufgeschrieben hat, und der RFC dokumentierte eine Konvention, die längst gewonnen hatte. Diese Reihenfolge kopieren wir. Verbreitet es sich, kann man es formalisieren. Verbreitet es sich nicht, hat kein Gremium Schaden genommen.
Übernimm es, fork es oder ignorier es. Es sind vier Felder.
Dieser Text erscheint parallel im McGrinsey-Magazin. mcgrinsey.com