Einstieg
Kobaltmeer läuft lokal auf deinem Rechner. Du brauchst Python 3.12 oder neuer. Für die Zuschaueroberfläche ist eine grafische Sitzung nötig; Partien ohne Grafik laufen auch auf einem Server.
Herunterladen
Das Paket (4,5 MB) enthält das Spiel, den Beispielbot, die Starterbots für C++, C#, Go,
Rust und JavaScript, den Replay-Viewer und die Heimnetz-Arena. Entpacke es an einen Ort deiner Wahl;
es entsteht der Ordner Kobaltmeer. Kobaltmeer ist frei unter der MIT-Lizenz: Du darfst es
verändern und weitergeben.
Alle Befehle auf dieser Seite werden im Kobaltmeer-Ordner ausgeführt, also dort,
wo start.sh liegt. Relative Pfade wie bots/mein_bot.py beziehen sich auf diesen Ordner.
Installation
Linux
Öffne ein Terminal in dem Ordner, in dem die heruntergeladene Datei liegt (meist Downloads),
entpacke sie und wechsle in den neuen Ordner:
cd ~/Downloads
unzip kobaltmeer.zip
cd Kobaltmeer
Der Starter legt beim ersten Aufruf eine eigene Python-Umgebung .venv an,
lädt die benötigten Pakete (NumPy und pygame, rund 30 MB) und öffnet dann das Spielfenster.
Das dauert beim ersten Mal ein bis zwei Minuten, danach startet es sofort:
./start.sh
Lieber von Hand:
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python main.py
Windows
Klicke die heruntergeladene Datei mit der rechten Maustaste an und wähle „Alle extrahieren…“.
Öffne den entstandenen Ordner Kobaltmeer, klicke mit der rechten Maustaste auf eine freie
Stelle und wähle „Im Terminal öffnen“. (Windows legt beim Entpacken oft einen Ordner kobaltmeer
an, in dem erst der Ordner Kobaltmeer liegt.) In diesem PowerShell-Fenster:
.\start.cmd
Wie unter Linux legt der Starter beim ersten Aufruf eine eigene Umgebung .venv-win an,
lädt die Pakete und öffnet das Spielfenster. Lieber von Hand:
py -m venv .venv-win
.\.venv-win\Scripts\python.exe -m pip install -r requirements.txt
.\.venv-win\Scripts\python.exe main.py
In allen weiteren Beispielen ersetzt du ./start.sh durch .\start.cmd.
Manche Beispiele gehen mit \ am Zeilenende über mehrere Zeilen; das versteht nur Linux.
Schreibe sie in PowerShell in eine Zeile (ohne die \) oder ersetze \ durch
einen Gravis `.
Die erste Partie
Vier eingebaute Bots spielen gegeneinander, und du siehst zu:
./start.sh gui
Mit deinem eigenen Bot gegen einen eingebauten Gegner:
./start.sh gui --bots bots/mein_bot.py collector --seed 42 --turns 240
bots/mein_bot.py ist ein vollständiger, bearbeitbarer Beispielbot. Er sammelt,
fährt mit voller Fracht heim, liefert ab und baut eine kleine Flotte. Wie du ihn
änderst, erklärt die Bot-Anleitung.
Ohne Grafik, mit gespeichertem Replay und Ergebnisbericht:
./start.sh play --bots bots/mein_bot.py collector --seed 42 --turns 240 \
--replay replays/erste-partie.json.gz --output runs/erste-partie.json
Das Replay öffnest du anschließend im Fenster oder im Replay-Viewer:
./start.sh gui --replay replays/erste-partie.json.gz
Die eingebauten Gegner
Vier regelbasierte, offen lesbare Strategien stehen als Gegner bereit. Ihre Parameter sind von Hand gesetzt, nicht trainiert, und sie sind unterschiedlich stark.
| Name | Strategie |
|---|---|
collector |
Sammler: sammelt größere Mengen und bringt sie zurück |
courier |
Kurier: fährt häufiger mit weniger Fracht heim |
pioneer |
Pionier: sucht weiter entfernt, baut eine größere Flotte und Relais |
raider |
Freibeuter: verfolgt zusätzlich beladene Gegner, wenn er selbst wenig Fracht hat |
Die Oberfläche
Das Fenster zeigt die Karte mit allen Flotten, Häfen und Relais, eine Rangliste mit Lager, Fracht, Schiffen und Verlusten, die Lagerkurven und einen Inspektor. Klicke ein Schiff oder ein Feld an, um Fracht, Vorkommen und den letzten Befehl zu sehen. Über Regeln / Profil oben links wählst du Regelprofil, Kartengröße und einzelne Regeln; mehr dazu unter Regeln.
| Taste | Funktion |
|---|---|
Leertaste / P |
Pause / weiter |
→ / Punkt |
Eine Runde vor; am Live-Ende wird die nächste Runde berechnet |
← |
Eine aufgezeichnete Runde zurück |
| Pos1 / Ende | Anfang / Ende der bisherigen Aufzeichnung |
1/s, 4/s, 12/s, 48/s |
Wiedergabetempo in Runden pro Sekunde |
R |
Gleiche Karte, gleiche Aufstellung, Botcode neu laden |
N |
Neue Karte (Seed + 1) |
E |
Replay speichern |
L |
Zuletzt gespeichertes Replay öffnen |
V |
Ressourcenwerte in den Feldern anzeigen |
G |
Raster an / aus |
| Klick auf die Zeitleiste | Zu einer aufgezeichneten Runde springen |
| Esc / Fenster schließen | Live-Partie als Replay speichern und beenden |
Springst du in einer laufenden Partie zurück, siehst du dir ihre Geschichte nur an;
sie wird nicht umgeschrieben. Ein geladenes Replay führt keinen Botcode aus.
R startet daraus ausdrücklich eine neue Partie.
Wenn dein Bot einen Fehler hat
Eigene Bots laufen in einem eigenen Prozess. Sie haben 500 ms pro Zug und bis zu
fünf Sekunden für den Start; mit --timeout-ms stellst du ein anderes Limit ein.
Bei einer Ausnahme, ungültigen Befehlen oder Zeitüberschreitung wird der Bot für den
Rest der Partie abgeschaltet: Seine Schiffe warten, die anderen Bots spielen weiter.
print() im Bot landet im Debugprotokoll und stört die Kommunikation nicht.
Berichte und Replays enthalten Fehlermeldungen (faults), die letzten Ausgaben
(stderr_tail) und die gemessenen Entscheidungszeiten.