CoD4 FPS cap explained: why 125, 250 and 333 matter
The id Tech 3 engine ties physics to framerate. Your com_maxfps setting changes jump height, fall damage, movement and even footstep sounds. Here is how it works and what to set.
CoD4 runs on a modified Quake 3 engine where physics are calculated once per rendered frame. This means your FPS directly affects how high you jump, how much fall damage you take, and even whether enemies can hear your footsteps.
Why Specific FPS Values Matter
The engine works in integer milliseconds. Each frame takes 1000 / com_maxfps milliseconds, and that number must be a whole integer for physics to behave consistently.
If it's not a whole number, the engine truncates it. The leftover fractions accumulate as rounding errors that either help or hurt your movement.
The values where the math works out cleanly:
- 125 FPS = 8ms per frame
- 250 FPS = 4ms per frame
- 333 FPS = 3ms per frame (technically 3.003, close enough)
- 500 FPS = 2ms per frame (bugged, don't use)
If you set something like com_maxfps 144, the engine silently rounds to 166 FPS (6ms per frame). Always check your actual value in console after setting it.
What Changes at Each FPS
Jump Height
This is the most noticeable difference. Gravity is applied once per frame, and rounding errors accumulate across the full arc of a jump:
- 125 FPS - ~40.5 units. The baseline. Good enough for standard play
- 250 FPS - ~42 units. About 1.5 units higher than 125. Lets you reach spots you can't at 125
- 333 FPS - ~46 units. Almost 6 units higher than 125. Opens up entirely new routes across maps
- 500 FPS - ~36 units. Worse than 125. The rounding errors flip negative at this value
At 333, rounding errors consistently work in your favor across the entire jump arc. At 500, they work against you.
Fall Damage
Higher FPS = less fall damage because the engine registers a lower impact velocity at landing:
- 333 FPS - 22 damage from a standard high drop
- 250 FPS - 34 damage from the same drop
- 125 FPS - 36 damage
- 500 FPS - 57 damage (again, bugged)
Silent Movement
This is the surprising one. Footstep sounds trigger when you exceed a distance threshold per unit of time. Higher FPS lets you cover more ground silently before the threshold triggers:
- 125 FPS - about 84ms of silent strafe time
- 250 FPS - about 186ms of silent strafe time
- 333 FPS - with certain weapons (AK47), you are effectively silent while moving
This is one of the main reasons Promod caps at 250. At 333, sound-based awareness breaks down.
Air Control and Movement Style
Different FPS values suit different types of movement:
- 125 FPS - most air control per frame, best for straight-line distance jumps along map axes
- 250 FPS - good middle ground, better for angled jumps and curved bounces
- 333 FPS - maximum height but less precise air control, strong diagonal drift after strafing
Competitive players often toggle between 125 and 250 mid-match. 125 for long straight rushes, 250 for angled entries and specific bounce spots.
How to Set It
Open console with ~ and type:
/com_maxfps 250
To make it permanent, add to your config:
seta com_maxfps 250
Some players bind multiple values for quick switching:
bind F5 "com_maxfps 125"
bind F6 "com_maxfps 250"
Important: disable VSync ("Sync Every Frame" in video settings) or it will override your com_maxfps and cap you to your monitor's refresh rate.
The default value is 85, which the engine actually runs as 91 FPS (1000/11ms). This is suboptimal for physics.
What Promod Does
Promod hard-caps FPS at 250 (range 40-250). Setting 333 on a Promod server gets you kicked.
The reasoning: 333 FPS gives a hardware-gated advantage. Players who can sustain 333 get higher jumps, less fall damage, and near-silent movement that others on weaker machines can't match. At 250, the playing field is more level.
Promod also sets sv_fps 30 (up from vanilla's 20), which improves hit registration. Match this with snaps 30 on your client.
Network Settings That Pair With FPS
Your FPS setting should match your network config:
/rate 25000
/snaps 30
/cl_maxpackets 100
/com_maxfps 250
snaps tells the server how many updates per second to send you. It is capped by the server's sv_fps, so snaps 30 only helps on servers running sv_fps 30 (most Promod servers). On vanilla sv_fps 20 servers, anything above snaps 20 has no effect.
cl_maxpackets controls how many packets your client sends per second. Set it relative to your FPS: roughly half your com_maxfps value or higher. CoD4x raises the cap on this compared to vanilla.
CoD4x and FPS
CoD4x (the community client) raises the cl_maxpackets cap and fixes some network issues, but does not change any frame-dependent physics. Jump heights, fall damage, and silent movement behave identically to vanilla CoD4 at all FPS values.
The frame-dependent physics is a fundamental characteristic of the id Tech 3 engine. The only proper fix would be implementing pmove_fixed (which forces a constant physics timestep regardless of framerate). Quake 3 CPMA did this. CoD4 and CoD4x never did.
Quick Reference
- Casual play:
com_maxfps 250and forget about it - Promod competitive:
com_maxfps 250(mandatory),snaps 30,cl_maxpackets 100 - Jump servers:
com_maxfps 333(expected, maps designed for this height) - Public servers:
com_maxfps 250or333depending on preference - Never use:
com_maxfps 500or higher (physics break) - Never use: non-magic-number values like 144, 200, 300 (engine rounds them silently)