Verbindung zu einem Client abbrechen?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verbindung zu einem Client abbrechen?

    Da ich zu dieser Frage nichts im Forum finden konnte, stelle ich sie einfach mal hier.

    Es geht um die Möglichkeit in einem Multiplayergame eine Verbindung nach Belieben abbrechen zu können. Ich habe nicht herausfinden können, wie dieses möglich ist.
    Es gibt Funktionen, die eine Verbindung nach Protokoll aufbauen, aber wie kann man diese nach Protokoll abbrechen? Zum Beispiel wenn man feststellt dass man mit einem bestimmten Spieler nicht spielen möchte (Computer zu langsam, Spieler zu hochstufig u.ä.) und diesen kicken will. Im Anschluß möchte man natürlich mit anderen Spielern in Kontakt treten können.

    Mit anderen Worten, wie Sorge ich dafür, dass der andere Spieler über das network_event ein Dissconnect erhält?
  • Ich kann grad nur vermuten, ganz genau weiß ich das aber auch nicht.
    Versuche es mal mit network_destroy(socket)
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Ja meine ich ja.
    Du bekommst ja die SocketId im Networking Event.
    Diese kannst du wahrscheinlich destroyen, wobei dann der Client darauf disconnected
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Aus der GM Documentation:
    Networking Event


    Connecting / Disconnecting

    ...

    It is worth noting that the Networking Event does not get
    triggered in clients when the server disconnects, and
    that neither of the network_type_* events will be triggered in
    clients when the server they are connected to disconnects, even if
    the connection is TCP based.


    Prinzipiell heisst das dass du (auf der seite des Clients) auf andere weise den disconnect erkennen musst.
    Eine möglichkeit wäre einfach den timeout auslaufen zu lassen und dann den Spieler disconnecten.
    Eine andere möglichkeit (welche ich selbst verwende) ist vom server eine spezielle nachricht über TCP an den client zu senden (bevor die verbindung auf der serverseite geschlossen wird) die signalisiert dass der Spieler gekickt werden soll. Der Client erkennt die nachricht und beendet den multiplayer modus ohne unnötig auf ein timeout warten zu müssen.