Ankündigung

Einklappen
Keine Ankündigung bisher.

Spiel - Matchmaking und Game Server (Ratchet)

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Spiel - Matchmaking und Game Server (Ratchet)

    Ich arbeite momentan an einem Spiel, in welchem jeweils zwei Spieler gegeneinander antreten können sollen. Die Spieler sollen dabei anhand ihrer Rangpunkte mit ähnlich starken Spielern gematched werden. Dazu habe ich mir folgenden, groben Ablauf ausgedacht:
    1. Spieler A klickt auf einen "Spielen-Button" und gelangt normal per HTTP auf eine Seite, auf welcher eine Websocket-Verbindung zu einem Game-Server (mit Ratchet umgesetzt und als Daemon im Hintergrund laufend) aufgebaut wird. Außerdem trage ich den Spieler in eine DB-Tabelle ein.
    2. Mit einem 2. Daemon hole ich mir innerhalb einer Endlosschleife alle Datensätze aus dieser DB-Tabelle und prüfe, ob es ähnlich starke Spieler gibt, die man matchen könnte. Sofern sich ein Match findet, lösche ich die zwei Spieler aus der DB und informiere den Game-Server mittels ZeroMQ darüber. Den Matchmaking-Code in der Endlosschleife würde ich mittels sleep() nur alle zB 10 Sekunden ausführen lassen.
    3. Sobald der Game-Server vom Matchmaking-Deamon über einen Match informiert wird (diese ZeroMQ Message enthält unter anderem die zwei User-IDs), sendet er an die beiden betroffenen Benutzer über die Socket-Verbindung das Signal, dass das Game gestartet werden kann.
    Fraglich für mich ist, ob die beiden Daemons, die ja auf dem selben Server laufen, nicht zu einer schlechten Performance des Spiels führen würden!? Ein weiteres Problem besteht darin, dass ein Benutzer beim Verlassen der Seite (auf welcher die Websocket-Verbindung aufgebaut wird) die Verbindung zum Game-Server verliert und dadurch nicht mehr darüber informiert werden kann, wenn er gematched worden ist.


  • #2
    Wäre es da nicht sinvoller, wenn das Spiel eine Verbindung zu einem Serverclient aufbaut?

    Kommentar


    • #3
      Zitat von GhostGCR Beitrag anzeigen
      Wäre es da nicht sinvoller, wenn das Spiel eine Verbindung zu einem Serverclient aufbaut?
      Was genau versteht man denn unter einem Serverclient?

      Kommentar


      • #4
        Also ich würde das Matchmaking halt komplett ingame machen, ohne dafür eine extra Website öffnen zu lassen. Heißt, du hast auf deinem Server ein Programm laufen hast, welches die Daten deines Spieles über, zum Beispiel, TCP, erhält.

        Kommentar

        Lädt...
        X