Skip to content

Network Manager

JoeGre666 edited this page Aug 31, 2020 · 2 revisions

Der NetworkManager (im Code TestNetworkManager) akzeptiert eingehende Verbindungen von Clients und erschafft für jeden verbundenen Client ein neues PlayerConnection Objekt. Dementsprechend beinhaltet der NetworkManager alle Verbindungen zu einem Server.

Identifikation von Spielern

Jedem Spieler wird (wie oben beschrieben) eine PlayerConnection zugeordnet. Diese beinhaltet Informationen über den Spieler, wie zum Beispiel den Namen und die Farbe des Spielers. Doch diese Informationen müssen dem Server vorher (also vor dem Erstellen einer PlayerConnection) bekannt sein. Dies geschieht durch eine Nachricht (ConnectionRequestMessage), welche dem Server die nötigen Informationen über den Spieler liefert (Spielername, Farbe, etc).

Synchronisieren von Leveln

Bereits verbundene Clients

Ebenso ist er auch dafür verantwortlich, das gespielte Level mit den Clients zu synchronisieren. Dazu wird allen verbunden Clients eine Nachricht gesendet, dass diese ein vom Server vorgegebenes Level laden sollen. Nachdem ein Client das Level geladen hat, sendet er dem Server eine Bestätigung. Sobald der Server eine Bestätigung von allen Clients erhalten hat, wird das Level schließlich auch auf dem Server geladen und mit den Clients synchronisiert.

Neue Clients

Clients, welche sich während einem laufenden Spiel verbinden, erhalten eine Nachricht (ServerStateMessage), welche ihnen mitteilt, welches Level gerade auf dem Server aktiv ist und auch auf dem Client geladen werden soll. Nach dem Laden wird der Client auf "Ready" gesetzt und erhält alle Änderungen am geladenen Level, die auf dem Server bisher stattgefunden haben.