Allgemein » Call of Duty
cl_maxpackets - Configeinstellungen für Call of Duty
12.02.2011 - 03:05

Dieser Artikel wird auch für zukünftige Spiele der Reihe "Call Of Duty" gelten oder funktionieren welche auf der gleiche Game-Engine basieren.
Call of Duty - Teile: 1/2/4/5/6/7 ...
Classic - COD, United Offensive - COD:UO, Modern Warfare - COD:MW, Modern Warfare 2 - COD:MW2, World At War - COD:WAW, Black Ops - COD:BO, ...

Um auch Nutzern die bisher nur eine geringe Kenntnis im Umgang mit der Einstellung von Call of Duty 2 haben, die Möglichkeit zu geben die Config besser abzustimmen, hier ein Call of Duty 2 Special in der Kategorie Config.

cl_maxpackets: Was bedeuten sie?


Einer der elementarsten Teile der Netsettings, sind die Maxpackets.

Die Maxpackets, als CoD2 Befehl cl_maxpackets, werden im Allgemeinen wie folgend beschrieben:
"..Der Configbefehl cl_maxpackets bestimmt die Anzahl der maximal vom Client verschickten Gameworldupdates pro Sekunde..".
Da dies eine doch sehr oberflächliche Beschreibung ist, werden wir uns in diesem Artikel etwas tiefergehend mit den cl_maxpackets beschaeftigen.

Auch wenn die Entwickler immer meinten sie hätten für Call of Duty 2 eine neue Enginge entwickelt, basiert diese wohl doch, zumindest zu 95%, auf der Quake3 Engine. Somit sollten wohl auch alle Fakten bezüglich der Quake3 Engine auch auf die Call of Duty 2 Engine zutreffen.

Da viele CoD2'ler auch CoD1'ler waren, beschäftigen sich die meisten mit der Maxpacketfrage schon seit mehr als 3 Jahren, oder sogar länger - eben bedingt durch den Bezug auf die Quakeengine.

Direkt zu Beginn ein kleiner Ausschnitt von dem, was der Leadcoder von SID einmal im IRC gesagt hat:

TwentySeven:

Zitat
[TwentySeven] well packets at a divisor of your fps
[TwentySeven] 30 is good
[TwentySeven] every "frame" the client generates a command
[TwentySeven] a command is just a list of what buttons you have held down
[TwentySeven] and your viewangles
[TwentySeven] tiny packet like 20 bytes
[TwentySeven] now whatever your maxpackets is
[TwentySeven] is how many of those to send per packet
[TwentySeven] so cl_maxpackets 42 at 125fps
[TwentySeven] is ~ 3 commands per packet
[thnom] So why is it locked now ?
[TwentySeven] because
[TwentySeven] sending 125 packets per second is okay for 1v1 cpma
[TwentySeven] or q3
[TwentySeven] but for 14 player UrT
[thnom] Oh
[TwentySeven] thats 14*125 packets per second
[TwentySeven] essentially a ddos attack

Somit wäre schonmal geklärt, warum sich der Spielraum der Maxpackets nur in dem Bereich von 10-100 dreht.

Höhere Maxpackets würden zwar nicht gleich zu einer DDos Attacke des Servers führen, aber zu einer hohen Serverbelastung, somit zu Lag und ausserdem zu wesentlich mehr Traffic.

Das Q3 System habe ich bislang immer so verstanden, dass sowieso nur alle 50ms (bei sv_fps 20 - welches bei CoD2 leider nicht anders geht, ausser mit dem neusten PAM Mod) ein neuer Frame serverseitig berechnet wird und dann an die Clients verteilt wird. Es ist also vollkommen egal, ob von einem Player in den 50ms etwa 6,25 (cl_maxpackets 125/20) oder 1,5 (cl_maxpackets 30/20) Pakete ankommen, die werden sowieso nur in eine Queue (Warteschlange) gestellt und nacheinander später, wenn wieder ein Server frame generiert wird, weitergereicht und abgearbeitet.

Der zusammenhang von com_maxfps und cl_maxpacket scheint sehr vielen nicht ganz klar zu sein.
Vielleicht hilft folgendes einigen bei ihren Connection-Einstellungen.

Grundsätlich kann der Client pro Frame maximal ein Paket an den Server schicken.

com_maxfps 100 + cl_maxpacket 100 = 100 verschickte pakete
com_maxfps 76 + cl_maxpacket 100 = 76 verschickte pakete
com_maxfps 76 + cl_maxpacket 76 = 76 verschickte pakete

Natürlich verursachen zu niedrige Maxpackets, wie zum Beispiel 30, einen künstlichen Lag, deshalb ist es gut, dass in den meisten Liegen die Maxpackets auf 60-100 beschränkt sind. Aber nicht nur für die Mitspieler sind zu niedrige Maxpackets fatal, auch für einen selber, denn wenn die Einstellungen falsch sind, schickt der Client nur jeden 2.,3. oder 4. Frame ein Paket.

Zum Beispiel:

com_maxfps 76 + cl_maxpacket 60 = 38 verschickte pakete

Wir sollten nun die Frage klären, welche Maxpackets wir in diesem Bereich wählen sollten.

Wie der Leadcoder schon sagte: "Ein Teiler der FPS ist eine gute Wahl". Wie wir aber auch wissen, es macht keinen allzugroßen Unterschied ob wir 2 Packete oder 6 Packete pro Frame verschicken. Manchmal ist weniger auch mehr, vor allem im Internet, so können wir Lags vermeiden.

Empfehlungen:

FPS: 76 / Maxpackets: 76
FPS: 125 / Maxpackets: 60 (optimal)
FPS: 333 / Maxpackets: 80 (333 fps ist auf vielen Servern nicht zulässig)

76,125,333 sind FPS-Werte bei denen der Strafejump funktioniert.

FPS: 250 / Maxpackets: 80
FPS: 100 / Maxpackets: 100
FPS: 60 / Maxpackets: 60

Als Abschluss: Da sich der Befehl cl_packetdup auch auf die Maxpackets bezieht, folgend noch ein kleiner Hinweis...


TwentySeven:

[TwentySeven] "CL_packetdup is a multiplier, not a "number of packets to send" so CL_packetdup 0 and 1, both mean only one copy is sent. cl_packetdup 2 means two copies.

Warum sind 333 FPS eigentlich soviel besser?


(cg_drawfps 1)

Mal abgesehen von den Bugs die durch diese hohe FPS-Zahl enstehen, wie zum Beispiel das lautlose Gehen, die weiteren/hoeheren Jumps und vielem mehr, gibt es auch in den Netsettings sehr starke Vorteile!

Wir wissen, aus dem ersten Teil dieser Serie, das jedes Paket welches wir schicken Commands enthaelt. Bei 125 FPS und 60 Maxpackets sind es 2 Commands. Stellen wir uns nun vor jemand schafft durchgaengig 333 FPS und stellt 80 Maxpackets ein, hat also in der Regel vier, teilweise fuenf, Commands pro Paket. Das ist das Doppelte was ein 125 FPS'ler hat.

Stehen sich also ein 333 FPS'ler und ein 125 FPS'ler genau gegenüber, im Nahkampf, hat der 333 FPS'ler eine doppelt so hohe Chance das der Server die Schüsse von ihm bearbeitet und an den Client des 125 FPS'lers weiterleitet.
In jeder Sekunde nimmt der Server von dem 333 FPS'ler vier Aktionen wahr. Aktionen können das Betätigen der Schusstaste, das Springen oder Laufen sein, einfach alles was man so macht im Ingame-Fight!

Wir bedenken zum Beispiel das gute Starcraft spieler 240 APM haben, also 240 Actions-per-Minute. Also 4 Aktionen in der Sekunde. Wenn dies also CoD2-Spieler auch hinbekommen, kann der Server das gar nicht verarbeiten.

Man sollte nun nicht anfangen 333 FPS zu verbieten, aber man sollte immer bedenken welche großen Vorteile solche Leute haben und vielleicht auch für sich selber entscheiden das nächste Geld nicht unbedingt in eine neue Internet-Leitung zu stecken, sondern sich lieber eine neue Grafikkarte oder CPU holen.

Denn ob ich mit 20 ms Verzögerung 4 Commands schicke oder dies mit 40-50 ms Verzögerung mache, sollte keinen alzugroßen Unterschied spielen!

Das Lagometer: Was zeigt es mir?

Lagometer (cg_drawlagometer 1)
Das Lagometer sollte schon seit Quake bekannt sein, das kleine bunte Ding, in Call of Duty unten rechts. Es zeigt die Güte der Netzwerkverbindung an und ist in 2 Bereiche geteilt.

Die zwei Bereiche
Die obere Linie bezieht sich auf die Übereinstimmung zwischen Clientframes und Serversnaps:
blau = alle vom Server erzeugten Gameworldupdates werden vom Client verarbeitet
gelb = es werden Gameworldupdates nicht angezeigt, d.h. entweder sollte man den Wert für Snaps verringern oder seine Grafiksettings auf mehr fps trimmen.

Die untere Linie bezieht sich auf die eintreffenden Packete der Verbindung :
grün = Die Verbindung ist ohne Packetverluste, alle Daten vom Server kommen beim Client an.
gelb = Es werden Packete vom Client selbst gedroppt. Maßnahme : Den Wert von rate erhöhen.
rot = Es sind Packete auf dem Weg von Server zu Client verlorengegangen, das ist der berüchtigte Packetloss.
Massnahme : Die Variable packetdup auf 2 oder höher stellen, wenn das nicht hilft, den Server oder den ISP wechseln.

Das Volumen der Linie:
Desto mehr Volumen die Linie hat, desto größer die Verzögerung zum Server. Wenn wir als Beispiel die untere Linie nehmen, wäre es am besten sie wäre Grün und ganz klein unten.

Autor: xcut | suprlative.net


Macodra


gedruckt am 04.08.2020 - 01:29
http://www.macodra.de/include.php?path=content&contentid=9