HANDBUCH

Seegefecht 1.0 — versenke die Flotte, bevor sie deine versenkt.

Inhalt

  1. 1Beschreibung
  2. 2Schnellstart
  3. 3Regeln
  4. 4Flotte aufstellen
  5. 5Das Spielfeld
  6. 6Der Gegner
  7. 7Zwei Spieler, ein Telefon
  8. 8Zwei Geräte
  9. 9Bestenliste
  10. 10Einstellungen
  11. 11Navigation und Speichern
  12. 12Ohne hinzusehen
  13. 13Datenschutz
  14. 14Kontakt
  15. 15Versionen

1Beschreibung

Seegefecht ist der Klassiker mit Papier und Bleistift für Android. Jede Seite versteckt fünf Schiffe auf einem Raster von zehn mal zehn Feldern und ruft Schüsse mit ihrer Koordinate auf, bis eine Flotte verloren ist.

Der Gegner jagt. Er schießt blind, bis etwas trifft, und arbeitet sich dann von diesem Treffer aus vor, bis das Schiff untergeht. Er liest dein Spielfeld nie — nur die Antworten auf seine eigenen Schüsse. Die höheren Stufen suchen also besser, statt zu schummeln.

Drei Arten zu spielen: gegen den Computer, gegen jemanden neben dir, wobei das eine Telefon hin und her wandert, oder gegen ein anderes Gerät über WLAN, Bluetooth oder ein Relay, das du selbst betreibst. Die Regeln sind reines Kotlin ohne Android-Abhängigkeiten und durch Unit-Tests abgedeckt, darunter dreihundert vollständige Partien gegen sich selbst.

2Schnellstart

  1. App öffnen. Der Reiter Spiel zeigt ein leeres Feld und die fünf Schiffe.
  2. Oben auf Zufällig tippen, oder alle fünf von Hand setzen.
  3. Auf Start tippen.
  4. Auf ein Feld in den feindlichen Gewässern tippen, um zu feuern. Der Computer antwortet nach kurzem Nachdenken.
  5. Passt die Stufe nicht, unter Einstellungen › Schwierigkeit ändern — sie gilt ab der nächsten Partie.

3Regeln

Jede Seite hat ein Feld aus zehn mal zehn Kästchen, mit den Spalten A bis J und den Zeilen 1 bis 10. Ein Schuss heißt also etwa C7. Jede Seite hat dieselben fünf Schiffe:

SchiffLänge
Flugzeugträger5 Felder
Schlachtschiff4 Felder
Kreuzer3 Felder
U-Boot3 Felder
Zerstörer2 Felder

Das sind siebzehn Schiffsfelder auf jedem Feld. Schiffe liegen waagerecht oder senkrecht, nie diagonal, und überlappen nie. Beide Seiten feuern abwechselnd einen Schuss auf das Feld der anderen und erfahren, ob er danebenging, traf oder das getroffene Schiff versenkte. Wer zuerst alle fünf gegnerischen Schiffe versenkt, gewinnt.

4Flotte aufstellen

Die Schiffe werden einzeln gesetzt, das größte zuerst. Ein Tippen verankert das hervorgehobene Schiff auf diesem Feld; von dort läuft es nach rechts oder nach unten. Ein Tippen ergibt damit immer genau eine Lage, ohne Mehrdeutigkeit.

Die Leiste unter dem Feld zeigt alle fünf: das nächste umrahmt, die schon gesetzten abgehakt.

BedienelementWirkung
Waagerecht / SenkrechtDreht das Schiff, das als Nächstes gesetzt wird. Bereits gesetzte bleiben, wie sie liegen.
ZurückNimmt das zuletzt gesetzte Schiff wieder weg.
ZufälligOben in der Leiste. Setzt alle fünf auf einmal und ersetzt, was da war.
StartVerfügbar, sobald alle fünf stehen. Heißt Fertig im Spiel zu zweit, weil das Telefon dann weitergereicht wird.

Eine Lage, die über den Rand ragen oder auf einem schon gesetzten Schiff landen würde, wird abgelehnt — die Zeile über den Schaltflächen sagt, welches von beidem es war.

5Das Spielfeld

Zwei Schaltflächen über dem Raster wechseln zwischen Feindliche Gewässer und Deine Flotte und zeigen jeweils den Schaden dieses Feldes von siebzehn. Auf einem Tablet, oder einem quer gehaltenen Telefon mit genug Platz, stehen beide Felder nebeneinander und der Umschalter verschwindet.

Farben

FarbeBedeutung
Wasser Noch nicht beschossen.
Daneben Ein Schuss, der nichts gefunden hat.
Treffer Ein Schuss auf ein Schiff, das noch schwimmt.
Versenkt Ein Schiff auf dem Grund, mitsamt Rumpf.
Schiff Eines von deinen, gezeichnet auf deinem eigenen Feld.

Deine eigenen Schiffe werden als Rümpfe gezeichnet statt als Reihen von Blöcken, mit roten Blasen auf den getroffenen Abschnitten. Gegnerische Schiffe bleiben verborgen, bis sie sinken; erst dann wird das Wrack sichtbar. Ein sinkendes Schiff legt sich auf die Seite, rutscht unter Wasser und nimmt die Farbe eines Wracks an, während sich an der Oberfläche Ringe darüber schließen.

Das Log

Unter dem Feld hält eine Karte die letzten sechs Zeilen, die älteste oben und die neueste fett unten. Jeder Schuss wird mit seiner Koordinate gemeldet, sodass sich eine Partie auch lesend statt zusehend verfolgen lässt.

6Der Gegner

Drei Stufen. Sie unterscheiden sich darin, wie der Computer nach einem noch nicht gefundenen Schiff sucht; hat er erst einen Treffer, arbeiten sich Normal und Schwer beide von dort vor.

StufeWie er suchtNach einem Treffer
Leichtzufälligverfolgt ihn nie weiter — er feuert und vergisst
Normalzufälligprobiert die vier Nachbarfelder und verlängert dann die Linie, sobald die Richtung feststeht
Schwerein diagonales Rasterwie bei Normal

Das Raster ist eine Erklärung wert. Der Computer sucht nur auf Feldern, deren Zeile und Spalte zusammen eine gerade Zahl ergeben — ein Schachbrettmuster. Da das kleinste Schiff zwei Felder lang ist, passt keines vollständig in die Lücken. Damit lässt sich das halbe Feld überspringen, ohne je ein Ziel zu verfehlen.

Die Schwierigkeit wird in dem Moment gelesen, in dem eine Partie beginnt. Eine Änderung kann eine laufende Partie nicht nachträglich umschreiben.

7Zwei Spieler, ein Telefon

Oben im Aufbau-Bildschirm 2 Spieler wählen. Spieler 1 stellt eine Flotte auf und tippt auf Fertig; ein Übergabe-Bildschirm verdeckt dann alles, bis Spieler 2 bestätigt, dass er das Telefon in der Hand hält. Spieler 2 stellt seine Flotte auf, das Telefon geht zurück, und es geht los.

Zwischen den Schüssen erscheint derselbe Übergabe-Bildschirm. Er zeigt bewusst nichts außer dem Namen des Nächsten und einer Schaltfläche — alles andere wäre etwas, das der falsche Spieler dem anderen über die Schulter lesen könnte. Der eben abgegebene Schuss bleibt vorher noch einen Moment sichtbar, damit der Schütze sieht, wo er eingeschlagen ist.

Partien zu zweit werden nicht gewertet. Die Bestenliste ordnet ein, mit wie wenigen Schüssen ein Sieg gegen den Computer gelang; menschliche Gegner dazwischen würden sie bedeutungslos machen.

8Zwei Geräte

Zwei Geräte wählen. Sobald die beiden verbunden sind, stellt jede Seite eine Flotte auf, und das Gerät, das eröffnet hat, feuert zuerst. Es gibt drei Wege hinüber, wählbar in der zweiten Schaltflächenreihe.

Gleiches WLAN

Ein Gerät tippt auf Spiel eröffnen und kündigt sich im Netz an; das andere tippt auf Suchen und tritt dem bei, was es findet. Blockiert das Netz solche Ankündigungen, zeigt der Gastgeber seine Adresse an und der Gast trägt sie unter Adresse und Port ein.

Ein VPN verhindert das. Es leitet sogar den lokalen Verkehr aus dem Netz heraus, sodass sich die beiden Geräte nie sehen. Schalte es aus, lass es das lokale Netz umgehen, oder nimm stattdessen „In der Nähe".

In der Nähe

Bluetooth und WLAN Direct über Googles Nearby Connections. Ganz ohne gemeinsames Netz — der Ausweg, wenn ein Gastnetz oder ein VPN die beiden trennt. Android fragt beim ersten Mal nach der Erlaubnis, nach Geräten in der Nähe zu suchen.

Online

Zwei Heimrouter nehmen keine eingehenden Verbindungen an, also kann keines der Geräte für das andere eröffnen. Stattdessen wählen sich beide bei einem Relay ein, das sie über einen kurzen Code zusammenbringt und danach Bytes zwischen ihnen durchreicht. Eine Seite tippt auf Spiel erstellen und liest den Code vor, den sie bekommt; die andere tippt ihn ein und tritt bei.

Das Relay ist eine einzelne Python-Datei, veröffentlicht unter djvlk.de/seaduel/relay/, die du selbst auf einer Maschine betreibst, die beide Seiten erreichen. Sie lauscht standardmäßig auf Port 8642 und versteht nichts vom Spiel: sind zwei Spieler erst gepaart, leitet sie nur noch Zeilen weiter. Steht das Relay auf einer öffentlichen Adresse, kann es einen gemeinsamen Schlüssel verlangen, den beide Spieler unter Zugangsschlüssel eintragen, und es lässt sich mit Verschlüsselte Verbindung über TLS ansprechen.

Was über die Leitung geht

Kein Gerät kennt beide Flotten. Jedes besitzt sein eigenes Feld und erfährt vom anderen nur durch die Antworten auf seine Schüsse. Genau das macht Schummeln unmöglich, solange nicht beide Seiten mitmachen. Schiffe werden auf der Leitung mit einem festen englischen Namen benannt, damit sich zwei Geräte verstehen, gleich in welcher Sprache jedes davon läuft.

Eine Netzwerkpartie lässt sich nicht fortsetzen. Endet sie vorzeitig — der andere Spieler geht, oder die Verbindung bricht ab — sagt das Log es, und die Partie endet dort.

9Bestenliste

Der Reiter Bestenliste hält deine Bilanz: gespielte, gewonnene und verlorene Partien sowie die Siegquote in ganzen Prozent. Darunter bis zu zehn beste Siege, geordnet nach der Zahl der Schüsse, mit Datum. Bei Gleichstand gewinnt die ältere Partie, weil sie zuerst da war.

Gewertet werden nur Siege — eine Niederlage zählt für die Bilanz, hat aber keine Schusszahl, die sich einordnen ließe. Die Zähler werden vollständig geführt, während nur diese zehn Ergebnisse gespeichert sind. So kann die Liste nicht unbegrenzt wachsen, und „die fünfzigste Partie" stimmt trotzdem. Löschen oben in der Leiste entfernt beides, nach einer Rückfrage.

10Einstellungen

EinstellungMöglichkeiten
SchwierigkeitLeicht, Normal, Schwer. Gilt ab der nächsten Partie.
SpracheSystem, Deutsch, Englisch. System folgt dem Telefon.
DarstellungWie das System, Hell, Dunkel.
GeräuscheEinschläge, Treffer und die Fanfare am Ende.
VibrationEin kurzer Stoß bei einem Treffer, ein kräftigerer beim Untergang.

Ein Sprachwechsel baut den Bildschirm neu auf, was einen Augenblick dauert. Er ist unabhängig von der Sprache des Telefons — die App kann also deutsch auf einem englischen Telefon sein und umgekehrt.

Drei Ziele — Spiel, Bestenliste, Einstellungen — auf zwei Wegen erreichbar: über die Leiste am unteren Rand und über die Schublade hinter der Schaltfläche mit den drei Strichen oben links. Zurück aus einem anderen Reiter führt zum Spiel statt aus der App; Zurück bei offener Schublade schließt die Schublade.

Eine laufende Partie wird bei jedem Zug festgehalten, eine halb gesetzte Flotte ebenso — die App mitten im Gefecht zu schließen verliert also nichts. Der Computer weiß sogar noch, welches Schiff er gerade verfolgt hat. Eine beendete Partie wird nicht aufgehoben: ihr Speicherstand wird gelöscht, statt in ein totes Feld zurückzuführen. Der Aufbau zu zweit wird ebenfalls nicht gespeichert — das Telefon wandert ohnehin herum, und eine halb gesetzte Flotte, die einem von zwei Leuten gehört, ist die Mehrdeutigkeit nicht wert.

12Ohne hinzusehen

Das Feld ist mit einem Screenreader spielbar. Jedes Feld sagt an, wo es liegt und was darauf ist — „C7, daneben", „E4, dein Kreuzer, getroffen" — und ein Tippen wird als Feuern oder als Setzen eines Schiffs angekündigt, je nachdem, um welches Feld es geht.

Schiffsnamen werden nur für Felder gesprochen, die ihr Besitzer sehen darf. Auf dem gegnerischen Feld erscheint ein Name erst, wenn das Schiff versenkt und aufgedeckt ist.

Die neueste Zeile des Logs wird vorgelesen, sobald sie eintrifft, sodass das Ergebnis eines Schusses zu hören ist, ohne danach suchen zu müssen. Die Buchstaben und Zahlen am Rand, die über das Raster gezeichneten Rümpfe und die Zeichen in den Kästchen sind vor Screenreadern verborgen: sie wiederholen, was die Felder ohnehin sagen, und hundert davon wären unbenutzbar.

13Datenschutz

Es wird nichts über dich erhoben. Bestenliste und Einstellungen liegen in einer privaten Einstellungsdatei auf dem Gerät und werden mit der App gelöscht. Es gibt keine Konten, keine Werbung, keine Analyse und keine Fremd-SDKs.

Netzwerkrechte hat Seegefecht, weil zwei Geräte gegeneinander spielen können:

RechtWofür
INTERNETDie Verbindung zum anderen Gerät oder zu deinem Relay.
WLAN-StatusSpiele im selben Netz ankündigen und finden.
BluetoothNearby Connections, wenn es kein gemeinsames Netz gibt.
Geräte in der NäheDasselbe, ab Android 13.
StandortNur vor Android 13, wo das System die Suche nach Geräten in der Nähe als Standortfunktion zählt. Das Spiel fragt nie, wo jemand ist.
VibrationDer Stoß bei einem Treffer.

Nichts verlässt das Gerät, solange du keine Partie gegen ein anderes startest, und über die Leitung gehen Schüsse und deren Antworten sowie der Gerätename, mit dem sich jede Seite vorstellt. Es gibt nirgends einen Server von uns: eine Partie im selben WLAN geht direkt zum anderen Telefon, und eine Online-Partie zu einem Relay, dessen Adresse du selbst einträgst.

Der vollständige Text steht in der Datenschutzerklärung; daneben liegen die Nutzungsbedingungen.

14Kontakt

Fragen, Fehler und Wünsche gern per E-Mail an agrauf67@gmail.com.

Häufige Fragen beantwortet die Hilfeseite.

15Versionen

1.0