please login first!

login

Programmierspiel · Python

Kobaltmeer

Eine Programmierarena für eigene Bots: Du schreibst ein Programm, das eine Flotte steuert. Die Schiffe sammeln Lumen auf einer umlaufenden Karte, bringen die Fracht heim und bauen neue Schiffe. Am Ende gewinnt das größte Lager. Dein Bot tritt gegen eingebaute Gegner oder gegen deine anderen Bots an. Replays zeigen dir danach Runde für Runde, was er sich gedacht hat. Programmieren kannst du in Python, C++, C#, Go, Rust oder JavaScript.

Spielfenster: vier Flotten auf der Karte, daneben Lagerstände, Lagerentwicklung und Inspektor
Zur Spielseite

Anleitungen, Regeln und Bot-API auf kobaltmeer.codemich.de. Das Spiel läuft auf deinem Rechner, unter Linux und Windows, mit Python 3.12 oder neuer.

Herunterladen (ZIP) Replay-Viewer

So funktioniert's

  • Bot schreiben: In jeder Runde sieht dein Bot die ganze Karte und gibt jedem Schiff einen Befehl: abbauen, fahren oder zum Relais werden. Jede Bewegung kostet Fracht, und zwei Schiffe auf einem Feld gehen beide unter.
  • Antreten: Vier eingebaute Gegner mit eigenen Strategien warten schon. Im Spielfenster schaust du live zu, ohne Fenster laufen hunderte Partien in Sekunden.
  • Verstehen: Jede Partie wird als Replay gespeichert. Im Viewer verfolgst du einzelne Schiffe, siehst Heatmaps und die Gründe, die dein Bot mitgeschrieben hat.
  • Messen: Zwei Versionen auf denselben Karten vergleichen, Turniere mit Elo-Liga spielen, oder einen Bot per Neuroevolution trainieren lassen.

Unter der Haube

  • Eigene Engine in Python und NumPy, gleicher Seed ergibt immer dieselbe Partie
  • Zwei Regelprofile und zehn einzeln schaltbare Regeln, Karten von 16 × 16 bis 64 × 64
  • Bots in eigenen Prozessen mit Zeitlimit, andere Sprachen über ein einfaches JSON-Protokoll
  • Heimnetz-Arena mit Konten, Uploads, Warteschlange und Elo; fremde Bots laufen isoliert
  • Replay-Viewer im Browser, Dateien bleiben auf deinem Rechner

Frei unter der MIT-Lizenz.

Der kleinste Bot

from kobaltmeer.sdk import BaseBot, Orders

class Bot(BaseBot):
    def decide(self, obs, me):
        orders = Orders()
        for ship in obs.fleet(me):
            orders.ships[ship.id] = "O"
        return orders

„O“ heißt: stehen bleiben und abbauen. Der mitgelieferte Beispielbot sammelt, fährt heim und baut eine Flotte. Von dort aus änderst du eine Entscheidung nach der anderen und vergleichst das Ergebnis. Wie Beobachtung und Befehle genau aussehen, steht in der Bot-Anleitung.

Spielfenster mit vier Flotten
Spielfenster · vier Flotten
Profil Classic auf einer 64 × 64-Karte
Profil Classic · 64 × 64
Replay-Viewer mit Botplan im Inspektor
Replay-Viewer · Ziele & Gründe
Startseite von kobaltmeer.codemich.de
kobaltmeer.codemich.de