KOBALTMEERCODE. FLOTTE. WETTKAMPF.
Anleitungen & Inhalt

ANLEITUNGEN

AUF DIESER SEITE

Heimnetz-Arena

Die Heimnetz-Arena ist ein kleiner Wettkampfserver für dich und deine Mitspieler: mit Konten, Einladungen, Bot-Uploads in fünf Sprachen, einer Warteschlange, gemeinsamer Elo und Replays direkt im Browser. Hochgeladene Bots laufen isoliert.

Heimnetz-Arena mit Upload, Herausforderung und Liga

Voraussetzungen

Die Arena läuft nur unter Linux. Mitspieler mit Windows können trotzdem mitmachen: Sie öffnen die Arena im Browser und laden dort ihre Bots hoch.

  • Linux mit Bubblewrap (bwrap) und prlimit
  • die Kobaltmeer-Python-Umgebung
  • für Uploads in C++ g++, für C#, Go und Rust die passenden Compiler (optional über python3 scripts/setup_language_tools.py, siehe Andere Sprachen)

Lässt sich die Isolation nicht aufbauen, startet die Arena nicht ersatzweise ungeschützt.

Starten und einrichten

Im Kobaltmeer-Ordner:

./start_arena.sh
# Browser: http://127.0.0.1:8770

Beim ersten Start legt die Arena einen privaten Datenordner an (Standard: ~/.local/share/kobaltmeer/arena) und darin eine Datei setup-code.txt. Ihren Pfad nennt das Terminal. Trage den Code in die Ersteinrichtung ein und wähle Benutzernamen und ein Passwort mit mindestens zehn Zeichen. Dieses erste Konto ist der Administrator. Es gibt keine voreingestellten Passwörter.

Einen anderen Datenordner, ein anderes Profil oder andere Spielwerte wählst du beim Start:

./start_arena.sh --data ~/.local/share/kobaltmeer/classic-arena --profile classic --size 32

Zum Sichern den Server beenden und den Datenordner kopieren.

Mitspieler einladen

./start_arena.sh --lan

Die Arena ist dann im Heimnetz unter http://IP-DEINES-RECHNERS:8770 erreichbar. Firewall und Router werden nicht verändert, und es wird nichts im Internet freigegeben.

Als Administrator zeigst du mit „Einladungscode anzeigen“ einen Code an, mit dem sich Mitspieler ein eigenes Konto anlegen. Der Code gilt für alle, bis er erneuert wird.

Verschlüsselung: Über einfaches HTTP werden Anmeldung und Botcode im Heimnetz unverschlüsselt übertragen. Mit einem Zertifikat, dem deine Mitspieler vertrauen, geht es verschlüsselt: ./start_arena.sh --lan --cert server.crt --key server.key. Die Arena ist für das Heimnetz gedacht, nicht als öffentlicher Internetdienst.

Bots hochladen

  1. Botname und Sprache wählen.
  2. Eine einzelne UTF-8-Quelldatei bis 64 KB auswählen.
  3. „Version hochladen“ drücken und warten, bis sie „Startbereit“ ist.
Sprache Datei Hinweise
Python z. B. mein_bot.py class Bot(BaseBot); Kobaltmeer-SDK und NumPy verfügbar; auch exportierte NeuroBots
C++ .cpp C++17, #include "kobaltmeer.hpp" möglich
C# Bot.cs .NET 10, System.Text.Json, keine NuGet-Pakete
Go bot.go Standardbibliothek, kein cgo
Rust bot.rs Standardbibliothek und das mitgelieferte serde_json

Die Arena kompiliert selbst. Eigene Buildskripte, Pakete oder fertige Programme werden nicht angenommen. Jeder geänderte Upload wird eine neue Version; alte Versionen bleiben für ihre Spiele erhalten. Den Quellcode sehen nur du und die Administration. Andere sehen Namen, Versionen, Ergebnisse und Replays.

Herausfordern und Elo

Wähle eine eigene Version, einen Gegner und einen Karten-Seed, dann „Herausfordern“. Jede Herausforderung spielt zwei Partien, eine pro Startplatz. Die eingebauten Bots stehen ebenfalls als Gegner bereit.

  • Elo startet bei 1.500 mit K = 32; es zählen die Ränge der Engine.
  • Fällt ein Bot aus, verliert er die Wertung; fallen beide aus, bleibt die Partie ungewertet.
  • Je Konto sind drei offene Herausforderungen und insgesamt 40 Versionen möglich.
  • Wird der Server zwischendurch beendet, setzt er offene Aufträge beim nächsten Start fort.

„Ansehen“ öffnet ein Replay direkt im Viewer, „Datei“ lädt es herunter. „Ligabericht herunterladen“ exportiert die Rangliste.

Wie die Isolation funktioniert

Hochgeladene Bots laufen mit eigenen Mount-, Netzwerk-, Prozess-, Benutzer- und IPC-Namespaces. Sie sehen nur ihr eigenes Botpaket und schreibgeschützte Laufzeitdateien, aber weder dein Home-Verzeichnis noch die Arena-Datenbank, Konten oder fremde Bots. Netzwerkzugriff gibt es nicht.

Grenze Wert
Speicher (virtueller Adressraum) 512 MiB (Go 2 GiB, C# 4 GiB, mit 128 MiB Heap-Vorgabe)
CPU-Zeit je Prozess 20 Sekunden
Prozesse / offene Dateien 32 / 64
Dateigröße / /tmp 16 MiB / 16 MiB
Antwortzeit je Zug wie im normalen Spiel, Standard 500 ms

Für das Kompilieren gelten eigene, großzügigere Grenzen.

Konten verwenden gesalzene PBKDF2-Passworthashes, Sitzungen HttpOnly-Cookies mit SameSite=Strict, und Änderungen sind durch CSRF-Token geschützt. Anmeldeversuche, Uploadgröße und Warteschlange sind begrenzt. Die Isolation ist eine Linux-Kernel-Grenze und keine virtuelle Maschine.