Die Technik hinter modernen online-Games

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

    • Die Technik hinter modernen online-Games

      Hallo Leute,

      ich habe mich in letzter Zeit oft gefragt, wie die ganzen aktuellen online-Games aus technischer Hinsicht realisiert werden.
      Da ich mich früher schon mit diesem Thema beschäftigt habe, weiß ich dazu noch folgendes:
      Um eine direkte Verbindung über das TCP/IP-Protokoll herstellen zu können, muß der Host einen bestimmten Port freigeben, über den sich die anderen Spieler Verbinden.
      Das hat wie eben schon beschrieben den großen Nachteil dass der Host umständlich einen Port freigeben muß und die Performance der Übertragung unter Umständen sehr schlecht sein kann.
      Dann gibt es halt noch die Möglichkeit einen dedizierten Server als Host bereitzustellen, bei dem der Port immer freigegeben ist und der sich nur um das Übertragen der Daten kümmert, was eine gute Performance garantiert.

      Mir geht es nun hauptsächlich um die Frage, wie aktuelle online-Games dieses Problem mit der Portfreigabe und Performance lösen. Ich glaube nämlich nicht dass Spiele wie Helldivers oder auch Mortal Kombat für jedes gehostete Spiel einen dedizerten Server bereitstellen, oder liege ich da falsch?

      Gruß
    • Eigentlich dürfte die Port Freigabe kein Problem mit der Performance haben. Wenn ein Port offen ist ist er offen ^^ (um den Spieler ohne Portfreigabe hosten zu lassen, versuch mal Udp hole punching
      Oder meintest du was anderes?

      Um die Spieler Koordinaten usw. Weiter zu geben, wird immer Udp benutzt. Dort kann zwar nicht garantiert werden, ob die Daten angekommen sind aber ist wesentlich schneller.
      Bei einem Chat sollte man wiederum tcp verwenden, damit alle Nachrichten nach der Reihenfolge ankommen.
      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
    • Die von dir genannten Spiele kenne ich leider nicht ^^ jedoch ist mein Gedanke, um solche Spiele zu realisieren so:

      Die Entwickler stellen mindestens 1 "Masterserver" zur Verfügung, welcher dafür sorgt, dass Spieler andere Spieler finden können, eventuell auch Lobbys erstellen können, etc.
      Zudem braucht es eine Mindestanzahl an "Dedicated Servern", welche ebenfalls die Entwickler bereitstellen. Auf diesen Servern läuft dann das eigentliche Spiel ab. D.h. alle für das Game erfoderlichen synchronisierten Daten werden hier von Spieler zu Spieler ausgetauscht.

      Da bei fast jedem Spiel die Spieler auch eigene Server hosten können und selbst Spieleinstellungen festlegen können, wird wieder der Masterserver benötigt. Eigene Serverhoster können dann ihren Server "listen" lassen. Der Server sendet also seine Informationen wie Adresse und aktuelle Spieleranzahl dem Masterserver und kann von den einzelen Spieler gefunden werden, indem sie sich zum Masterserver verbinden.
      Deshalb ist es bei vielen Spielen auch notwendig, um online Spielen zu können, erstmal zu einem Masterserver zu verbinden um sehen zu können, ob Gameserver vorhanden sind.
      Mir fällt da z.B. C&C3 und DayZ ein.

      Kurz zusammengefasst:
      - Spieler verbindet sich mit Masterserver
      - Masterserver gibt dem Spieler alle öffentlichen Serveradressen
      - Spieler verbindet sich mit Game-/Dedicated Server

      (-Spieler öffnen Ports und erstellen server oder mieten sich Server)
      (-können eigenen Server listen lassen)
      Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
    • Danke für die schnellen Antworten!

      @ Husi012:
      Sorry, ich habe das ein bisschen blöd ausgedrückt. Die Portfreigabe an sich hat keinen Einfluss auf die Perfomance, über einen dedizierten Server geht es wohl aus anderen Gründen Reibungsloser, z.b. weil dieser sich wirklich nur um die Datenübertragung kümmern muß und wahrschienlich über eine sehr schnelle Internetverbindung verfügt.
      Das mit dem "Udp hole punching" hört sich ineressant an, davon habe ich noch nie etwas gehört, aber es liest sich so, als können man damit das Problem der Portfreigabe umgehen.
      Genau, diesen Ansatz mit den z.b. Koordinaten-übertragen (also Daten die wirklich oft und schnell übertragen werden müßen) mit "upd" habe ich auch schon gehört, über TCP/IP gibts bei sovielen Übertragungen wohl auch recht schnell große Probleme (die Leitung verstopft wohl?)

      @ Dufner:
      Genau, das ist auch mein Verständnis wie das ganze funktioniert. Also entweder Ports öffnen um wirklich seinen eigenen PC/Konsole als Server zu benutzen, oder über einen dedicated Server spielen.
      Als "Vermittlung" dient ein Masterserver.

      Also nochmal allgemein geht es mir darum, dass ich mir irgendwie nicht vorstellen kann, dass jedes noch so kleine online-Game, für jedes gehostete Spiel extra teure dedicated-Server bereitstellt.
      Trotzdem bekommen die das irgendwie hin, ohne Portfreigabe ein Spiel hosten zu können, habe ich das Gefühl.
      Aber die Richtung mit dem " Udp hole punching" könnte die Lösung sein.
    • Vielleicht noch zu erwähnen ist, dass oftmals nicht nur ein Serverprogramm auf einem Rootserver läuft sondern oft mehrere. D.h. ein PC hat mehrere Ports für seine Server geöffnet.
      Je nach dem wie viele Server ein PC verarbeiten kann ohne Überlastung.
      Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.