Multiplayer Menu & Server

  • Hallo zusammen,


    wie schon die Überschrift verrät, bin ich dabei, einen Multiplayer (FPS) zu erstellen. Dabei bin ich auf mehrere Methoden gestoßen.


    1.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    2.
    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    3.
    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Welche könnt ihr mir empfehlen ? Habt ihr Erfahrung und vielleicht sogar ein vernünftiges Tutorial ?


    Vielen Dank im Voraus :/

  • Das dritte Video ist Käse. Ansonsten sind die ersten beiden doch ganz gut. Kannst dir auch die deutschen Videos von Nob0dy angucken.


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.



    Multiplayer ist aber komplizierter als man erstmal denkt. In UE4 wird alles zwischen Client und Server gespiegelt. Wenn du einen Multiplayer mit 2 Spielern aufsetzt hast du insgesamt 6 Spieler Instanzen. Ist recht verwirrend.

  • Problem dabei ist doch, dass ich das Spiel nicht über einen "echten" Server laufen lassen kann, oder doch ?

    Ein Server ist ja auch nur ein Computer, daher kann da natürlich auch dein Spiel laufen.


    Als kleiner Überblick.
    Unreal Engine hat nativ einen Authorative Server netcode. Das bedeutet im groben, dass der Server autorität hat und alle Clients mit dem Server synchron gehalten werden. Dies ist ein relativ einfacher schritt die einfachsten cheats zu vermeiden (aber definitiv nicht sicher).
    Effektiv heißt das ein Client kann nur für Objekte für die er Besitzer ist Daten an den Server senden, für alle andere kann er Daten nur erhalten. Der Server hat jedoch immer recht, wenn z.B. irgendwie Daten im Konflikt sind. Das nur mal als ganz einfache Erklärung.


    Nativ kann man in UE4 (wie auch schon in den vorherigen Unreal Engines) folgende Arten von Servern betreiben:
    1) Listen Server:
    Hierbei startet jemand am eigenen PC ein Spiel und hostet dieses. Diese Instanz des Spiels ist der Server, besitzt jedoch auch einen eigenen PlayerController und was dazugehört. Der Server läuft also auf dem eigenen PC, das setzt also voraus dass man entsprechende Ports geöffnet hat damit die anderen Spieler deinen PC erreichen können oder dass man einen Service wie Steam dazwischen schaltet, welcher die nötigen Weiterleitungen erledigt.


    2) Dedicated Server:
    Hierbei ist eine Maschine (am besten ein richtiger Server) der Server, welcher das Spiel hostet. Dieser hat keinen eigenen PlayerController und kann BTW auch nichts Rendern (also muss man sich beim Server nicht um eine gute GPU kümmern, da so oder so nichts angezeigt werden muss). Die Spieler sind alle als Clients mit dem Server verbunden. Auch hier müssen natürlich am Server entsprechende Ports geöffnet sein.
    Meistens kompiliert man sich den Dedicated Server sogar extra, um Speicherplatz zu sparen der um kostenlos ein Server Tool zur verfügung zu stellen. Diese ist dann was Umfang angeht nicht wie das volle Spiel, da Grafik und Sounds ja nicht nötig sind.


    Zum Testen kann man auch einfach das Spiel am selben Rechner zwei Mal laufen lassen. Geht jedoch nicht mit Steam. Hierbei funktionieren sogar Server Browser Funktionalitäten, wenn man sowas programmiert hat. Das reicht oft um die Funktionalität des Gameplay Codes zu testen.
    Wenn es ernster wird, sollte man einen Zweiten PC haben, der das Spiel laufen lassen kann Und dann natürlich wenn es noch weiter geht einen Server mit der Ziel Hardware.

  • Danke Tomura, für diese ausführliche Antwort.


    Kannst du mir Videos, Seiten oder Beispiele empfehlen, wo näher darauf eingegangen wird, bezüglich des Dedicated Server ?

    Das erste Video was du gepostet hast ist schon mal nicht schlecht. Die anderen beiden ignorierst du.
    Aber zu aller erst solltest du dich darum kümmern dass dein Spiel überhaupt im Multiplayer läuft.


    Gute Referenzen dafür:
    für C++ https://wiki.unrealengine.com/Replication (das offizielle wiki ist immer eine super Quelle in der man eigentlich alles finden kann)


    Dann gibts es eine Dokumentation in der eher eher um Blueprint geht:
    https://docs.unrealengine.com/…les/Networking/index.html
    Die Map dazu gibt es in den Content examples



    https://docs.unrealengine.com/…tor/Blueprints/index.html
    https://docs.unrealengine.com/…ion/Blueprints/index.html
    https://docs.unrealengine.com/…ble/Blueprints/index.html


    https://docs.unrealengine.com/…estMultiplayer/index.html


    Das zu verstehen und anzuwenden sollte dein erster Fokus sein. Wenn du an Gameplay Code umsetzen kannst was du dir zum Ziel genommen hast, dann kümmerst du dich um Themen wie Sessions und wie man Multiplayer Menüs und Server Browser erstellt. Denn du überlebst auch ohne Menüs, weil joinen und hosten am einfachsten über die Konsole geht wenn man im frühen Entwicklungsstadium ist, und um so ein Menü testen zu könne muss dein Spiel zuerst im Multiplayer laufen.


    Ignorier auch erstmal diesen guide der erklärt wie man einen Dedicated Server kompiliert. Denn der verwirrt nur.
    Wenn du etwas weiter bist und C++ kannst dann solltest du dir das ShooterGame example von Epic anschauen. Das ist ein super Beispiel für alles was du zu Networking in UE4 wissen solltest.

  • Richtig, ich möchte ein Multiplayer-Spiel erstellen, der über ein Server läuft.
    Ich denke mal, dass es mir um das kompilieren geht.


    -Tomura - ich werde es mir durchlesen, danke.


    Edit: Socke, dein Link beschreib so ziemlich das gleiche, wie das 2. Video von meinem Post. Also ist diese Methode doch ausreichend, um ein Spiel über ein Server laufen zu lassen ?

  • Richtig, ich möchte ein Multiplayer-Spiel erstellen, der über ein Server läuft.
    Ich denke mal, dass es mir um das kompilieren geht.


    -Tomura - ich werde es mir durchlesen, danke.


    Edit: Socke, dein Link beschreib so ziemlich das gleiche, wie das 2. Video von meinem Post. Also ist diese Methode doch ausreichend, um ein Spiel über ein Server laufen zu lassen ?

    Die Methode beschreibt nur wie man eine Server-Version des Spiels kompiliert. Davor muss aber dein Spiel multiplayerfähig sein. Hier wird das Spiel und die Engine so kompiliert dass nur das drin ist, was für den Server relevant ist. Dies wäre einer der letzten Schritte im Entwicklungsverlauf.
    Auch der normale Game Client den du kompilierst lässt sich mit dem zusatz "-server" beim aufruf der exe als dedicated server starten.


    Das funktioniert sogar mit dem uproject:
    "ABSOLUTER_PFAD_ZUR_ENGINE\Engine\Binaries\Win64\UE4Editor.exe" "ABSOLUTER_PFAD_ZU_DEINEM_PROJEKT\PROJEKT.uproject" -server
    dahinter gehören dann am besten noch comand line argumente für die map die gestartet werden soll

  • Multiplayer in dem Sinne, dass ich z.B. dem Gegner Schaden zufüge & der Computer wie oben links (im Video-Minute 4:05) es abspeichert ?


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • Sicher das es noch so ist? Gerade mein mit 4.16 kompiliertes Spiel probiert. Startet ganz normal als Client.

    Dann müsste ich es mal nachprüfen.
    Also sicher bin ich mir beim aufruf über UE4Editor.exe und dem projekt.
    An sich sollte ein Development Build vom Umfang genauso sein, wie es mit einem Shipping Build aussieht müsste ich mal schauen.
    Edit: Es scheint so dass ein Cooked Build nicht als Server gestartet werden kann ohne dass man eine extra exe dafür macht.


    Das worauf ich hinaus wollte würde aber trotzdem so stehen bleiben: Eine richtige Server.exe benötigst du der im späteren Verlauf der Entwicklung, wenn man mehr auf Ziel Hardware testet. Als Anfänger sollte man sich erstmal darauf konzentieren dass das Spiel überhaupt multiplayer fähig ist.

  • Wenn du mit Umfang die Größe meinst dann ist mein Client 491 MB und mein Server 355 MB. Beides Development Builds ohne *.pdb Dateien. War mir bis jetzt auch nicht klar aber da fliegt wohl einiges raus. Ich kompiliere mal nen Linux Server.


    Edit
    Das ist ja blöd. Der Linux Server ist 1,02 GB. Drei mal so dick wie der Windows Server.