Gestern wurde ich von einem Zocker-Kumpel auf einen neuen Tipp für Battlefield 4 aufmerksam gemacht. Ein Battlefield 4 – Clientseitiger Netcode Fix klingt doch gut? Auch einige Spieler berichten bereits darüber und sind positiv überrascht von der Wirkung. Soviel vorweg – einen Fix des Netcodes kann es natürlich durch Spieler nicht geben. Es handelt sich lediglich um ein Tutorial um die Auswirkungen zu verringern und das Spielerlebnis wieder zu verbessern/optimieren.Und es scheint zu funktionieren. Zumindest bei mir hat es einen deutlichen Effekt auf den Spielspaß gehabt. Tutorial und mehr dazu hier im Artikel:
Der Netcode von Battlefield 4 scheint im Moment noch so als hätte man den Netcode von BF Bad Company 2(clientseitig) und Battlefield 3 (serverseitig) zusammengeführt. Das klingt erstmal ganz gut, sorgt aber immer noch für Probleme. Denn in Bad Company lief der Netcode clientseitig, bzw. die Berechnungen liefen bei jedem Spieler. Das führt zu Problemen und Frust, wenn man zum Beispiel einen Gegner aus der eigenen Perspektive trifft, ihn jedoch nicht erwischt weil der andere Spieler eigentlich woanders ist. Auch der serverseitige Netcode von Battlefield 3 hatte damals so seine Tücken, durch die serverseitigen Berechnung kam es zum Beispiel vor, dass man auch um Ecken erschossen werden konnte.
Battlefiel 4 hat die zwei Ansätze anscheinend kombiniert, denn Spieler beklagen sich in den offiziellen Foren über beide Arten von Problemen. Gerade auf Operation Locker ist der Frust groß, wenn man ständig um die Ecken erschossen wird. Außerdem sorgt der Netcode für Probleme mit den Flares beim Heli. Denn oftmals ist die Rakte des Fußgimps unter euch schon da, bevor ihr die Flares gezündet habt. Aber auch bei offensichtlichen Treffen, die aber keinen Hit-Marker erzeugen stellt das ein Problem dar. Wie oft habe ich schon mit einer MG direkt vor jemandem gestanden und direkt auf ihn gezielt und nicht eine Kugel trifft aufgrund des miesen Netcodes. Die Probleme tauchen aber nicht bei allen Spielern auf und das verwundert schon etwas
Nun können wir Spieler den Netcode natürlich schlecht fixen, das kann ich schon mal verraten. Das ist Aufgabe der Entwickler. Aber dem Problem kann man etwas entgegen wirken mit dem vorgestellten Tutorial. Nach stundenlangem Frust über den Netcode hat die Recherche, ob man noch irgendwas an seinem eigenen System umstellen kann damit das Netzwerk ein bisschen besser funktioniert und das Spielerlebnis dadurch verbessert wird zu dem folgenden Tutorial geführt. In diesem wird der Paket loss, also der Paket Verlust bei der Datenübertragung als ein möglicher Grund für die Netzwerkperformance aufgeführt.
--> Mögliche Lösung: Paketverlust minimieren <–
Durch die Anpassung des MTU -Wertes (Größe des Datenpakets) der eigenen Verbindung wird eine Netzwerk-Synchronität erfolgen und das Spielerlebnis intensiviert werden. Wie Paket loss vermieden werden kann, wird bei sevensforums (siehe Quelle) wunderbar auf englisch beschrieben.
Tutorial aus dem englischen (Schritt für Schritt):
Schritt 1:
- Öffnet die Kommandozeile mithilfe von der „Windowstaste“ + „R“ und gebt dort „cmd“ ein und klickt auf OK
- In dem Kommandozeile gebt ihr folgenden Befehl ein und drückt Enter:
netsh interface ipv4 show subinterfaces
- Jetzt müsstet ihr eine Liste all eurer Netzwerkadapter sehen:
Links seht ihr den MTU-Wert und ganz rechts die Bezeichnung eurer Netzwerkkarte. Alle P-P-P Verbindungen (Point-to-Point Protocol) haben eine standard-mäßige MTU Größe (die ihr links in der Übersicht seht) von 1500 bytes. VPN-Verbindungen haben dagegen eine Größe von 1400 bytes, Davon sind jeweils 28 bytes für den IP/ICMP overhead reserviert. Effektiv also stehen dem MTU nur 1472 (1500-28 bytes) zu Verfügung.
Wiki: MTU beschreibt die maximale Paketgröße eines Protokolls, welche ohne Aufteilung in den Rahmen (engl. „Frames“) eines Netzes übertragen werden kann.
Hintergrund: Bei den ganzen unterschiedlichen Verbindungen und deren Geschwindigkeiten, kann es vorkommen, dass die eingestellte Paketgröße (MTU) die für eine Datenübertragung genutzt wird, aufgrund der Verbindung dazu führt dass die Übertragung nicht komplett ankommt. Dabei kommt es sozusagen zum Paketverlust (engl. paket loss). Das kann in Spielen dazu führen, dass die eigenen Eingabesignale (Benutzereingabe) nicht korrekt und zeitnah übertragen werden, was wiederum zu unpräzisen Anzeigen und Frust führt.
Um herauszubekommen ob der eingestellte MTU-Wert zu hoch für die eigene Verbindung ist, kann man einen Ping mit diesem Wert ausführen, also einen beliebigen Server im Internet „ansprechen“. Am besten nehmt ihr zum Start den voreingestellten Wert und probiert es aus:
Schritt 2:
In einem neuen Eingabe-Fenster (siehe oben) den folgenden Befehl mit eurer individuellen MTU-Größe (siehe oben) eingeben:
ping google.com -f -l 1472
Das -f gibt an, dass das gesendete Paket nicht aufgeteilt wird für den Ping. -l stellt die Größe des MTU ein.
Nach dem Ping könnt ihr am Ende in den „Ping statistics“ ablesen ob ihr unter Paket loss leidet ( Lost = 1-4) oder ob eure Verbindung schon richtig eingestellt ist (Received =4). Wenn ihr 0% Loss habt, dann ist euer MTU-Wert schon perfekt eingestellt und ihr könnt an dieser Stelle aufhören zu lesen.
Falls ihr jedoch eine Fehlermeldung, bzw. einen Paketverlust habt (ähnlich dem Bild von oben), dann werden deine Pakete beim versenden aufgeteilt (engl. fragmented).
Um herauszubekommen welcher Wert für euch perfekt ist, wiederholt den Ping und verringert dabei den MTU-Wert. Am einfachsten geht das, wenn ihr auf der Tastatur einfach die Pfeiltaste nach oben drückt. Verringert den Wert am besten in 10er Schritten. Also um am Beispiel zu bleiben: Falls 1472 zu Fehlern führt, probiert es mit 1462.
--> ABER: Geht mit eurem MTU-Wert nicht unter 1400 <–
Wenn ihr einen Wert gefunden habt, der erfolgreich war, erhöht den Wert dann in 1er Schritten wieder nach oben, solange bis wieder ein Fehler geworfen wird. Dann habt ihr den perfekten Wert gefunden.
Beispiel: Wenn 1462 wieder funktioniert hat, probiert es mit 1463 und so weiter.
Schritt 3: Wenn ihr einen Wert gefunden habt könnt ihr den für eure Verbindung eintragen. Dabei müsst ihr aber noch 28 bytes für den IP/ICMP overhead hinzuaddieren.Also wenn ihr 1463 als euren Wert identifiziert habt ist 1491 euer Wert to go.
Beispiel: 1463 + 28 = 1491
Eintragen könnt ihr den MTU mit folgendem Befehl in der geöffneten Kommandozeile:
netsh interface ipv4 set subinterface „Local Area Connection“ mtu=1490 store=persistent
(Ihr müsst natürlich den Namen eures Netzwerk-Adapters ändern, sonst bringt das nix. Den Namen erfahrt ihr über den Befehl in Schritt 1. Also wenn eure Netzwerk-Adapter“Local Area Connection 2″ heißt, tauscht den in oben genanntem Befehl einfach aus. Denkt daran euren MTU einzutragen.
Mit „Enter“ bestätigt ihr die Eingabe.
Jetzt noch ein Neustart und ihr habt es geschafft.
Schritt 4 (optional):
Wenn dein Router auch einen MTU-Wert hast, den du einstellen kannst (z.B: Netgear) könnt ihr den berechneten Wert auch dort eintragen. Die genaue stelle findet ihr über eure Beschreibung des Routers. Bei mir war es nicht möglich und es funktioniert auch ohne. Bei Netgear-Routern könnt ihr den MTU aber unter WAN-Settings einstellen.
Fazit:
Bei einem persönlichen Test des Tutorials kam bei mir heraus, das ich bei einem Ping an Google fast 100% paket loss hatte. Anhand des Tutorials habe ich dann meine Einstellungen des MTU solange verändert, bis keinerlei Paket loss mehr vorhanden war und ich viermal hintereinander ein erfolgreicher Ping durchgeführt werden konnte.
Seitdem spielt sich Battlefield 4 komplett anders. Man hat das Gefühl man ist wieder live im Spiel und stirbt auch nicht mehr so häufig um die Ecke. Optimiert wird durch das Tutorial auch der Ping, was natürlich auch einen Mehrwert darstellt. Natürlich ist der Netcode immer noch Mist. Ich kann aber nur jedem raten, das mal auszuprobieren. Natürlich wird jetzt nicht jeder 100% paket loss haben. Daher werden die Ergebnisse sicher variieren. Aber probiert es einfach aus. Vielleicht hilft es euch auch. Auch das Surfen geht jetzt nochmal etwas schneller. Ich bin auf eure Fazit gespannt.
Weiterer Tipp: Ich würde euch emfehlen die Netwerkglättung ingame bei euch mal auf 0 zu stellen. Dadurch kann es zwar zu Anzeigefehlern bei Levelution-Events und beim Knifing kommen, die Darstellung der Gegner und das eigene Spielgefühl wirkt auf mich jedoch schon wesentlich besser.
Quelle: Aus dem englischen von sevenforums
Pingback: [Sammelthread] Battlefield 4 - Seite 1334
MTU verringern bringt NICHTS.
Werft mal wireshark an und logged die Pakete die Battlefield 4 versickt.
Diese befinden sich im Bereich von 140 – 288 Bytes.
Das bedeutet, die Pakete sind nicht annähernd so Groß wie das MTU Limit und somit ist es vollkommen egal ob man 1500(Byte) oder 1492 (default bei PPPoE) drinen sehen hat.
Das ist ein reines Placebo.
Echt? Müsste ich mal ausprobieren. Warum berichten denn dann soviele dass es eine Verbesserung bringt? Meinst du das liegt vielleicht an der Ping-Optimierung die dadurch quasi als Nebenprodukt bewirkt wird?
reines Placebo, da kann ich nur zustimmen.
Rechnen wir doch mal mit deinem Beispiel:
Vorher = 1472 + 28 = 1500
ergibt eine Latenz von (1472+28)* 8 / 1.544.000 = ca. 7,772 ms
Nachher =1463 + 28 = 1491
ergibt eine Latenz von (1463+28)*8 / 1.544.000 = ca. 7,725 ms
also wer mir erzählen will, dass er diese Latenzverbesserung (ca. 0,047ms sprich 47µs) warnehmen kann, ist kein Homo sapiens sapiens.
Die Latenz von einer Xenon CPU E26xx zum PCIe V3.0 auf 16 Lanes liegt allein schon bei ca. 7800 µs also ca 7,800 ms.
wenn das kein Placebo ist….
Wenn man in den Höchstgenuss von Battlefield 4 kommen möchte, sollte man mal als aller erstes sein eigenes System anschauen und kritisch testen.
Spielt man das Spiel auf einem Standard-PC mit Graka und lowbudget Board, ist der Netcode völlig Uninteressant, da reicht allein schon die sehr hohen Latenzen zwischen CPU und GPU / CPU RAM.
Einen für mich merklichen (visuell) Unterschied konnte ich beim Testen verschieder Systeme nur bei Xenon CPU’s festellen.
Alle CPU’s wurden vorher in der Windows 7 Regedit dauerhaft entparkt.
1.System
Asus P8P67 deluxe rev3
Intel i7-2600k
16GB G.Skill F3-16000CL9D bei 1600Mhz
SLI 8x/8x 2mal Geforce GTX 660 TI
Raid 0 (2* 128GB SSD 6GB/s)
2.System
Asus Z9PE-D8 WS
2 mal Intel Xenon E5-2667
64 GB G.Skill F3-17000CL11Q2 bei 1866Mhz
SLI 16x/16x 2mal Geforce GTX 660 TI
Raid 0 (2* 128GB SSD 6GB/s)
Die Netzwerkanbindung beider Systeme ist identisch.
Beim 2.System konnte ich eine merkliche Verbesserung festellen. Der Grund hierfür liegt jedoch nicht wie man denken mag an der Nutzung von 2 CPU’s, sonderen an der Architektur der Xenon Kerne und deren Turbo-Lanes zu den PCIe slots.
Die Hitboxen beim spielen sind hier deutlich realistischer!!
Das liegt übrigens auch nicht an den 16x/16x. Die könnten auch mit 4x/4x laufen und sind immer noch genauso schnell. Die Bus-Technologie zwischen CPU und GPU (PCIe) ist eben ein veralteter Flaschenhals. Hier sollten sich die Hersteller mal endlich was besseres überlegen!
Und wer da immer noch der Ansicht ist, dass es allein der Netcode ist, der Schuld ist …..
Zitat: Warum berichten denn dann soviele dass es eine Verbesserung bringt?
Weil jeder seinen „Senf“ dazu beitragen möchte und glaub er habe DIE Lösung …
Hi boletus,
da hast du dir ja wirklich sehr viele Gedanken dazu gemacht. Mittlerweile weiß ich auch nichtmehr was ich von der Battlefield 4 Performance bzw. dem Spielgefühl halten soll. Durch die letzten Patches wurde zwar viel geändert, aber gebessert hat sich in meinen Augen eigentlich nicht wirklich viel. Ich und viele andere werden immer noch um die Ecken erschossen oder sterben trotz genauster Einstellungen und Tweaks auf PC-Seite. Für mich hatte der beschriebene Effekt aus dem Artikel auch nur eine Weile vorgehalten. Vermutlich wirklich eher ein Placebo-Effekt.
Was ich so traurig finde, ist der große spielerische Unterschied zu Battlefield 3. Hier hatte ich eigentlich nie Probleme mit dem Netcode, Hitboxen und einem Frustgefühl, das aufkommt wenn dich mal wieder jemand erschossen hat, obwohl du bereits in Deckung warst.
Finde deinen Vergleich sehr interessant, frage mich aber gerade ob mir ein solcher Unterschied bei den Kosten von EINEM Xenon E5-2667 mit über 1700€ das überhaupt wert wäre 😉
Ich teile deine Meinung bezüglich der Bus-Technologie zwischen CPU und GPU übrigens und beobachte das schon seit Jahren und ärgere mich grün und blau. Letzten Endes kann man viel optimieren, aber eine Anpassung und Verbesserung der Anbindung der GPU an die CPU wäre meiner Meinung nach ein enormer Sprung und würde vielen Systemen auch heute schon einen gewaltigen Boost geben!
„EINEM Xenon E5-2667 mit über 1700€ das überhaupt wert wäre“
Ja, das stimmt!
Das 2. System kostet um die 4.500 Euronen und ist nicht „Standard“.
Aber das 1. System ist mit knapp 1000 Euronen auch nicht gerade ein „Jedermanns-Gerät“.
Und der spührbare Unterschied bei BF4 der beiden Systeme hat mich schon sehr überrascht.
Die GPU/CPU Anbindung der Zukunft wird wohl in eine Richtung Nvidia Tesla gehen. Der Zukünftige PC verfügt dann nur noch über eine CPU die auch gleichzeitig GPU ist.
(hatte ich bei Nvidia schon mal auf irgendeiner Pressekonf. gehört …)
Sicherlich ist die Gestaltung des Netcodes bei BF4 kein Meisterwerk von DICE und ein wenig an den heutigen Preformance-Möglichkeiten 2013/14 vorbeientwickelt.
Das nun im Nachhinein zu ändern ist mit einem kleinen HotFix nicht mehr möglich. Da braucht es viel Zeit das gesamte Spiel neu zu „stricken“.
Ich glaube nicht, dass DICE dies für BF4 invenstieren wird.
Ich gebe dir aber dahingehen recht, dass es ein wenig frustrierend ist:
„…um die Ecken erschossen…“ zu werden. Oder als erster anfängt zu treffen und auch als erster umzufallen …
Wenn man sich jedoch darauf ein wenig einstellt, dann kann man dies auch zu seinen Vorteilen nutzen … denn es betrifft ja jeden.
Da empfand ich Quick scoping in anderen Spielen als deutlich nerviger, und dort hat sich kaum einer darüber beklagt.
Was bei mir noch zur Verbesserung beigetragen hat, ist das dauerhafte entparken der CPU’s in Windows 7 und das reduzieren der FPS im Spiel auf max 60fps.
Die nervigen FPS-drops haben sich dadurch nahezu verabschiedet und die Ladegeschwindigkeit ist höher.
Andere Tweaks sind immer sehr vom benutztem System abhängig und nicht immer 1:1 auf alle PC’s anwendbar. Da muss man ein wenig probieren, bis man die richtige Einstellung für sein System gefunden hat.
Ich befürchte leider, dass du mit deiner Vermutung bezüglich des bf4 netcode und dem ausbleibenden fix seitens DICE recht behalten wirst. Schon schade, aber das kommt davon wenn man eine beta herausbringt und einen Monat später das Spiel fertig sein soll. Sicher ist das nicht die einzige Ursache, aber es stimmt Einen schon traurig ein solches Potential verschwendet zu sehen.
Das entpacken der cores hatte ich auch einmal probiert. Hat bei mir leider keinerlei Veränderung gebracht. Mittlerweile Spiele ich ja unter Windows 8, was zu Beginn Einen Performance Bonus gebracht hat(optischer natur). Mittlerweile ist dieser aber dahin…
Wie meinst du das denn genau mit nutzen der netcodes? Ich Konnte hierzu bisher keine positiven Möglichkeiten entdecken.
Fps drops habe ich durch mein gutes System Gott sei dank ja keine. Hast du eventuell noch andere Hinweise? Wie hast du denn beispielsweise die Netzwerkglättung eingestellt?
Danke ausserdem für deine hilfreichen und interessanten Kommentare!