Lobby- und Server-System wie in COD

  • Hallo Leute,
    Ich wollte mal fragen ob es möglich ist ein ähnliches Lobby-System wie in COD aufzubauen in UE4 ? Also man erstellt eine Lobby kann Freunde einladen, sucht dann einen Server und alle Spieler dieser Lobby joinen dann auf den Server und können die verschiedenen Gamemodes spielen.Ist es außerdem möglich automatisch wie in COD einen Server zu finden, wenn man die Suche startet und diesen dann automatisch joint ?

  • Ich hätte ein paar Ideen sowas umzusetzen, aber das jetzt hier detailiert zu beschreiben würde vermutlich länger dauern als es einfach umzusetzen..


    Meine Idee wäre:
    Legende: Rot "SpielerAktion", Grün "Technische Beschreibung"


    Spieler A macht eine Team-Lobby auf


    Der Client schickt einen HTTP Request mit Json (Varest-Plugin) an eine Web-API die mit einer Datenbank kommuniziert. In der DB wird in einer Tabelle "PlayerTeamSessions" eine Zeile angelegt mit einer Generierten TeamID und einer memberID (SteamID o.Ä).

    Spieler A schickt Spieler B mit Steamnamen "foobar" eine Einladung.
    Client von Spieler A fragt DB nach dem Spieler mit dem Namen "foobar". Wurde er gefunden wird in einer weiteren Tabelle "Notifications" eine Zeile angelegt mit den Spalten "SpielerID", "NotificationType", "AdditionalParams(hier steht wieder ein json drin welches die TeamID von Spieler A beinhaltet)"


    Client von Spieler B fragt im 3 Sekunden Takt die DB nach Einträge in der Tabelle Notification mit seiner eigenen SpielerId.
    Der Client erhält eine Json mit dem NatificationType "TeamInvite" und der TeamID 1

    Spieler B bekommt die Notification angezeigt und klickt auf "JOIN"
    Die Zeile in der Notificationtabelle wird gelöscht. Der Spieler B schickt an die Datenbank einen INSERT auf die PlayerTeamSession Tabelle mit der TeamID 1 und seiner eigenen ID als memberID
    Bei beiden Clients öffnet sich ein Widget (oder ähnliches) welches alle Teammember mit TeamID 1 aus der PlayerTeamSessions
    -Tabelle anzeigt.


    Spieler A dürckt als "Admin" auf Suchen
    Achtung! Ich beziehe mich hiermit auf den von mit erklärten Masterserver von diesem Thread: Wie funktioniert ein Server & die Serverliste

    Client A fragt den Masterserver nach Servern mit freier Spieleranzahl > 2.
    gibt es keine dann öffne eine neue GameLobby (Listenserver). In der Gamelobby werden alle Spieler angezeigt die zum Listenserver verbunden sind. Dann geht das Spiel los.


    Sorry wenn das nicht detailiert genug ist, aber so auf die schnelle ohne Konzept ist das nicht möglich.
    Ich hoffe allerdings ich konnte dir einen kleinen Denkanstoß geben :)


    Viele Grüße
    Sharkbytes :)

  • Bin schon seit Monaten dran ein Plugin zu erstellen das unter anderem genau das hier ermöglichen wird. Dauert aber noch. Wer es in 1 - 2 Monaten testen will, kann sich bei mir melden. Bevorzugt Android (ist mir zu nervig) und Mac IOS (hab ich nicht) Entwickler.

  • @SharkBytes Okay klingt logisch ich versuche mal diese Theorie umzusetzen und werde davon berichten :)


    @Socke Klingt sehr gut Ich denke dafür werden sich sehr viele Interessenten finden :)


    Meine Theorie wäre es eigentlich gewesen mit dem AdvancedSessions Plugin eine Lobby zu erstellen wie ich es bereits in einem Video gesehen habe und ein Spieler oder der Leader dieser Lobby sucht dann nach Servern die ebenfalls in der "Lobby-Phase" sind und noch genug Platz für die Anzahl der Spieler in der Party hat und wenn ein Server gefunden wurde wie die IP an alle Spieler der Party/Lobby gegeben und die einzelnen Clients joinen dann auf diesen Server :)

  • @SharkBytes Okay klingt logisch ich versuche mal diese Theorie umzusetzen und werde davon berichten :)


    @Socke Klingt sehr gut Ich denke dafür werden sich sehr viele Interessenten finden :)


    Meine Theorie wäre es eigentlich gewesen mit dem AdvancedSessions Plugin eine Lobby zu erstellen wie ich es bereits in einem Video gesehen habe und ein Spieler oder der Leader dieser Lobby sucht dann nach Servern die ebenfalls in der "Lobby-Phase" sind und noch genug Platz für die Anzahl der Spieler in der Party hat und wenn ein Server gefunden wurde wie die IP an alle Spieler der Party/Lobby gegeben und die einzelnen Clients joinen dann auf diesen Server :)

    Wir haben es via AdvSessions Plugin gelöst und Funktioniert alles ohne Probleme in Steam.

  • Hier ist das von mir erwähnte Video:

    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.

    Ich denke auch man kann es via AdvancedSessions Plugin lösen aber Ich weiß leider nicht wie genau, denn Ich würde es wie im Video machen :)
    @Nyother Oder wie es habt/du es gelöst ? :)

  • Genau wie du es dir gedacht hast alle Eingeladen Spieler werden in einer Session (Lobby) gehalten, wenn nun der Session Host ein Spiel Sucht, treten alle dieser Spiel Session bei, Lösungs Wege gibt es aber einige, aber für Steam ist das wohl der beste wenn man Client->Client hat.


    Bei einem Dedicated System ohne Steam würde ich eher wie @SharkBytes ran gehen.


    Am Ende funktioniert aber alles sehr ähnlich.

  • Was genau ist denn die Frage?


    CLient <-->Client heisst dass die Clients alles machen. Also sprich es gibt keinen echten Server. Die Clients handeln die Sessions, wer eine aufmacht ist sozusagen der "Server im WOhnzimmer". Das ist finanziell ein echter Vorteil. Macht aber leider cheating sehr einfach und unmöglich zu verhindern.


    In einem ernsten Multiplayer game macht der server alle "wichtigen" Entscheidungen wie "Was spawnt jetzt gerade wo?" "Hat Spieler A Spieler B getroffen?" "ist Spieler B jetzt tot?" "Wieviel health hat Spieler A?" usw. Alles wasnicht auf dem Server entschieden oder gehandelt wird kann potentiell mit Cheating (nenns "hacking" wenn du magst, ist das gleiche) manipuliert werden und das Spiel so für ehrliche Spieler kaputtgemacht werden.


    Aber selbst wenn du alles nach Lehrbuch auf dem Server machst - wenn ein Spiel erfolgreich wird werden die cheater erfinderisch. Nimm mal Counter Strike - da kamen dann wall hacks -also daß die textur der Wand dann auf dem Client unsichtbar oder halbdurchsichtig war - da sieht man dann die Gegner. oder aim hack so daß ein programm das Fadenkreuz immer schön auf dem gegnerischen Kopf hält usw.



    Kann man nicht alles 100% verhindern, aber ist immer wirklich gut wenn man es immerhin weiß und sich dann nicht wundert a la "krass der eine Spieler hat Tausend epic items"...