Servus Atomroflman,
Zitat |
Wäre es nicht sinnvoller den Server einfach die Positionen von den Objekten an die Clients weiterleiten zu lassen? |
Das wäre wohl die Lösung Nr. 1, jedoch haben wir hierfür bereits bei einer sorgfältigen Analyse folgendes festgestellt:
- Die Welt muss aufgrund der Größe bereits in Sektoren eingeteilt werden (dynamische und statische Sektoren)
Was geschiet mit den Sektoren, wo sich kein Spieler aufhält, jedoch KI's und sich bewegende Objekte vorhanden sind?
- um möglichst Ressourcen schonende Clientsoftware zu erstellen, rechnet der Client nur mit einer 16bit und/oder 8bit Genauigkeit. Der Server soll jedoch mit 64bit und 32bit rechnen.
- die Spielwelt baut auf einen "ein Serverstandort" auf -> jeder Server hat seine eigene Spielwelt -> um die Stabilität des Spiels gewährleisten zu können, können sich Clients nur mit einem max. 123 Ping anmelden -> begrenzter Einzugsbereich eines Servers
Nehmen wir mal an, der max. Ping ist auf 150ms begrenzt und der Client führt alle Berechnungen aus. Die Aufgabe des Servers besteht nun eigentlich nur die Vermittlung der Clients (Server teilt jedem Client mit, wer sich sonst noch im Sektor befindet). Jeder Client teilt somit alle seiner Aktionen der Clients im Sektor mit.
Sektor: A
Clients im Sektor: 2, 3, 7, 8
Alle Clients haben einen Ping < 150 zum Server. Client 2 führt nun eine Aktion aus und teilt diese den anderen Clients mit. Jedoch hat er zum Client 7 einen Ping von 300ms und zum Cl. 8 einen Ping von 250ms.
Wie bekommen nun 7 und 8 die Aktion mitgeteilt?
Zudem bekommen alle Clients die Aktion zu verschiedenen Zeitpunkten. Wie sieht eine Regelung dieser Verspätungen aus? Es resultieren ja sehr hohe Ungenauigkeiten daraus im Vergleich zwischen den Clients.
Mir persönlich würde diese Regelung am besten gefallen, da der Server fast keine Arbeit (im Vergleich gesehen) erledigen muss und somit eine hohe Spielerzahl >10.000 ohne weiteres möglich wäre.
MfG,
Thomas