Egal was du machst, du hasst immer nachteile und vorteile, hängt nur von dem was du machen willst ab.
Danke. Wenigstens einer hat mich verstanden...
whatever hat gesagt.:
Bei beispielsweise 500 Spielern auf einem Fleck müssen an jeden Spieler 499 Positionen gesendet werden, also überschlagen 250.000 ausgehende Updates. Ein Update alle 30ms würde bedeuten 33 Updates die Sekunde, also ~ 8.000.000 Positions-/Spieler-Updates die Sekunde.
Bandbreite kann definitiv eine Rolle spielen.
Nenn mir ein 3D Shooter bei dem 500 Spieler gleichzeitig in Sichtweite stehen ...
"Das liegt vielmehr daran dass die Clients zu viel anzeigen müssen"
Es gibt weitaus grafikintensivere Spiele als Warcraft... Die Polygone sind sowieso nur Models die sich bereits als Displayliste auf der Grafikkarte befinden. ICh glaube schon, dass es da am Netzwerk liegt, dass alles rum "laggt".
Ja, es gibt Grafikintensivere Spiele. WoW ist ein Spiel mit recht wenigen Polygonen. Richtig. Aber das ist auch gut so. Aber man muss zwischen Netzwerk-Lagg und Grafik-Lagg unterscheiden...
Eine Figur in WoW hat, ohne großartig Ausrüstung, um 1000-1300 Polygone. Nehmen wir jetzt nur mal 300 Spieler mit uppiger Rüstung (was in WoW nichts seltenes ist). Also sagen wir mal 300 * 2000 Polygone = 600.000 Polygone. Dazu kommen noch die Polygone für die Stadt in der die Spieler rumstehen plus die Texturen.
Ich finde das für eine 3D GameEngine, die schon über 5 Jahre auf dem Buckel hat, doch schon ausreichend viel um in die Knie zu gehen. Aktuelle Grafikkarten sind zwar schnell. Aber da hat die Performance der Engine selbst nix davon.
Geh mal in WoW in eine Großstadt. Selbst mit aktueller Grafikkarte bricht da die FPS zusammen. Da kann das Netzwerk nix für.
Und um ganz sicher zu gehen hab ich nen Kollegen von mir, aktiver WoW Spieler auf den offiziellen Servern, gefragt wie das bei ihm in dern Städten ist. Ob die Latenz in den Keller geht oder die FPS ...
Ergebnis:
hm, ums genau zu nehmen, ich habe sogar massive einbrüche. von 60 FPS runter auf 18 FPS, und das bei ner ATI 4890 mit 1 Gig speicher
jetzt sagt bitte nochmal einer dass WoW da die Bandbreite ausgeht ...
whatever hat gesagt.:
Clients würde ich heutzutage fast ignorieren, insbesondere bei älteren Games.
Hab ich ja eben versucht zu widerlegen ...
Gehen wir mal anders an die Sache. Ein durchschnittliches Datenpaket in WoW hat um die 20-30byte (wenn ich mich recht erinnere).
Ein Server packt rund 10mbyte/sek ... Geht man nun von 25byte/Paket aus, packt der Server also rund 400.000 Pakete/Sek bevor seine Leitung den Geist aufgibt.
Und so ein MMORPG Server stellt nicht alleine die ganze Welt dar. Das ist ein kleiner aber feiner Cluster aus mehreren Servern die unterschiedliche Teile der virtuellen Welt managen. Ergo müsste es ein vielfaches von 400.000 Paketen pro Sekunde sein was das Spiel Serverseitig verschicken kann.
Sehe da also noch keine Performanceprobleme auf der Netzwerkleitung. Eher in der Verarbeitung der vielen Daten in der Serverlogik.
whatever hat gesagt.:
Viel wichtiger sind Serverressourcen und Netzwerk.
Ich denke eher Serverressouercen als Netzwerk. Und das kann ich aus eigener Erfahrung (betreibe seit 2005 nen MMORPG Server) berichten. RAM und CPU Power sind hier am wichtigsten. Wobei RAM fast noch wichtiger ist als CPU. Die Maps und VMaps brauchen einiges an Speicher. Wenn das stöndig von der Platte geladen werden muss entstehen unnötige Latenzen. Hat man sie im RAM geht's super fix.
Kr0e hat gesagt.:
Und nochmal zurück zum Thema, was UDP da verbesseren könnte... Ich habe da von Multicast gesprochen, nicht von UDP...
Mag sein. Aber Multicast übers Inet ... Das entspricht nur leider nicht der Realität. Und in der heutigen Zeit wird nunmal übers Inet gezockt.
Kr0e hat gesagt.:
Ob UDP gut läuft oder nicht hängt auch von der Programmierung ab.. Wenn man einen Socket mit UDP PAcketen bombadiert und der Socketpuffer zu kleine ist, dann gehen die Pakete beim Socket verloren und nicht im Netz... "
" Oha. Das ist ja mal eine Aussage. Kannst du das belegen? Würd' mich interessieren. "
Jain, ich kenne das halt einfach aus Erfahrung. Du kannst das ja ganz leicht selbst mal testen...
Danke. Das muss ich nicht erst testen. Wir haben hier im Büro ein recht großes Gigabit-Netzwerk in dem über ein Dutzend digitale multicast Videostreams verfügbar sind. Wenn man zu viel aus einer Ecke des Netzes an Videos anzapft, dann geht der Managed Switch in die Knie und fängt an "unwichtige" Pakete zu droppen. Und rate mal was "per default" vom Switch als unwichtig angesehen wird? Richtig. UDP. Da kannst du noch so gut programmieren: Wenn ein Router meint er müsse droppen, dann tut er das. Da hast du keinen Einfluss drauf. Und quer durch's Internet hast du unendlich viele solcher potentieller "UDP Paket dropper" stehen.
Kr0e hat gesagt.:
Kann ich dir leider nicht direkt nennen, ich ziehe meine Tests heran, die ich damit mal gemacht habe, bei denen UDP im Lan und auch im Internet recht zuverlässig war... (Wollte vor einiger Zeit genau das mal testen...) Vlt. gibts dazu ja Berichte, ich werde mal suchen! Um das mal in Zahlen auszudrücken... Ich hab ne Datei von knapp 2GB über UDP in 2048 KB Paketen geschickt. Von ungefähr 1000 Paketen kamen teilweise weniger als 20 nicht an... Das würde ich als recht gut bezeichnen ... 2 % Fehlerquote bei meinen (Zugegeben nicht ausgereiften) Tests...
20 von 1000 ist für mein empfinden viel wenns um Dateikopiren geht.
Solltest den Test mal mit TCP im gleichen Netz wiederholen und rausmessen wieviele TCP Pakete neu angefordert werden... DAS wäre interessant.
Empire Phoenix hat gesagt.:
Bei tcp wird man halt bei jeder übertragen zu dem overhead gezwungen.
Hat sich mal jemand mit dem Overhead beschäftigt oder geschaut wieviel das ist?
Ich schon:
http://de.wikipedia.org/wiki/User_Datagram_Protocol#Eigenschaften hat gesagt.:
... wovon der IP-Header und UDP-Header insgesamt mindestens 28 Bytes belegen.
http://de.wikipedia.org/wiki/Transmission_Control_Protocol#TCP-.2FIP-Paket-Gr.C3.B6.C3.9Fe hat gesagt.:
TCP- und IP-Protokoll definieren jeweils einen Header von 20 Bytes Größe.
Ergo:
UDP: mind. 28byte
TCP: 40 byte
Differenz: maximal 12 bytes
Bei heute verfügbaren Bandbreiten kann man IMHO ich in jedem Fall vernachlässigen.
So, genug kontra geboten... Wer mit mir weiter diskutieren will bitte mehr als subjektive einschätzungen liefern ;-)