# Netzwerk-Konzept

Auf dieser Seite sammeln wir Ideen zu der Netzwerkunterstützung von FreeDoko. Schwerpunkt ist dabei eine Spielplattform im Internet.

Kommentare und Vorschläge bitte in die Diskussion auf Sourceforge einbringen. Fragen sind hervorgehoben.

## Struktur dieser Seite

- Als erstes wird klargestellt, worum es überhaupt geht.
- Die erste Überlegung ist, was die Erwartungen an dem Netzwerkspiel sind.
- Danach machen wir uns Gedanken, wie die Bedienung aussehen soll.
- Als drittes geht es darum, wie das Gewünschte umgesetzt werden kann.

## Definition

Zuerst stellen wir klar, was wir unter der Netzwerkunterstützung verstehen:

- Anstatt gegen den Computer zu spielen können Computergegner durch Mitspieler ersetzt werden, die über das Netzwerk mit dem Spieler verbunden sind.
- Die Spielplattform bietet einen Treffpunkt, bei dem man Mitspieler finden kann.

## Konkurrenz

Wie machen das andere?

- Doppelkopf Professionell
- NetDoppelkopf

## Spielertypen

Hier listen wir auf, was für Spielertypen es gibt und welche Wünsche diese haben.

### Gelegenheitsspieler

Ein Spieler, der mal Lust auf Doppelkopf hat und z.B. in der Arbeitspause ein paar Spiele spielen möchte.

- Sucht Mitspieler für ein paar Spiele.
- Möchte keine Verpflichtung zu längeren Spielen eingehen.
- Kann plötzlich aufhören (z.B. wenn der Chef kommt)

### Vielspieler

Ein Spieler, der viel spielt, z.B. immer samstag abends.

- Sucht Mitspieler für ein paar Stunden / ein Turnier Doppelkopf
- Möchte einen Vergleich mit anderen Spielern (Rangliste)

### Neuling

Ein (noch-nicht-)Spieler, der seine ersten Schritte mit Doppelkopf macht.

- Möchte das Spiel kennenlernen.
- Möchte in die Spiele hineinschauen.
- Sucht jemanden, der ihm das Spiel erklärt, ihn an die Hand nimmt.

### Stammtisch

Eine Gruppe von Spielern, die zusammen (regelmäßig) spielen.

- Möchten zusammen in Ruhe Doppelkopf spielen

Wird das überhaupt benötigt? Die Spieler können sich schließlich direkt verbinden.

### Teams

Teams/Clans, die gemeinsam gewertet werden.

Macht das Sinn? Im Spiel spielt man nicht unbedingt mit einem Teamkollegen zusammen.

## Boni

Als nächstes sammeln wir, was an zusätzlichen Funktionen unterstützt werden können/sollen.

### Rangliste

Eine Rangliste der Spieler.

### Turnier

Bei einem Turnier treten viele Spieler gegeneinander an, um unter sich einen Gewinner zu ermitteln.

Wie sieht das bei realen Doppelkopf-Turnieren aus?

- Zu einem Turnier können sich die Spieler anmelden, das Turnier selber findet an einem Tag / über mehrere Tage (z.B. 3 Samstage) statt.
- Die Spieler werden unter Berücksichtigung ihres Ranges zusammengestellt und nach z.B. 4 Runden werden die Spieler neu verteilt.
- Bei den Spielen sind ruhige Zuschauer erlaubt.
- Die Zuschauer können sich untereinander unterhalten.

### Unterstützung anderer Doppelkopfspiele

Andere Doppelkopfspiele (z.B. Doppelkopf Professional) können sich auch anmelden.

## Bedienung

### privat

- Ein Spieler startet den Server
- Andere verbinden sich mit dem Server
  - zum Mitspielen (Typ Spieler)
  - zum zuschauen (Typ Zuschauer)
  - mit einem beliebigen Spieler verbinden, um über die Schulter zu schauen (Typ Schatten)
  jede Verbindung muß akzeptiert werden
- die Regeln werden abgeglichen (Server gibt vor, über Chat kann sich abgestimmt werden)
- Spielen
- ausfallende Spieler (Verbindung abgebrochen oder zu lange nicht reagiert) werden durch KI ersetzt
- nach jedem Spiel können Spieler hinzustoßen
- wenn der Server ausfällt übernimmt automatisch ein anderer

### Spielplattform

Die Bedienung gliedern wir wieder nach den Spielertypen auf.

Gelegenheitsspieler
  - Verbinden mit Spielplattform
  - Auflistung der Spiele mit ähnlichen Regeln und ähnlichem Schwierigkeitsgrad
  - Auswahl des Spiels / Anbieten eines Spiels
  - Spielen
Vielspieler
  - Verbinden mit Spielplattform
  - Anmelden auf dem Spielplattform (automatisch)
  - Auflistung der Spiele mit ähnlichen Regeln und ähnlichem Schwierigkeitsgrad
  - Auflisten der Freunde
  - Auswahl des Spiels / Anbieten eines Spiels
  - Spielen
Neuling
  - Verbinden mit Spielplattform
  - Auflistung aller öffentlichen Spiele
    - Bei einem öffentlichen Spiel zuschauen
  - Auflistung aller Betreuer
    - An Betreuer anhängen
    - Dem Betreuer über die Schulter schauen
    - Mit dem Betreuer privat unterhalten
Stammtisch
  - Verbinden mit Spielplattform
  - Anmelden auf dem Spielplattform (automatisch)
  - Anmelden am Stammtisch (automatisch)
  - Auflisten der Stammtischfreunde
  - neues Turnier starten
  - altes Turnier fortsetzen

## Prinzipien

Dinge, die bei der Implementation beachtet werden sollen.

- Gelegenheitsspieler sollen nicht gegenüber Vielspielern benachteilt werden, insbesondere nicht bei der Rangliste.

## Implementation

### Anmelden

- Ohne Registrierung: anonym
- Mit Registrierung: auf Wunsch automatisch registrieren
- Übertragung des Regelfilters

#### Registrierung

- Eindeutiger Benutzername
- ein Paßwort (wird automatisch vom Programm übertragen)
- Wenn ein Monat lang nicht angemeldet wurde, verfällt der Benutzername

##### Vorteil der Registrierung

- kann gesucht werden (auf Wunsch)
- Ranglisteneintrag (auf Wunsch)
- Teilnahme an einem Stammtisch
- kann Daten auf dem Server speichern (s.u.)

### Spielangebot

- Spieler bietet Spiel an
- Spieler können auch zwischen den Spielen hinzustoßen
- Verbindungen müssen erst akzeptiert werden (Spieler, Zuschauer)
- Personen/Rechner blockieren
- Zuschauer allgemein zulassen/verbieten
- Kommunikation:
  - Spieler sprechen mit Spielern
  - Zuschauer sprechen mit Zuschauern
  - Zuschauer hören Spieler

### Spielsuche

Der Spieler überträgt seine Daten an den Server und bekommt eine Liste von Spielen zurück.

(Finale) Filterung auf Seite des Clients.

- ähnliche Regeln (Einteilung in 'wichtig', 'gerne', 'egal')
- gleichstarke Spieler
  - Wertung über Rangliste
  - Wertung über Spielerstatistiken
- Profispiel (gute Spieler), zum Zuschauen

### Spielablauf

- Regeln werden vom Spielanbieter gesetzt
  - über Chat abgleichbar
- Spiel läuft auf allen Rechnern
- Spieler fällt aus, wenn die Verbindung getrennt wird oder er fünf Minuten lang nicht reagiert (keinen Vorbehalt macht, keine Karte spielt, Stich nicht schließt)
- ausfallender Spieler (Chef kommt): wird durch KI ersetzt
- ausfallende Verbindung: Spiel kann lokal zuende gespielt werden
- Einstieg nach jedem Spiel möglich

### Betreuung

- Betreuter wechselt mit Betreuer
- privater Chat-Kanal

### Unterstützung anderer Doppelkopfspiele

- FreeDoko muß das Protokoll verstehen

## Probleme

### Rangliste

- gutes Bewertungsverfahren

### Turnier

- Spiel muß bei jemanden vertrauenswürdigen laufen oder der Server im Internet muß das übernehmen (Last auf dem Rechner).
- Schummeln, da recht einfach alle Blätter sichtbar gemacht werden können. Um das zu unterbinden darf auf den lokalen Rechnern nicht das Spiel laufen, das geht nur durch größeren Umbau des Programmablaufs.
- Viel Arbeit

### andere Doppelkopfspiele

- andere Entwickler sollen zustimmen
- unterschiedliche Regelunterstützung
  z.B. Doppelkopf Professionell:
  - FreeDoko unterstützt keinen Joker
  - Doppelkopf Professionell unterstützt nur Ansagen, wenn der Spieler am Zug ist

## Daten

### Während einer Verbindung auf dem Server

- IP-Adresse, Port
- Registrierungsname (falls vorhanden)

### Lokal

- Freunde
- Ignorierliste
- Regelgewichtung

### Dauerhaft auf dem Server

Nur wenn der Spieler registriert ist:

- Registrierungsname
- Paßwort
- zugehörige Stammrunde
- ob Spieler gesucht werden darf
- Freunde
- Ignorierliste
- Regelgewichtung

## Roadmap

Eine grobe Übersicht, was wir in welcher Reihenfolge einbauen.

### 0.8.0

- Netzwerkspiel mit direkter Verbindung:
  Ein Spieler eröffnet Spiel, andere können dazustoßen

### 1.0

- Spielplattform (Prototyp steht schon)

### 2.0

- Rangliste
- Betreuung
- Stammtisch (bei Bedarf)

### > 2.0

- Turniere
- andere Doppelkopfspiele

offizielle Internetseite