phpbar.de logo

Mailinglisten-Archive

[php] Spiel Kommunikation

[php] Spiel Kommunikation

Tobias Schlitt tobias at schlitt.info
Sam Dez 6 05:31:04 CET 2003


Kommen wir zum nächsten Problem:

Die Kommunikation der Spiel-Clients. Um das Spiel für alle Spieler
zugänglich zu machen gibts ja bekanntlich jede Menge Ansätze. Ich
schreibsel hier einfach mal nieder, was mir so spontan dazu einfällt:

1. Datenbank / File

Die kompletten Spieldaten in einer DB / in einem File speichern.

Pros:
- Ich hab die Daten
Cons:
- Imperformant (andauernd lesen 4 clients die selben Daten)
- Unsicher (multiple Schreibzugriffe)

2. SRM (ScriptRunningMagig/Mashine):

Pro Spiel ein persistentes Objekt in der SRM laufen lassen.

Pros:
- Performante Zugriffe (geg. DB/File)
Cons:
- Wie stabil ist SRM?

3. SHM (SharedMemory):

Pro Spiel wird das komplette Spielobjekt in einen SharedMemory Bereich
gelegt.

Pros:
- Performante Zugriffe (geg. DB/File)
- Stabil (givrs schon seit Urzeiten)
Cons:
- Objekt wird beim schreiben serialisiert (Referenzen??)

4. IRC (InternetRelayChat):

Jedes Spiel erhält einen Chatraum auf einem IRC-Server. Hierdrin werden
pro ausgeführter Aktion Nachrichten abgesetzt, die die nicht
ausführenden Clients parsen. Die Spielobjekte werden in Sessions
gehandelt und je nach Aktionslog verändert.

Pros:
- Performanter Zugriff
- Stabil
- Objekt in Sessions
- Mit etwas Mehrarbeit ein lesbares Log der Siedler Party
Cons:
- Overhead eine eigene "Sprache" für die Aktionen zu erstellen

Das von meiner Seite. Nun die Qual der Wahl...
Oder hat noch jemand eine Alternative?

Wie würdet Ihr das Updaten der Clients realisieren?
Auch hierzu meine ersten Ideen:

1. Seiten Reload:

Die komplette Client-GUI (Website) wird alle 10 Sekunden komplett
reloaded, solange der Spieler keine Aktion auszuführen hat:

Pros:
- Kein JavaScript benötigt
- Immer der aktuellste Stand
Cons:
- Riesiger Datenoverhead

2. Status Popup:

Der Spieler hat grundsätzlich 2 Fenster offen. Seine Haupt-Ansicht und
ein recht kleines (schlichtes) Popup, welches sich alle 10 Sekunden
neuläd, solange der Spieler keine Aktion ausführt / keine Nachricht
erhält. Ist letzteres der Fall, vergrößert sich das Fenster um die
Nachricht anzuzeigen (z.B. "Spieler X spielte seine Aktionskarte
'Rohstoffmonopol' aus. Alle Rohstoffe vom Typ 'Erz' wurden an den
Spieler übertragen." als Nachricht oder eben den Dialog zum würfeln,
wenn der Spieler an die Reihe kommt.

Pros:
- Kaum Overhead dur die Reloads (im Fall das keine neuen Daten vorliegen
wird nur ein mini HTML-File geladen).
- Kompletter Spielflow in einem eigenen Fenster
- Hauptdatenansicht nur im Bedarfsfall neuladen
Cons:
- JavaScript

3. Status Frame:

Wie 2. nur statt mit einem Popup in einem Frame.

Pros:
- Wie 2.
Cons:
- Wie 2.

So, das sind mal wieder Fragen über Fragen! ;)

Freue mich schon wieder auf jede Menge Konstruktive Ideen!

Grüße!
Toby

software is like sex, free it's better http://www.schlitt.info


php::bar PHP Wiki   -   Listenarchive