Live 6 humans online 1 active servers Peak online today 16 Record 102

SoF2 Network Settings Explained: rate, snaps and cl_maxpackets

What rate, snaps, cl_maxpackets and cl_packetdup do in Soldier of Fortune II, why the defaults cause lag, and the best values for broadband.

Updated 4 min read Fixes and settings

On this page

For SoF2 on any broadband connection, use rate 25000, snaps 40 and cl_maxpackets 60. rate is how much data per second you let the server send you, snaps is how many world updates per second you ask for, and cl_maxpackets is how many times per second your game sends your movement and shots to the server. The defaults (2500, 20 and 30) were chosen for dial-up modems in 2002, and they make players jitter and shots feel late on a modern connection.

How SoF2 talks to the server

Soldier of Fortune II runs on the Quake III engine, which uses a client–server model. The server is the only place where the “real” game happens. Your copy of the game does two things many times a second:

  • Sends commands up: your movement, aim and fire button, in small packets. cl_maxpackets limits how many of these leave your PC each second.
  • Receives snapshots down: a picture of the world near you, with where every player is, what they’re holding and what just happened. snaps is how many snapshots you ask for each second, and rate is the bandwidth they’re allowed to use.

Between snapshots, your game smooths movement by guessing (interpolating) where players are. The more snapshots you get, the less it has to guess, and the more accurately enemies appear where the server thinks they are.

SoF2 network settings: defaults and recommended values
Setting What it controls Default Broadband
rate Most bytes per second the server may send you 2500 25000
snaps Snapshots per second you ask the server for 20 40
cl_maxpackets Most packets per second your game sends 30 60
cl_packetdup Repeats your last commands in the next packet, in case one is lost 1 1

Type them in the console (~), one at a time, for example /rate 25000. They take effect straight away. To keep them, add them to your config file, as shown at the end.

rate: your download allowance

rate is in bytes per second. The default of 2500 is about 20 kilobits per second, a fraction of a 56k modem. When a busy fight needs more data than your rate allows, the server delays or leaves out snapshots, and you see players skip and stutter.

25000 is about 0.2 megabits per second, which any broadband or mobile connection handles easily, with room to spare. There’s no benefit to going higher on most servers, because a server can also cap every player with sv_maxRate. Whichever is lower, your rate or the server’s cap, is what you get.

snaps: world updates per second

snaps asks the server for that many snapshots each second. With snaps 20, you get a new picture of the world every 50 milliseconds. With snaps 40, every 25 milliseconds, if the server sends that many.

The server has the final say. In Quake III engine games, a server can’t send more snapshots than the number of frames it runs each second, so on many servers 20 is the real ceiling. Asking for 40 never hurts: you get as many as the server sends, up to your request. It just makes sure your setting is never the bottleneck.

More snapshots use more of your rate, which is one more reason to raise rate first.

cl_maxpackets: your upload

cl_maxpackets limits how many packets your game sends each second. Each packet carries your latest movement and aim. With the default of 30, the server hears from you about every 33 milliseconds, so your shots and movement reach it later than they need to. With 100, every 10 milliseconds.

Your game sends at most one packet per rendered frame, so cl_maxpackets above your frame rate does nothing. Set your frame rate first with com_maxfps. At the standard 125 FPS, 60 packets per second is a good, steady value.

cl_packetdup: insurance against packet loss

With cl_packetdup 1, each packet also carries the commands from the one before, so if a packet is lost on the way, the server still gets your input. It costs a little upload, which is nothing on broadband. Leave it at 1. If your connection loses a lot of packets, for example on busy Wi-Fi, 2 adds a second copy.

How to check it’s working

  1. See your current values. Type a setting’s name alone, such as /rate, and press Enter. The console shows its value.
  2. Turn on the lagometer. Type /cg_lagometer 1. A small graph appears in a corner of the screen. Mostly green is good. See reading the lagometer.
  3. Play a busy round. Watch players in a big fight. They should move smoothly instead of jumping from place to place.

Save it in your config

Add these lines to your autoexec.cfg in the base folder, so they’re set every time the game starts:

// Network: broadband values
seta rate "25000"
seta snaps "40"
seta cl_maxpackets "60"
seta cl_packetdup "1"

The rest of a good config is in best SoF2 settings.

Frequently asked questions

What is the best rate for SoF2?

rate 25000 on any broadband or 4G connection. The default of 2500 is a dial-up value and causes stuttering in busy fights.

Should I use snaps 20 or 40?

Set 40. If the server sends 20 per second, you get 20, and if it sends more, you get the benefit. A higher snaps never makes things worse, as long as your rate is high enough.

What does cl_maxpackets do in SoF2?

It limits how many packets per second your game sends the server with your movement and shots. Raise it from 30 to 60 so the server hears from you more often.

Will a higher rate lower my ping?

No. Ping is the time it takes data to travel to the server and back, which depends on distance and your connection. A higher rate stops lag that comes from too little bandwidth, which looks like stuttering, not a high ping.

Can a server override my rate?

Yes. A server can limit everyone with sv_maxRate. You get whichever is lower: your rate or the server’s limit.

Was this guide helpful?

Written and kept up to date by the SOF2MP.com community. Live numbers on this page come from our own tracking of every public SoF2 server. Spotted something out of date? Tell us on Discord.