Author Topic: COD2 sweet spot  (Read 3781 times)

NoBS|Thirsty

  • NoBS|Member
  • General

  • Offline
  • *
  • Stare into my Eyes!!!!

  • 1214
  • Karma:
    +126/-4
  • Personal Text
    GET IN THE FUCKIN SERVER NOOB!!!
COD2 sweet spot
« on: April 15, 2010, 09:33:44 PM »
The following article describes a very, very well known multiplayer online phenomenon in games with Quake 3 software engines and yes, Call of Duty 2 falls into that category.

The phenomenon manifests in the game as a feeling - a feeling of "near instantaneous response" between a player and their virtual surroundings: a sense that there is no lag at all between the user's input device and the response to that input. For me, this only happens a few times a night - but when it does:
  
- I feel like I can run faster, jump higher...almost a "floating" feeling.
- I can shoot through the eye of a needle at a 100yards.
- I get headshot after headshot after headshot.
- I cap flags and rack up kills like I was a machine.
  
I live for when that happens. And when the game goes back to feeling like its a bowl of molasses...I long for the feeling again.
  
I call it THE CoD SWEET SPOT.
  
It's an addictive feeling. And like an addict I want to return as often as I can to that heavenly nexus which is created by the SWEET SPOT.
  
Up to now, arriving at the nexus has been a random event for me. Chance. Like fishing, picking horses or flipping coins. I tried everything:
- I swapped out modems.
- Removed my hardware firewall
- Removed my software firewall
- Deleted background processes
- Dropped my graphics settings
- Overclocked my graphics card
  
...you name it. Nothing seemed to get me back to the SWEET SPOT on a consistent basis.
  
At first I thought lowering my ping, which I did by decreasing my video settings, would bring me to it, but alas, it did not. However, a little research on the Internet revealed the following:
  
The SWEET SPOT was real and it was repeatable. Oh joy, oh bliss. I must admit that I was and still am surprised that this information has not been adopted and adapted by EVERY online Quake-engine player. I am even more surprised that most players have no idea of the basic concepts I am about to discuss. I have to stress: none of this is secret. It's been well documented, stretching way back to the Quake days as I mentioned.
  
For example, there is an incredibly succinct and elegant description of the phenomena, written by Quake gamer injx at Funender.com:
  
http://www.funender.com/quake/info/q3connection.htm
  
The basic premise of how we can constantly achieve the SWEET SPOT is to tune your server connection so that it is as efficient as possible, and secondly, to take advantage of a "bug" in the Quake 3 engine.
  
Warning: either strap yourself in for some high-school sophmore math or skip to the bottom and find out what settings you should use.
  
A. Getting an efficient connection.
  
By efficient, I mean that the amount of data you are transmitting or receiving is exactly what is needed to satisfy your current graphics settings. In your CoD2 mulitplayer player-settings, found in everyone's mp_config.cfg, there are three cvar variables that directly affect communication efficiency with the server: Snaps, Cl_MaxPackets and Com_MaxFPS.
  
A.1 Snaps
  
Snaps refers to the number of 'snapshots' of information that are received from the server every second. Each snapshot contains the "game status" and it is the data-transfer equivalent to frame-rate.
Snaps should be set equal to the COD2 server's sv_fps setting (the game comes stock *and locked* at 20, but this cap has been overcome in mods). Regardless of how high you set your snaps setting, you will not be able to receive more than the rate at which the server runs which is defined by its sv_fps setting or by the cap. Having said that, you can set your snaps to 40 and play on a sv_fps 30 server without needing to adjust your snaps - it will run at 30 anyway. For efficiency, you should match your Snaps with sv_fps setting.
  
If you have a slow connection you might need to set it lower (Snaps = 10 is the lowest value in the range).
  
A.2 Cl_MaxPackets
  
This is the highest amount of data packets that can be uploaded to the server by your computer every second. The higher this number is the better your game will "feel" due to the fact that you are telling the server where you are and what you are doing more often. This number cannot be any higher than 125 as it is cutoff at that value by the Quake 3 (Q3) code.
  
Note that if you set this value too high, your ping - as calculated by the game - will start to rise. I say calculated because it's an "effective" number - you're not lengthening the distance between you and the server.
  
Therefore set Cl_MaxPackets as high as you can without it affecting your ping (and without going over 125).
  
Higher Cl_MaxPackets will also provide you with better hit "registration", that is, you hit what you're aimin' at! It can work both ways of course - other people can hit you with more accuracy as well. On the opposite end, low values make it harder to be hit and vice-versa. I've played CoD at both ends...and there's no question, if you're a superior player you will score higher at high values of Cl_MaxPackets.
  
A.3 Com_MaxFPS
  
This variable controls the maximum permitted framerate.
  
The Q3 software engine measures time in an integer number of milliseconds. There are a thousand milliseconds in a second. There can be no fractions in the number of frames per second that you see on your monitor; thus, the only viable number of frame rates you can have are defined by this equation:
  
Viable Frame rates (FPS) = int(1000 / N)
  
N = time in milliseconds between frames
int() = integer function
  
The only valid values are those which are equal to (1000/N) where N is an integer.
  
Here are valid Com_MaxFPS's:
  
1000/1 = 1000
1000/2 = 500
1000/3 = 333
1000/4 = 250
1000/5 = 200
1000/6 = 166
1000/7 = 142
1000/8 = 125
1000/9 = 111
1000/10 = 100
1000/11 = 90
1000/12 = 83
1000/13 = 76
1000/14 = 71
1000/15 = 66
1000/16 = 62
1000/17 = 58
1000/18 = 55
etc...
  
A.4 Cl_MaxPackets and Com_MaxFPS
  
To maximize the efficiency of your connection Cl_maxpackets and Com_maxfps have to be chosen in such a way as to respect the relationship between data upload rate and framerate.
  
The upload rate should be equal to int(Framerate/N).
  
Anything else is not efficient
  
It turns out that if you set your Cl_MaxPackets to a value which is not equal to Framerate/N, your Cl_MaxPackets will rounded DOWN to the next valid value!
  
Injx explains this very well here:
Most of you will use MaxFPS 125. If so, your valid MaxPackets values will be as follows (assuming your PC can achieve its MaxFPS value constantly): (always round up these calculations to integers) 125/1 = 125 125/2 = 63 125/3 = 42 125/4 = 32 125/5 = 25 etc. You should choose the largest value that your connection can handle. If your MaxPackets is not set to a valid value, it is a potential waste of bandwidth and therefore potential lag/instability. For example, if your framerate drops to 100 then your valid MaxPackets values will change to: 100/1 = 100 100/2 = 50 100/3 = 34 100/4 = 25 etc. So if you have your Cl_MaxPackets set to 100 and are using 125fps then mostly your MaxPackets will be at 63 (highlited in yellow above) (this is the largest value not exceeding the input Cl_MaxPackets limit). However, when the framerate drops to 100fps, the MaxPackets will change to 100 as this is now the largest value that does not exceed the input Cl_MaxPackets limit (highlited in yellow above). If your connection cannot handle 100 packets it will cause your ping to rise or spike. Even if it can handle the jump from 63 to 100 packets, this may well cause your ping to fluctuate more than if your actual MaxPackets were constant. -injx
Bottom line:
  
choose the largest values of Cl_MaxPackets and Com_MaxFPS that your connection will allow.
  
If Cl_MaxPackets is not a valid value, it is a potential waste of bandwidth and therefore potential lag or instability.
  
B. The QUAKE 3 Round-Off Bug
  
There were two significant bugs with id Software's Quake 3 engine.
  
The one that interests us here produces an unintended style of play. It is a bug that involves a numerical rounding error that occurs in the calculation of a player


pcgamer

  • Guest
Re: COD2 sweet spot
« Reply #1 on: April 27, 2010, 12:54:43 PM »
I hit this "sweet spot" years ago. My list is smaller but effective:

a) Get a good computer
b) Move to Canada (or play on servers close to you)
c) Get a good configuration file from top competitive players and modify it to your liking.

nice guide nonetheless, always wanted to know what viable frame rates are.