Jump to content
Unity Insider Forum
Christian110

Mehrere Game-Rooms

Recommended Posts

Hi,

ich programmiere derzeit an einem 3D-Shooter Multiplayer mit einem dedicated Server. Es gibt einen zentralen Server, der nur in C# (ohne Unity) geschrieben ist. Auf diesem können sich Spieler anmelden und eine eigene Lobby erstellen und in diese Freunde einladen. Der zentrale Server ist auch für das Matchmaking zuständig und hat Zugriff auf eine Datenbank.

Meine Frage ist nun: Wie geht man vor, wenn man einen neuen Game-Room erstellen möchte? Den Spieleserver würde ich in Unity programmieren und am besten Unet verwenden, da dort viel Arbeit erspart wird. Außerdem soll der Server nicht nur Informationen an die Clients hin- und herschicken, sondern einige Dinge, wie beispielsweise die Richtung und Kollision der Projektile, brechnen. Da bietet sich Unity natürlich an. Soweit ich weiß, kann man später Unity-Projekte nur über die Konsole ausführen lassen und damit könnte man enorm Ressourcen sparen. Das Problem ist aber, dass man für jeden Game-Room keine neue Instanz einer Szene auf dem Spieleserver erstellen kann, da man in Unity immer nur eine Szene aktiv hat. Außerdem kann man Unity-Stuff nicht in separaten Threads abhandeln, denn das muss leider immer im Main-Thread geschehen. Eine Möglichkeit ist mir eingefallen: Man könnte für jeden Game-Room einen neuen Prozess erstellen, der auf jeweils verschiedenen Ports lauscht. Aber das Starten von Prozessen verbraucht mehr Leistung als Threads und ist deshalb nicht sehr effizient meiner Meinung nach. Oder liege ich da falsch und es stellt kein großes Problem dar?

Dieses Asset scheint mit verschiedenen Prozessen zu arbeiten. Ich bin mir da aber unsicher, ob das der richtige bzw. professionelle Weg ist: https://assetstore.unity.com/packages/tools/network/master-server-framework-71391

Ich möchte noch kurz erwähnen, dass ich nicht den Unity Networking Service, Photon oder ähnliches verwenden möchte, da es bei der kostenlosen Version auf ca. 50 Verbindungen beschränkt ist und ich gerne selbst den Server-Code programmieren und verstehen möchte.

Hat jemand eine Idee oder einen Ansatz, wie man das am besten umsetzen könnte? Ich freue mich über jede Antwort!

Viele Grüße

Christian

 

Share this post


Link to post
Share on other sites
Am 23.8.2018 um 20:40 schrieb Christian110:

ich programmiere derzeit an einem 3D-Shooter Multiplayer mit einem dedicated Server. Es gibt einen zentralen Server, der nur in C# (ohne Unity) geschrieben ist. Auf diesem können sich Spieler anmelden und eine eigene Lobby erstellen und in diese Freunde einladen. Der zentrale Server ist auch für das Matchmaking zuständig und hat Zugriff auf eine Datenbank.

Das hört sich nach einen Masterserver an.

Am 23.8.2018 um 20:40 schrieb Christian110:

Soweit ich weiß, kann man später Unity-Projekte nur über die Konsole ausführen lassen und damit könnte man enorm Ressourcen sparen.

Wenn du Headless Server meinst ja.

Am 23.8.2018 um 20:40 schrieb Christian110:

Wie geht man vor, wenn man einen neuen Game-Room erstellen möchte? Den Spieleserver würde ich in Unity programmieren und am besten Unet verwenden, da dort viel Arbeit erspart wird.

Am 23.8.2018 um 20:40 schrieb Christian110:

an könnte für jeden Game-Room einen neuen Prozess erstellen, der auf jeweils verschiedenen Ports lauscht.

Tatsächlich ist es wirklich so, dass man jedes mal einen neuen Prozess also einen neuen Server mit anderen Port startet. Anders weiß ich auch nicht. Zu mindest tut Valve so bei Dota 2. Allerdings geht es bei größeren Spielen nicht ohne mehrere und leistungsvollen Server.

Bei Performance kann man auch Amazon Server benutzen
Die sind sehr dynamisch und dort werden ja die Ressourcen je nach Bedarf erhöht. Natürlich auch die Kosten. Mehrere Unity Prozesse pro Instanz (Amazon Server).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×