Praxistest · Stand: 30. August 2026
Die Levelfabrik: Wie OpenRouter jede Nacht das Spiel meines Sohnes weiterschreibt
Für meinen Sohn habe ich ein Lernspiel gebaut: „Luca und die Chronik der Siegel", ein Jump-and-Run mit Rätseln über zwanzig erzählte Welten. Das Problem aller selbst gebauten Spiele: Kinder spielen schneller, als Väter Level bauen. Die Lösung steht inzwischen auf der Startseite des Spiels — neben den 20 erzählten Welten zählt sie aktuell 66 KI-Welten. Und es werden jede Nacht mehr, ohne dass ich etwas dafür tue.
Der Aufbau: drei Gratis-Bausteine
1. Ein Zeitplan-Dienst — bei mir cron-job.org — ruft jede Nacht eine Adresse meines Spiels auf. Das ist die ganze „Automatisierung": ein Wecker für eine Webadresse, kostenlos.
2. Das Spiel selbst nimmt den Weckruf entgegen und beauftragt ein Sprachmodell: Schreib die nächste Welt — Thema, Geschichte, Rätsel, im festen Format, das mein Spiel versteht. Das Ergebnis landet im Level-Vorrat, aus dem sich der Endlos-Modus bedient.
3. Die Modelle kommen von OpenRouter — einem Dienst, der viele KI-Anbieter hinter einer einzigen Schnittstelle bündelt. Der Clou ist die Sammlung komplett kostenloser Modelle: Für eine Welt pro Nacht reicht das dicke. Laufende Modellkosten dieser Levelfabrik: null Euro.
Der Kniff für mehr: Rotation
Gratis-Modelle haben Tageslimits, und manche sind zeitweise überlastet. Die Antwort darauf ist bei OpenRouter eingebaut: Weil alle Modelle über dieselbe Schnittstelle laufen, unterscheidet sich „nimm ein anderes Modell" nur um eine Namenszeile. Statt an einem Modell zu hängen, arbeitet man eine Liste ab — klemmt das erste, übernimmt das zweite. In einem anderen Projekt von mir rotiert so ein halbes Dutzend Anbieter; seitdem ist „die KI antwortet gerade nicht" praktisch ausgestorben. Wer mehr als eine Welt pro Nacht will, holt über diese Rotation auch aus den Gratis-Limits deutlich mehr heraus.
Für Bastler: die Rotation in Code
Das Muster ist in jeder Sprache dasselbe — hier in PHP, weil mein Spiel darin läuft. Zuerst der Nacht-Eingang: eine Adresse, die nur der Zeitplan-Dienst kennt, abgesichert über ein Geheimnis in der Umgebung:
// cron.php — wird nachts von cron-job.org aufgerufen
if (($_GET['schluessel'] ?? '') !== getenv('CRON_SECRET')) {
http_response_code(403);
exit('Kein Zutritt');
}
Dann die eigentliche Rotation: eine Liste kostenloser Modelle, und der erste brauchbare Treffer gewinnt. Klemmt ein Modell oder liefert es Ausschuss, ist einfach das nächste dran:
$modelle = [
'anbieter-eins/modell:free',
'anbieter-zwei/modell:free',
// aktuelle Namen: openrouter.ai/collections/free-models
];
function welt_schreiben(array $modelle, string $auftrag): ?string {
foreach ($modelle as $modell) {
$antwort = ki_anfrage($modell, $auftrag);
if ($antwort !== null && format_ok($antwort)) {
return $antwort; // erster Treffer gewinnt
}
// Limit erreicht oder Unsinn geliefert? Nächstes Modell.
}
return null; // heute keine neue Welt — morgen ist auch eine Nacht
}
Und der Anruf beim Modell selbst ist ein einziger HTTP-POST — OpenRouter spricht die gleiche Schnittstelle wie die großen Anbieter, nur mit tauschbarem Modellnamen:
function ki_anfrage(string $modell, string $auftrag): ?string {
$ch = curl_init('https://openrouter.ai/api/v1/chat/completions');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_TIMEOUT => 90,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OPENROUTER_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'model' => $modell,
'messages' => [['role' => 'user', 'content' => $auftrag]],
]),
]);
$roh = curl_exec($ch);
curl_close($ch);
$daten = json_decode((string) $roh, true);
return $daten['choices'][0]['message']['content'] ?? null;
}
Wichtigster Baustein ist ausgerechnet der unscheinbarste:
format_ok(). Meine Welten müssen ein striktes Format
einhalten, damit das Spiel sie laden kann — alles, was die Prüfung
nicht besteht, wird verworfen, bevor es ein Kind je zu sehen
bekommt. Nebenbei erledigt derselbe Nachtlauf noch etwas: Er lässt
die neuen Texte gleich von
KI-Stimmen vorsprechen und legt die Audiodateien in den
Cache — aber das ist einen eigenen Praxistest wert.
Was man ehrlich dazu sagen muss
Sprachmodelle halten sich nicht immer an Formatvorgaben — je strikter das erwartete Format, desto wichtiger ist es, Antworten zu prüfen, statt sie ungesehen ins Spiel zu lassen. Die Qualität der Gratis-Modelle schwankt zudem stärker als bei den Bezahl-Varianten: Für generierte Spielwelten ist das verschmerzbar, für einen Kundendienst-Chat wäre es das nicht. Und wie bei jedem Gratis-Angebot gilt: Limits und Modellauswahl können sich jederzeit ändern.
Fazit
Ein kostenloser Zeitplan-Dienst, ein paar Zeilen Anbindung und die Gratis-Modelle von OpenRouter — mehr braucht es nicht, damit ein Hobby-Projekt nachts von allein wächst. Mein Sohn misst den Erfolg übrigens in seiner eigenen Währung: Der Endlos-Modus geht nie aus. Für Bastler mit eigener Website ist dieses Muster — Wecker, Auftrag, Gratis-Modell — auf erstaunlich viele Ideen übertragbar.