Dienstag, 1. April 2014

Realisierung - Multiplayer

Der Singleplayer-Modus von Sechzehn war inzwischen fertig. Man konnte bereits ein Spiel erzeugen, drei Minuten lang Wörter raten, und nach Spielende die Auswertung und die Lösung begutachten. Das Layout des Spiels entsprach zu diesem Zeitpunkt schon dem, was man heute sehen kann. Nun galt es also, Sechzehn zum Multiplayer Spiel zu machen.

Multiplayer


Das Ruby on Rails Framework wartet auf Browseranfragen, führt dann eine Funktion aus, und liefert das Ergebnis - meistens HTML - an den anfragenden Browser zurück. Danach wartet Ruby on Rails auf die nächste Browseranfrage. Es gibt also keinen Spieleserver der kontinuierlich im Hintergrund alle paar Minuten ein neues Spiel erzeugt. Vielmehr muss die Erzeugung des nächsten Spieles von außen angestoßen werden.

Meine Lösung besteht darin, dass ich mir für jedes Spiel merke, wann es erzeugt wurde. Wenn ein Spieler Sechzehn spielen möchte, schau ich erst nach, wie alt das letzte Spiel ist. Ist es jünger als drei Minuten, kann der Spieler sofort für die Restdauer des Spieles mitspielen. Ist das letzte Spiel aber älter als drei Minuten, dann wird ein neues Spiel berechnet. Sollte in der Zeitspanne, in der ein neues Spiel errechnet wird, ein zweiter Spieler ebenfalls feststellen, dass das letzte Spiel älter als drei Minuten ist, wird dieser gebeten, in einer Sekunde noch einmal nachzufragen, ob das neue Spiel bereits fertiggestellt ist.

Auf diese Weise ist immer ein Spiel vorhanden, an dem alle gerade aktiven Spieler gemeinsam teilnehmen können. Das Multiplayer-Modus Problem war gelöst.


Kommentare:

  1. Hallo Marcus (hoffe mal ist ok, wenn ich dreist zum Du übergehe),

    habe das Spiel auf eXtreme-Gaming.de freigeschaltet und gleich mal ein wenig angezockt.

    Was Du in betracht ziehen könntest, ist die Wörterdatenbank der Community freizustellen, dies würde es ermöglichen, neue Wörter hinzuzufügen und auch fehlerhafte zu löschen. Die entsprechenden Vorgänge in der Datenbank könnten durch Abstimmungen unter der Community automatisiert werden - Du hättest dann nur bei unklaren Abstimmungen noch die Arbeit hier drüber zu schauen ;) Denke mal wenn das Spiel etwas mehr genutzt wird, gibts sicher auch einige, die hier aktiv mitwirken würden ;)

    AntwortenLöschen
    Antworten
    1. Erst einmal vielen Dank dafür, Sechzehn in die eXtreme-Gaming.de Datenbank aufzunehmen. Und das Du geht natürlich komplett in Ordnung!

      An ein Communityprojekt für die Pflege des Wörterbuchs habe ich auch schon gedacht. Alleine ist das nämlich kaum zu schaffen. Wahrscheinlich werde ich diesen Spin-off von Sechzehn in der zweiten Jahreshälfte in Angriff nehmen. Im Moment habe ich nur eine vage Vorstellung davon, wie der Abstimmungsprozess laufen soll. Wird aber bestimmt ein interessantes Projekt.

      Löschen