Jump to content
Unity Insider Forum

MaZy's Blog

  • Einträge
    14
  • Kommentare
    32
  • Aufrufe
    46.232

Auto-Matchmaking #3: Konzept und wie weit ich bin.


MaZy

1.040 Aufrufe

In diesem Blog geht es darum wie ich meinen eigenen Auto-Matchmaking-system schreibe (bin schon viel weiter).

Hallo endlich kommen wir zum Konzept.

Ihr fragt euch schon wie ich mir das ganze machen möchte bzw. bereits gemacht habe. Wie das wohl mit Unity Networking gehen soll? Vergisst nicht. Es geht mir ausschließlich um Auto-Matchmaking-System.

[Erst mal was ich bis jetzt habe.
-
Ich habe einen Masterserver mit einer Szene, wo man die verbundenen Spieler sehen kann. Außerdem sollte der Server noch anzeigen, was sie machen, jedoch hab ich dort ein Problem. Unity Networking kann nicht mit zwei Servern verbunden werden. Masterserver enthält außerdem eine Playerklasse, wo nochmal die wichtigen Informationen enthalten sind.

BILD DAZU

http://i.imgur.com/Bj9VYPP.png

In dem selben Projekt habe ich eine weitere Szene. Dort hab ich noch ein Server programmiert, welches als Gameserver benutzt wird. Wird so ähnlich wie Photon aufgebaut. Einfach nur Daten hin und her schicken. Das wars so weit.

Vielleicht habt ihr bereits verstanden, was ich vorhabe.

Das Konzept ist einfach. Ich brauche ein Gameserver, wo die Spieler beitreten und spielen und ein Masterserver, der die Spieler dazu verhelfen soll auf diese Gameserver zu kommen. Also ein Auto-Matchmaking.
Also wird ein System auf dem Masterserver entwickelt, wo Beispiel die Spieler auf ein Button klicken, wo dann dieser Spieler eine RPCall zum Serverschickt, dass er suchen möchte. Dazu schickt der Masterserver zurück "ok du kannst suchen". Wie gesagt. Autoritativer Server "beste" für mich . Auf jeden Fall läuft die Suche auf dem Masterserver. Darum brauchen wir ein Array und noch besser "List" oder so, um die Spieler in einer Queue zu setzen und zusammen zu picken. Da habe ich noch keine Erfahrung, aber ungefähr habe ich die genannte Vorstellung.

Jetzt kommt noch ein Teil
Der Masterserver muss wissen, ob ein Gameserver gestartet wurde, läuft, oder beendet wurde. Denn er soll ja schließlich wissen, wann er nochmal diesen Server benutzen kann.
Der Gameserver läuft in meinem Beispiel auf dem selben IP, aber die PORTS variieren. Geht auch anders nicht .

Dazu hab ich was simples gedacht. Der Gameserver startet und verbindet sich mit dem Master und sagt "Ich bin startklar, mein Prozess ID". Die ID brauch ich damit der Masterserver weiß, ob der Server abgestürzt ist. Wenn ja ist das Spiel automatisch vorbei und zählt nicht.
Danach wird die Verbindung zum Masterserver wieder getrennt und stellt sich als Server mit Network.InitializeServer() bereit. Ansonsten am Ende verbinden wir uns nochmal mit dem Masterserver und schicken, dass das Spiel erfolgreich beendet wurde.

Das Problem könnte hier allerdings kleine Delays sein. Was wenn der Serverstart also Network.InitializeServer() plötzlich 10 Sekunden dauert, weil es gerade Performanz-Probleme gibt? Weiß nicht, ob das überhaupt möglich ist.

So mehr fällt mir gerade nicht ein.

Im nächsten Teil zeige ich die Fortschritte

0 Kommentare


Recommended Comments

Keine Kommentare vorhanden

Gast
Kommentar schreiben...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...