Wie funktioniert ein Server & die Serverliste

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

  • Wie funktioniert ein Server & die Serverliste

    Hallo zusammen,

    mich würde interessieren, wie so ein Server funktioniert & wie man den ins Spiel integrieren kann.

    Als Beispiel nehme ich Counter Strike. Hier werden die Server gelistet & kann denen beitreten.


    Nun meine Fragen:
    Wie wird der Server mit dem Spiel verbunden?
    Kann ein Server mehrere Räume anbieten?
    Woher weiß der Server, welche Spielinhalte wiedergeben werden sollen? ( Wer Counter Strike kennt, weiß, dass es z.B. Bunny Hop, Zombie, Free For All, Demolition etc. Server(also verschiedene Spiel-Modi) gibt)
    Wie wird ein Game-Server aufgesetzt?
  • Bin zwar auch kein Profi in diesem Gebiet aber das Funktioniert ungefähr so:

    Du brauchst einen Server und einen Clint, der Clint bist du in dem du dich mit dem Server verbindest.

    Der Server ist sowas wie ein Treuhand Service der mit allen Clints spricht und Regelt. Da auf dem Server das Spiel selber nicht laufen muss sondern der Server im Prinzip nur Informationen Synchronisieren.
    Das Synchronisieren ist hierbei sehr wichtig hierzu mal ein Beispiel:

    Du bist mit einem Kumpel auf einer Counterstrike Map du siehst ihn und er sieht dich, du beginnst zu schießen. Du Bist der Clint A der dem Server nun deine Position meldet und was du gerade tust. (Schießen)
    Der Server gibt diese Information nun an den Clint B weiter. Und dies passiert im Normalfall alle paar Millisekunden.
    Bricht nun das Internet ab oder es sind gerade 200 Player auf der Map die gerade alle Gleichzeitig eine Granate werfen die alle gleichzeitig explodieren. Wenn nun einer von dehnen einen Langsamen Rechner hat der diese Informationen langsamer verarbeitet als alle anderen, dann kommt es zu einem Lag. Ein Lag ist also im Prinzip nichts anderes als wenn die Synchronisation verloren gehen. Es gibt nun Server die dich sofort Kicken wenn das passt. (Player has Left the Game) und es gibt Server die dann 30 Sekunden auf den Player warten.
    Eine Wichtige Aufgabe des Servers ist es also die Informationen bei allen Clints Synchron zu halten. Dazu muss der Server alle paar Millisekunden wichtige Informationen abfragen und an alle Server weiter geben.

    Wenn du nun so eine Serverliste haben willst könntest du das folgendermaßen realisieren.
    Du Installierst einen Webserver der Tag und Nacht läuft. Auf ihm kannst du eine Webseite aufrufen wo du beispielsweise einen Counterstrike Server mit der Map xyz Startest. Nun läuft die leere Map.
    Nun startest du als Spieler Counterstrike du sagt zb Join Game und dein Spiel ruft den Webserver auf und dort wird abgefragt welches Spiele im Moment gerade laufen.
    Der Spiele Server beginnt nun mit dem Treuhand Server und sagt zuerst einmal dem Webserver das nun 1 Spieler auf der Karte ist. Nun kommen weitere Spieler dazu. Irgend wann sagt der Spieleserver dem Webserver das nur 16 Spieler auf der Map zugelassen sind, und der Webserver sagt dir als Clint das der Server voll ist.
    Der Webserver ist also im Prinzip nichts anderes wie ein Clint der zwischen den Player Clints und dem Spieleserver vermittelt. Nachdem du als Spieler mit dem Spieleserver verbunden bist, übernimmt der Spieleserver komplett, das heißt alle Informationen laufen direkt über den Spieleserver und nicht mehr über den Webserver. Der Webserver prüft dann nur noch ob er mehr Spieler auf die Karten lassen darf oder nicht. Er frägt den Spieleserver zb auch welche Maß dort gerade läuft und wer zb die meisten Kills hat.

    Andere können dir da vielleicht noch mehr dazu sagen und mehr ins Detail gehen. Ich habs versucht so zu erklären das es meine Großmutter verstehen kann.
  • docs.unrealengine.com/en-us/Gameplay/Networking/Server
    docs.unrealengine.com/en-us/Gameplay/Networking/Blueprints

    nicht wie ich installier ich den sondern die frage ist wie macht man einen.

    als kurzfassung:

    du hast 1 Master server, mehrere spiele server, und clients
    wenn der spieler die serverbrowser liste aufruft wird vom masterserver die liste abgefragt.
    der masterserver bekommt die liste bzw erstellt sie durch die anfragen was die Spieleserver an den masterserver stellen ("spiele server sagt hallo hier ist noch ein Spiele Server")
  • Hallo zusammen

    So einfach lässt sich das gar nicht beantworten - zuerst gibt es noch andere Fragen zu berücksichtigen.
    Es gibt einerseits Listen Server, einfach gesagt, "spielt" hier der Host auch als lokaler Spieler mit.
    Das andere ist der Dedicated Server, er bietet üblicherweise Performance Vorteile, weil er nicht alles ausrendern muss, auch kein Audio etc., daher er nicht als lokaler Spieler mitspielt ist das nicht nötig, einfach gesagt.
    Listen Server bietet oftmals Kostenvorteile und je nachdem ist er einfacher Skalierbar, weil die Clients selber hosten können. Beim Dedicated Server musst du dann üblicherweise Server hinzuschalten um Spitzlast zu überbrücken. Das ist je nachdem nicht ganz so einfach, als Tipp hier Cloud Computing. Es gibt auch Architekturen die auf beides zurückgreifen.

    Für den Spielmodus wird üblicherweise der GameMode benutzt.
    Was genau mit den Räumen meinst du, levels? Level Transition kannst du auch im GameMode regeln.

    Jetzt wie startest du die Server?
    Die UE4 hat das Built in bereits dabei, ja, wirklich!
    Du kannst ihn einfach per Command Line starten. Aber es geht sogar in der Engine unter Play kannst du mehrere Spieler automatisch verbinden oder sogar ein Test Dedicated Server per Checkbox starten.

    Gruss

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von phoenix-100 ()

  • Eine Serverlobby anzubinden ist eigentlich garnicht so schwer.

    Als aller ersten solltest du einen Dedicated Server und einen Client kompilieren/bauen/packen. Im Code hast du die Möglichkeit zu prüfen von wem der Code ausgeführt wird (IsDedicatedServer:bool).
    Wenn ein Dedicated Server deinen Code ausführt, dann soll er sich als aller erstes mal als Server bei einem Masterserver registrieren. Der Masterserver bekommt gesagt:

    "Hey ich bin ein neuer Server mit Namen xxx und Spielerslots 50 und der Map YZ. Damit du lieber MasterServer auch weißt, dass ich noch da bin, sende ich dir alle 5 sekunden einen HeartBeat (Herzschlag)."

    In diesem Heartbeat steht nicht viel drin. Muss ja auch nicht, ist ja nur ein Lebenszeichen.
    Wenn dein Code von einem Client ausgeführt wird, dann fragt er erstmal beim Masterserver an: "Hey Masterserver, ich habe die Clientversion 1.28.0. Bitte geb mir doch mal eine Liste an allen Servern mit denen ich Kompatibel bin!"

    Der Masterserver gibt ihm jetzt eine Liste an allen Servern die sich bei ihm registriert haben zurück. Dieser Masterserver ist klassischer Weise ein Webserver mit einer MySQL DB.
    Um diesen Prozess abzubilden gibt es hier ein Plugin: github.com/RyroNZ/UE4MasterServer
    Solltest du Probleme haben, dann kannst du dich gern bei mir melden.

    Viele Grüße :)


    **edit**
    Habe das nochmal grafisch mit all meinen PaintSkills dargestellt:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von SharkBytes ()

  • Dex schrieb:

    Ist der Webserver auch nötig wenn man steam nutzt? Weil steam fungiert doch dann als Masterserver. Ich kann bspw meinen dedicated Server im Server Browser finden und joinen, und der liegt auf nem externen vserver.
    Nein wenn man Steam nutzt ist das nicht notwendig. Steam ist der Masterserver. Steam setzt aber auf das gleiche Prinzip.Sie haben einen Webserver bei denen sich die Dedicated Server registrieren.
  • Das ganze nennt sich übrigends OnlineSubsystem. Das ist quasi ein Interface für verschiedene Dienste. Es gibt ein GoogleOnlineSubsystem, ein SteamOnlineSubsystem, ect ect. So können Anbieter von bestimmten Diensten (z.B. Steam) einfache Schnittstellen zwischen Ihrem System und Unreal schaffen.

    Bei Steam kannst du quasi eine Session erstellen (CreateSession), damit hostest du quasi ein Spiel, und du kannst alle Sessions über das OnlineSubsystem abrufen (FindSessions) und auflisten. Ein Steam Server ist dann der MasterServer und verwaltet die Sessions. Ob du die Session jetzt auf einem Dedicated oder nicht erstellst, ist im Prinzip egal.

    PS:
    Nicht alle OnlineSubsystems haben die gleichen Möglichkeiten. Das GoogleOnlineSubsystem erlaubt es z.B. nicht, Sessions zu kreieren, dafür kann man dort aber auf Globale und Freundes-Ranglisten zugreifen, ect.
    Marktplatz-Projekt: Surveillance Camera Madness
    Snake Spiel für Android: itch.io // Jewel Snake
    Youtube: Deutsche Tutorial Serie
Unreal®, Unreal Engine, the circle-U logo and the Powered by Unreal Engine logo are trademarks or registered trademarks of Epic Games, Inc. in the United States and elsewhere.