Lobby Protokoll

Frage: Wann wird getLobbyAction() aufgerufen? Nach erfolgreichem Aufruf von getName(), und nach einem beendeten Spiel also nach closeGame()? Wird getLobbyAction() dann periodisch aufgerufen?

Antwort: Periodisch, immer vor und nach einem Spiel.


Frage: Werden die Phasen (Loginphase, Spielphase) beibehalten, oder können jetzt jederzeit Spiele gestartet werden? Eine Lobby macht eigentlich nur sinn, wenn jederzeit neue Spieler einloggen und neue Spiele gestartet werden können (ohne dass der Server dafür manuell in die Spielphase überführt werden muss).

Antwort: Genau, es können jederzeit Spiele gestartet werden und es gibt keine Phasen.


Frage: Wann wird ein Spiel gestartet? Reicht es aus, wenn ein Spieler einen Gegner auswählt? Oder müssen sich zwei Gegner gegenseitig auswählen? Andere Lösung: startGame(farbe, gegner, timeout) liefert jetzt ein boolean zurück mit welchem ein Client angibt, ob er akzeptiert oder nicht akzeptiert.

Antwort: Ich bin für die einfachste Version (sofort ohne Rückfrage anfangen, wenn ein Spieler eine Wahl getroffen hat), weil man sonst in der GUI nochmal rückfragen muss, ob der Spieler wirklich Lust auf ein Spiel hat. Wenns ihm nicht passt, kann er sich ja gleich wieder verabschieden. Generell wird man sich immer irgendwie einigen müssen (z.B. über Instant Messenger), wer mit wem spielt; das ist also sowieso vorgeschaltet.


Frage: Im Lobby-Modus wäre es besonders praktisch, wenn man automatisch einen eindeutigen Namen zugewiesen bekäme.

Antwort: Wer das will, kann so vorgehen: Unter einem Namen einloggen, wenn der nicht passt, dann eine "2" dahinterhängen, dann eine "3" etc. Die Fehlermeldungen kann man an Hand der neu eingeführten Konstante PlayerInterface.NAME_IN_USE_PREFIX überprüft werden.


Last edited January 15, 2007