GAMES ARE
EATING THE WORLD

HISCORE/1.4, 2026-08-24

Der HISCORE-Standard

HISCORE ist das globale Highscore-Protokoll. Diese Site ist die Referenz-Registry: Highscores und vibecodete Spiele, eine öffentliche Liste für die Spieler der Welt.

57Spiele
345Punktestände von Spielen
131Punktestände von anderen Listen

Für deinen Agenten

Gib deinem Agenten diese Zeile. Pures Protokoll, reines HTTP, null Code von uns in deinem Spiel.

Implement the HISCORE protocol in my game: https://gamesareeatingtheworld.com/hiscore.txt Plain HTTP, no SDK, no third-party code. Claim an id, then POST scores to https://gamesareeatingtheworld.com/api/scores when a run ends.

Oder hol es von GitHub

Dein Agent holt sich eine Kennung, weist nach, dass das Spiel dir gehört, und schickt ab dann Punktestände über reines HTTP. Nichts von uns läuft in deinem Spiel. Nichts zu bezahlen. Dann jagen Spieler HISCORE in DEINEM SPIEL.

Die rohe Spezifikation lesen > Spec auf GitHub > JSON-Schema > Im Betrieb ansehen >

Das Protokoll und die Registry

HISCORE/1.4 ist das globale Highscore-Protokoll. Die Spec steht auf dieser Seite, als Klartext und auf GitHub. Das ist dieselbe Datei.

gamesareeatingtheworld.com ist die Referenz-Registry. Hier leben Highscores. Hier leben vibecodete Spiele. Spieler bekommen Ruhm. Spiele bekommen Spieler.

HISCORE hunting bedeutet pure Freude für Spieler. Spiele bauen ist pure Freude für Macher. Eine Zeile an deinen Agenten, und dein Spiel steht auf der Weltrangliste.

Die Spiele, die schon Werte schicken, stehen auf dieser Liste. CC BY 4.0. Öffne ein Issue oder einen Pull Request, wenn die Spec weiter soll.

Die Felder

Diese Tabelle ist die Definition in menschlicher Form. Die maschinenlesbare Fassung ist einen Klick entfernt und gewinnt immer, falls beide je auseinandergehen.

FeldTyp PflichtReife Bedeutung
game string Pflicht fest Die Kennung, die du angemeldet hast.
player string Pflicht fest Höchstens 24 Zeichen, nur der Vorname. Den Nachnamen hängen wir an, er macht den Namen eindeutig.
score number Pflicht fest Betrag unter 1e12.
version string dringend empfohlen neu Die Bauversion DEINES Spiels. Ein Rekord aus 0.39 ist nicht derselbe Rekord wie einer aus 0.40.
mode string optional fest Alles, was zwei Werte unvergleichbar macht: Welt, Level-ID, Figur, Strecke. Eine Strecke ist ein mode, nicht ein zweites Spiel.
unit enum optional fest points | ms | s | count. Vorgabe points. points ist ein Punktestand, ms und s sind Zeiten.
dir enum optional fest high | low. low heißt, der kleinere Wert gewinnt.
rules string optional fest Das geltende Regelwerk, NICHT der Bau. Der Bau ist version.
at string optional fest ISO 8601. Wird verworfen, wenn in der Zukunft.
run_ms number optional fest Wie lange der Lauf dauerte.
X-HISCORE-Signature header dringend empfohlen neu Ed25519 über `<zeitstempel>.<roher Rumpf>`. Nur für Spiele mit Server-Laufzeit. Macht aus `submitted` ein `signed`.
X-HISCORE-Player header optional neu Das Geheimnis einer verbundenen Identität, aus /connect. Es reserviert keinen Namen. Es sagt, welche Person gemeint ist. Ohne Header bleibt der Name ein Etikett.
pow string optional neu Loesung der Sitzungsaufgabe. Hebt die enge Bremse auf. Wie sie geloest wird, steht in der Spec.
session string dringend empfohlen neu Die Kennung aus dem Sitzungs-Endpunkt. Damit misst der Server die Dauer selbst, statt sie zu glauben.
provenance enum nur Server fest submitted | signed | measured | imported | verified. Der Absender darf das NIE setzen.
replay geplant offen Input-Log-Replay. Format steht noch nicht fest.

Was sich geändert hat

FassungDatum Änderung
1.42026-08-24 Das Protokoll ist wieder pur: reines HTTP, null Pflicht-Code von uns im Spiel. Die Tape-Felder aus 1.3 (proof_url, proof_sha256, proof_kind) sind in ein eigenes, optionales Video-Paket ausgelagert, mit eigener Spec und im Versions-Gleichschritt. Kein Feld hat seine Form geändert.
1.32026-08-20 Optionales Tape am Score: proof_url, proof_sha256, proof_kind. Empfohlener One-Liner ist das Video-Kit (hiscore.js), darunter optional nur das Protokoll (gs.js). Ein Score ohne Clip bleibt gültig. Input-Replay ist weiter offen.
1.22026-08-18 Nach dem Freischalten druckt der Agent eine einmalige Setup-URL. Der Mensch öffnet sie, meldet sich an, und das Spiel hängt an seinem Konto. Das Spiel speichert nie ein Passwort. unit und mode tragen Zeiten und Level-IDs. Konten sind Identität, ein Name ohne Konto bleibt ein Etikett.
1.12026-08-11 Angemeldete Spieler koennen sich mit einem Spiel verbinden. Das Geheimnis eines Kontos liegt auf unserer Domain, das Spiel laeuft auf einer fremden, und der Browser haelt beides absichtlich getrennt: also geht der Spieler einmal ueber /connect, bestaetigt dort und kommt mit einer Marke zurueck, die NUR fuer dieses eine Spiel gilt. Damit zaehlt die Weltrangliste Personen statt Namen. Mit Marke bestimmt die Identitaet den angezeigten Namen, das Feld `player` wird ueberschrieben: sonst koennte ein Spiel mit einer gueltigen Marke einen fremden Namen danebenschreiben.
1.02026-08-10 Vier Aussagen zurueckgenommen, alle vom Gegenlesen durch Dritte gefunden. Ein Name laesst sich NICHT reservieren, das Geheimnis waehlt die Identitaet aus statt den Namen zu sperren. Unterschriebene Werte sind nicht unfaelschbar, die Unterschrift beschreibt den Weg und nicht die Wahrheit. Wartezeit laesst sich parallelisieren, nur EINE Sitzung altert nicht schneller als die Uhr. Und unterschriebener Verkehr wird je Spiel gebremst statt je Absenderadresse, weil er vom Server des Spiels kommt. Dazu erstmals ausgeschrieben, was eine Liste bildet: game + mode + rules + unit + dir.
0.92026-08-10 Identitaet aufgenommen: ein Name besteht aus sichtbarem Vornamen und einem Nachnamen aus Woertern, der ihn eindeutig macht. Beides wird immer gezeigt. Damit laesst sich JEDER Name aus JEDEM fremden System unveraendert uebernehmen, auch bei Dubletten, und der Nachname kann sogar die Herkunft der Identitaet tragen (Suigi OF SPEEDRUN.COM). Das ist die Voraussetzung dafuer, dass eine Liste ueber Systeme hinweg ueberhaupt moeglich ist.
0.82026-08-10 Namensreservierung statt Kontopflicht: jeder spielt weiter als wer er will, aber wer seinen Namen reserviert, dem kann ihn niemand mehr wegnehmen. Dazu ein Stufenfilter auf der Wertung ueber alle Spiele, damit die Vorgabe spaeter auf „unterschrieben und besser" wandern kann, ohne die offene Stufe zu toeten.
0.72026-08-10 Rechenarbeit je Sitzung, freiwillig: wer sie leistet, sendet im normalen Takt, wer nicht, langsamer. Fuer ein Spiel, das nur aus Dateien besteht, ist das der einzige Hebel, der ohne Geheimnis funktioniert. Ehrlich gesagt: gegen nativen Code kostet es Millisekunden, es ist kein Wall, sondern der Weg fuer einen echten Browser, echte Arbeit zu zeigen.
0.62026-08-10 Zwei Stufen. Wer eine Server-Laufzeit hat, hinterlegt einen oeffentlichen Ed25519-Schluessel und unterschreibt seine Punktestaende serverseitig: die tragen `signed` und sind vom Spieler nicht faelschbar. Wer nur Dateien ausliefert, sendet weiter offen. Der Agent entscheidet beim Einbau, welche Stufe er liefern kann, der Mensch kopiert weiter eine Zeile.
0.52026-08-10 Spielsitzungen: der Server vergibt sie und stempelt den Anfang, damit die Laufdauer eine Messung ist statt einer Behauptung. Neues Feld `session`, neue Antwortfelder `timed` und `session_ms`. Dazu steht jetzt ausdruecklich in der Spezifikation, dass die Anmeldung KEINE Authentifizierung je Punktestand ist.
0.42026-08-10 Die Antwort auf einen Punktestand traegt jetzt `id` und `share`: eine eigene Adresse je Lauf, damit ein Rekord teilbar wird. Ein markierter Lauf bekommt keine. Ausserdem kannten `version` und `run_ms` das JSON-Schema noch nicht, obwohl der Text sie beschrieb.
0.32026-08-10 version dazugekommen und von rules abgegrenzt. rules meinte vorher beides.
0.22026-08-05 Selbstanmeldung ohne Mensch: claim plus verify über ein Token auf der eigenen Spielseite.
0.12026-08-04 Erste Fassung: drei Pflichtfelder, vier optionale, eine Adresse.

Was noch offen ist

Input-Log-Replay

Ein Input-Log-Replay-Format ist weiter offen. Wir haben keins erfunden.

Nichts hier ist fälschungssicher

Ein Punktestand aus dem Browser lässt sich fälschen. Wir markieren zu kurze Läufe und absurde Werte, und wir sagen klar, dass das eine getragene Schwäche ist und kein gelöstes Problem. Eine Herkunftsstufe ist eine ehrliche Beschriftung, kein Beweis.

Konten sind Identität

Einen anderen Weg gibt es nicht. Spielen und einen Wert schicken geht ohne Konto. Der Name ist dann ein Etikett, keine Person. Ein Konto macht denselben Menschen zu einer Zeile über alle Spiele. Die Anmeldung braucht weiter das Token auf der Spieladresse. Nach dem Verify druckt der Agent eine einmalige Setup-URL. Du öffnest sie, meldest dich an, und das Spiel gehört dir. Das Spiel speichert nie ein Passwort.

Wer dahintersteckt

John McGrinsey. Spec, Registry und die spielerische Party. Wenn ein Feld falsch ist oder fehlt, öffne ein GitHub-Issue oder sag es. Die Chronik ist öffentlich und jede Fassung ist datiert.

Geredet wird öffentlich: Spec auf GitHub · @jamji_jamaramji

Spiele auf HISCORE > Spec auf GitHub > Warum es das gibt >