Wiki

A universe of ideas

User Tools

Site Tools


uni:ba:start

This is an old revision of the document!


Bachelor Arbeit

Komponenten

     Client                   Protocol adapter                        Dings 1                         Game State
+--------------+              +---------------+   Unix Socket    +---------------+                     +------+
|              |    TCP/IP    |               | ---------------> | State Machine |   Funktionsaufruf   |      |
|  Black Box   | <----------> | State machine |                  |               | <-----------------> |Object|
| (Von Studis) |   messages   |               | <--------------- |     Buffer    |                     |      |
+--------------+              +---------------+     messages     +---------------+                     +------+

+-- Prozess ---+              +--- Prozess ---+                  +-------------------- Prozess ---------------+
+-- Maschiene -+              +-------------------------------------- Maschiene ------------------------------+
+--------------------------------------------------- System --------------------------------------------------+

Die Kommunikation wird immer enger/direkter.

  1. Zwischen Prozessen auf verschiedenen Maschienen
  2. Zwischen Prozessen auf der selben Maschiene
  3. Innerhalb eines Prozesses

Verliert der Protokoll adapter die Verbindung zum master und wartet er noch auf eine Antwort von ihm, so ist vmtl. er am Absturz schuld und baut keine erneute Verbindung auf.

Protokoll

Erste Versuche

Kommunikation zwischen Protocol adapter und Dings 1.

C: register(gameId, playerNr, key, aboState, aboPlayer, aboToPlayer, keepAlive/autoUnregster, Timeout 1, Timeout 2)
   key: Wenn kein key beim Server für den Player hinterlegt ist (z.B. weil der client einen time out hatte), dann ignoriere den übergebenen key und weise einen neuen zu.
S: ticket(gameData, playerID, key)/ERR
   key nicht in to Player, damit keiner Schummeln kann
   wirklich alles in gameData nötig? (eigentlich nur für web Player)

------ Ab hier ist die Verbindung aufgebaut und folgende Nachrichten können folgen

C: unregister
   Geschlossene Verbindung nicht hinreichen, da HTTP player auch ohne Verbindung aktiv bleiben muss.
   Daher "auto unregister" für Protokolle oder "keep alive" für HTTP player.
S: OK/ERR

C: move(s)
   Kann player jeder Zeit senden. Aufforderung zum move, muss Protokoll Adapter anhand von state() erkennen.
   Zwischen move() und OK/ERR alles state/player()/toPlayer().
S: OK/ERR
   Ist das nötig?

S: state(nr, data)
S: player(nr, data)
   Vor toPlayer(), damit sich state machine drauf einstellen kann.
   Kann "geheime" infos, wie verdekte Karten der Gegner, beinhalten.
   
S: toPlayer(data)
   Flexibler, damit können auch daten zwichen den Zügen an die Player gesendet werden.
   key => (type, value)
   "next" -> int(3)
   "board" -> array(...)

C: requestState/Player ???
S: quit(reason)

Geordnet

Protocol adapter

ticket
toPlayer
state
player

Dings 1

register
unregister
move
;move %%:%% str
:Der move als text beschreibung. Das spiel muss damit umgehen können. Es wird hier einfach nur durchgereicht.
requestPlayer
requestState
uni/ba/start.1395363292.txt.gz · Last modified: 2020-11-18 18:10 (external edit)