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.
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.
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.
| Feld | Typ | Pflicht | Reife | 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
| Fassung | Datum | Änderung |
|---|---|---|
1.4 | 2026-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.3 | 2026-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.2 | 2026-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.1 | 2026-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.0 | 2026-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.9 | 2026-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.8 | 2026-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.7 | 2026-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.6 | 2026-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.5 | 2026-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.4 | 2026-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.3 | 2026-08-10 | version dazugekommen und von rules abgegrenzt. rules meinte vorher beides. |
0.2 | 2026-08-05 | Selbstanmeldung ohne Mensch: claim plus verify über ein Token auf der eigenen Spielseite. |
0.1 | 2026-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