sverebom schrieb:
@Zehkul
Ich lese bzw. höre da nicht heraus, dass dieser Mechanismus auschließlich oder hauptsächlich die Clients betrifft. Die CPU-Cycles, die Mark zurück haben möchte, können auch CPU-Cycles auf dem Server sein.
Er hat es am Client implementiert und getestet. Er hat danach erklärt, dass und wie es auch den Server betrifft, und natürlich ist das auch sehr nützlich für den Server, aber ganz prinzipiell bringt diese Änderung am Client mehr, eindrucksvoll demonstriert durch den 60 Spieler Evocati Test.
Am Server ist es eher etwas gegen über Zeit degradierende Performance.
sverebom schrieb:
Und dass die Clients ein Objekt auf der anderen Seite von Crusader ignorieren können, müssen sie auch erst vom Server erfahren.
Diese Logik ist ist hinter den besagten Events verborgen, wurde im Video nicht thematisiert und war mit Sicherheit der Löwenanteil der Arbeit – der Grund, warum eine so nützliche Änderung erst jetzt kommt.
Die Network Ticks vom Server dürften aber vermutlich noch immer genau so ankommen wie vorher, Network Bind Culling ist schließlich noch nicht fertig. Der Client weiß also, wo alle Schiffe sind. Das einzige, was schlafengelegt wird, sind Boardcomputer und Physikberechnungen.
sverebom schrieb:
Letztendlich geht es sowohl um die Server als auch um die Clients. Je weniger die Server berechnen und übermitteln müssen, umso weniger haben auch die Clients zu tun.
Das Übermitteln hat mit dieser Geschichte überhaupt nichts zu tun. Das Übermitteln wäre wirklich Network Bind Culling.
Die Daten werden übermittelt, der Client legt nur einen Teil seiner Simulation auf Eis, weil der aktuelle Zustand derzeit nicht interessiert und er ihn später, wenn er wieder interessiert, leicht vom Server holen kann. (Bzw. vermutlich sogar dauernd gesendet bekommt, zumindest pre-3.0)
sverebom schrieb:
Nach meinem Verständnis liegt hier der Hund begraben. Die Server können benötigte Updates nicht schnell genug bereitstellen. Die Clients könnten vielleicht fröhlich vor sich hin interpolieren, selbst wenn die Server in die Knie gehen und nur noch sehr langsam Updates liefern. Die Folge wäre Rubberbanding und andere Artefakte, die immer dann auftreten, wenn Server einen Status übermitteln, der sich nicht mit der lokalen Interpretation deckt. Stattdessen ist es aber wohl so, dass die Clients den Zustand der Spielwelt nur bis zu einem gewissen Punkt interpolieren können und dann auf ein Update warten müssen um sicherzustellen, dass Server und Clients nicht vollends aus dem Takt geraten.
In solchen Situationen bleiben in Multiplayerspielen dann meist die Charaktere einfach alle stehen, laufen auf der Stelle oder Ähnliches. Ist auch oft ganz witzig damit rumzuspielen explizit Traffic zu verlangsamen oder zB nur UDP Traffic ganz zu blockieren, habe schon Spiele gesehen, wo das einen Godmode für Arme ergab. (Bei vernünftig geschriebenen aber natürlich einen sofortigen Disconnect)
In irgendeiner Form den zentralen Renderloop an Netzwerkupdates zu koppeln ist aber Unfug auf einem Level, dass das nicht einmal in Cryengine legacy code vorhanden sein könnte. Na ja, und selbst wenn, dann würdest du eher mittlere bis lange Hänger beobachten anstatt konstant niedrige FPS.
sverebom schrieb:
Übrigens, wenn die Performance so sehr von den Clients abhängig wäre, sollten wir dann nicht ein großes Leistungsgefälle zwischen den CPUs sehen? Sollte ein System mit einem i7 8700K nicht eine bedeutend bessere Performance erzielen ein alter AthlonFX? Mir ist nicht bekannt, dass dies der Fall ist.
Ich habe keinen AthlonFX hier, aber ich bin mir ziemlich sicher, dass du damit miserable Performance in Star Citzien kriegen wirst.
Einen gewissen ausgleichenden Effekt hast du aber sicherlich dadurch, dass immer noch einiges singlethreaded ist und erst mit 3.0 so langsam auf das auf Multithreading ausgelegte Items 2.0 umgestiegen wird. Wenn der Flaschenhals an einem Kern hängt, macht es wenig Unterschied, ob man einen 3 Kerner oder einen 8 Kerner hat.
sverebom schrieb:
Wenn ich mich recht entsinne, dann hat Mark gesagt dass der letzte Zustand eines Objekts gespeichert und ggf. wiederhergestellt wird, wenn dieses Objekt wieder relevant für den Spielverlauf wird.