Jump to content
Unity Insider Forum

Authoritative Server - Anfänger


Coleft

Recommended Posts

Hallo zusammen ^^,

 

Ein paar Kollegen und ich programmieren seit einer Weile ein Multiplayer Game.

Nun benötigen wir einen sogenannten "Authoritative Server".

Da wir nicht wissen, wie wir anfangen sollen, wollte ich als Grundbaustein folgende Situation als Testzweck:

- Es gibt einen Client_1 und einen Client_2

- Wenn ein Client klickt soll der Server testen, ob dieser Client an der Reihe ist und es soll sich eine Integer ändern, z.B."int++"

- Es soll immer abwechselnd geschehen, also nach Client 1 ist 2 dran

- Dies alles soll nicht durch ein Hosting-Verfahren geschehen, sondern beide Clients sollen sich mit dem, glaube ich, von Unity kostenlos zugänglichen Server verbinden

 

Ich hoffe ihr konntet meinen Frage verstehen und hoffe auf Hilfe ^^

Wofür wir sehr dankbar wären, wäre, wenn Jemand auf unseren TeamSpeak3 Server auch noch joinen könnte um uns dies ein bisschen zu erklären ^^.

Danke im Voraus

Coleft und seine Kollegen :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also. Unity bietet glaube ich nur kostenlose Server fürs Matchmaking an und damit auch für mehrere Hosts. Einen Authoritären Server müsst ihr schon selbst machen und dies könnt ihr mit Unet machen, in dem Ihr ein Unity build einfach als Server laufen lasst, der einen Unet-Server startet, oder ihr programmiert den Server direkt mit eigenen Socket's. Ich weiß nur nicht genau, was ihr vor habt und wie das ganze aussehen soll.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 10 Stunden schrieb Helishcoffe:

Also. Unity bietet glaube ich nur kostenlose Server fürs Matchmaking an und damit auch für mehrere Hosts. Einen Authoritären Server müsst ihr schon selbst machen und dies könnt ihr mit Unet machen, in dem Ihr ein Unity build einfach als Server laufen lasst, der einen Unet-Server startet, oder ihr programmiert den Server direkt mit eigenen Socket's. Ich weiß nur nicht genau, was ihr vor habt und wie das ganze aussehen soll.

Ja, so wie ich es halt oben beschrieben habe. Unser Problem ist, wie du schon erwähnt hast, wir wollen das über UNet laufen lassen, wissen aber nicht wie wir dahin kommen, dass es so läuft.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Unity hostet keinen Server, sondern listet die ganzen Server nur. Daher nur Matchmaking soweit ich weiß. Das heißt, dass man ein "Server" besser finden kann und zusätzlich, dass man keine Portfreigabe Probleme hat.

Autoritativer Server ist kurz gesagt, dass alles durch den Server gemacht wird, die per Anfrage gesteuert wird.
Ein Beispiel: Client A auf dem Lokal-PC drückt "Vorwärts"  sendet an Server ein Command(int x = 1, int y = 0),  der Server bewegt Client A auf dem Server und sendet auch zu allem anderen, dass er ihn dahin bewegt oder bewegt hat ( je nach dem wie man programmiert). Client A auf dem Lokal-PC bewegt sich nun auch dahin.

Natürlich kann man auch den Client auf dem Lokal PC während vorwärts drücken auch bewegen, aber je nach dem braucht man da Optimierungen.

 

Wie beginnt man

Einfach einen leeren Server starten, wo man nicht automatisch spawnt. Das ist bereits bei Unity UNet dabei. Der Server macht seine Commands und RPCs. Kannst ja mit was leichtem beginnen sowas wie. Command ColorMe(GameObject player) und der Server sendet dann ColorPlayer(Player, Color) 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 19 Stunden schrieb MaZy:

Unity hostet keinen Server, sondern listet die ganzen Server nur. Daher nur Matchmaking soweit ich weiß. Das heißt, dass man ein "Server" besser finden kann und zusätzlich, dass man keine Portfreigabe Probleme hat.

Autoritativer Server ist kurz gesagt, dass alles durch den Server gemacht wird, die per Anfrage gesteuert wird.
Ein Beispiel: Client A auf dem Lokal-PC drückt "Vorwärts"  sendet an Server ein Command(int x = 1, int x = 0),  der Server bewegt Client A auf dem Server und sendet auch zu allem anderen, dass er ihn dahin bewegt oder bewegt hat ( je nach dem wie man programmiert). Client A auf dem Lokal-PC bewegt sich nun auch dahin.

Natürlich kann man auch den Client auf dem Lokal PC während vorwärts drücken auch bewegen, aber je nach dem braucht man da Optimierungen.

 

Wie beginnt man

Einfach einen leeren Server starten, wo man nicht automatisch spawnt. Das ist bereits bei Unity UNet dabei. Der Server macht seine Commands und RPCs. Kannst ja mit was leichtem beginnen sowas wie. Command ColorMe(GameObject player) und der Server sendet dann ColorPlayer(Player, Color) 

Die Sache mit dem Leeren Server: Muss ich dann einfach Networking in ein Gameobject machen, weil dann wäre es ja so, dass der Server über einen Clienten laufen würde und nicht sozusagen extern. Könntest du mir das näher erläutern? :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 54 Minuten schrieb Coleft:

Die Sache mit dem Leeren Server: Muss ich dann einfach Networking in ein Gameobject machen, weil dann wäre es ja so, dass der Server über einen Clienten laufen würde und nicht sozusagen extern. Könntest du mir das näher erläutern? :D

Nein eben nicht. Du erstellst einfach einen Build, der als Server fungiert in dem du beim NetworkManager StartServer() aufrufst. Im Prinzip sind Client und Server build fast genau gleich. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Helishcoffe:

Nein eben nicht. Du erstellst einfach einen Build, der als Server fungiert in dem du beim NetworkManager StartServer() aufrufst. Im Prinzip sind Client und Server build fast genau gleich. 

Ok ich probiers mal ^^ Vielen Dank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es gibt einen selbstprogrammierten Masterserver, der Matchmaking betreibt. Also eine Liste mit den ganzen Servern. Falls du den meinst der hat nichts mit autoritativer Server zu tun, da er in diesem Fall einfach nur Serverliste verwaltet..

Allerdings können Masterserver verschiedene Aufgaben haben. Je nachdem.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 months later...

Auch wenn es schon ein wenig älter ist.

Beschäftige mich auch zur zeit mit multiplayer / networking. 

Falls überhaupt noch Interesse an dem Anliegen besteht, kannst dir ja mal Photon anschauen oder "Dark Rift".

Photon hab ich nur grob überflogen, da gibt es aber bei YouTube ein paar Sachen.

Dark Rift ist, scheint es mir zumindest ein wenig veraltet bzw aus der Mode gekommen. Aber jenachdem wieviel Erfahrung ihr habt könntet ihr damit zurecht kommen.

Man muss sich da echt durch beisen.  Bei dark Rift hast du dein Server Programm (exe) und hostest ihn selbst - daher kannst du dort auch eigene Server Logik schreiben ... was mir da besonders gut gefällt, ist dass er zumindest bisher kaum Leistung benötigt.

Beides ist als free Version vorhanden sodass du bzw ihr euch vlt einfach mal die Beispiele anguckt und durch geht 

Helish Idee find ich auch nicht schlecht und ich greif diese die tage auch mal auf.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...