-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathcompetitive.cfg.example
More file actions
118 lines (111 loc) · 5.71 KB
/
Copy pathcompetitive.cfg.example
File metadata and controls
118 lines (111 loc) · 5.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# competitive.cfg.example - the fair-play cvar rules enforced by the mod instead of PunkBuster.
# Copy to competitive.cfg next to cod_lnxded (or point COD1RELOADED_COMPETITIVE_FILE at it);
# the file is re-read live, no restart needed.
# (PB cannot run here: it flags the mod's own memory patches; PAM runs sv_punkbuster 0).
#
# Format, parsed by cod1plus.so (competitive_sv.c) and pushed to every 1.6X client:
# "cvar value" -> forced + write-locked on the client
# "cvar min max" -> clamped into [min,max], re-clamped continuously
# Range bounds and values may be floats ("cl_timenudge -20 0", "m_yaw 0.022"); a 1.6.5 client
# applied only positive integers, 1.6.6+ applies everything, zero and negatives included.
# This file OVERRIDES the embedded ruleset (sv_competitive_ruleset, ~430 CoDBase PunkBuster
# rules compiled into the 1.6.6+ client) for the cvars it names; everything else in that
# list is enforced by the client on its own. COD1RELOADED_RULESET=0 turns the list off.
# Comments must be on their OWN line - an inline comment corrupts the entry.
# Vanilla clients ignore this spec entirely: keeping allow_unversioned=0 is what
# makes it binding.
# ---------------- netcode / timing (40-tick) ----------------
com_maxfps 125 250
snaps 40
cl_maxpackets 60 250
# rate 30000, NOT the folkloric 25000 (changed 2026-08-15). The engine's real clamp
# is 90000 (SV_UserinfoChanged, cod_lnxded 0x445f1/0x44600 + CoDMP.exe 0x591a2/0x591ae
# - same Q3-inherited pair cod2x's source shows unmarked, i.e. vanilla; NO 25000
# constant exists in either binary). 25000 was only ever sv_maxRate config folklore.
# Why it matters: at sv_fps 40 the per-snapshot byte budget is rate/40 - 25000 gave
# 625 B/snap, HALF of vanilla 20Hz's 1250, so busy-fight snapshots got rate-delayed
# and players warped. BUT rate 50000 @ sv_fps 40 lagged the whole server (2026-08-15):
# the 25000 cap was accidentally LOAD-SHEDDING - a rate-limited client's snapshot is
# not merely delayed, its BUILD (delta-encoding every entity) is skipped for that
# frame. Uncapping made the server really build 40 snaps/s for everyone and its 25ms
# frame budget overran. 30000 is the measured-safe middle; the real fix is sv_fps 30
# server-side (33ms budget, 1000 B/snap with this rate, -25% load).
# REQUIRES sv_maxRate >= 30000 in the server cfg - the effective limit is
# min(rate, sv_maxRate), this line alone changes nothing.
rate 30000
# was forced 0; negative timenudge only ADDS local display delay (smoother other-
# player interpolation for jittery connections, zero competitive upside) - at 40Hz
# the interpolation window is 25ms, half of 20Hz, so jitter tolerance players used
# to have needs somewhere to come from
cl_timenudge -20 0
# minimum 1 (was 0:5): duplicating usercmds is the defence against UPLOAD loss -
# a lost client packet no longer stalls that player's movement server-side, which
# is one of the two mechanisms that make an unstable player warp for everyone else.
# Players with visible loss should run 2.
cl_packetdup 1 5
pmove_fixed 0
timescale 1
cl_avidemo 0
# ---------------- input (no scripted turns) ----------------
m_yaw 0.022
cl_yawspeed 140
cl_pitchspeed 140
cl_freelook 1
# m_pitch stays free: inverted-mouse players use -0.022 and an integer-only range
# cannot express +-0.022. It is watched by the cheat log, not forced.
# ---------------- rendering / wallhack vectors ----------------
r_fullbright 0
r_lightmap 0
r_drawentities 1
r_drawworld 1
r_znear 4
r_fog 1
r_showtris 0
r_shownormals 0
r_nocurves 0
r_picmip 0 3
r_lodbias 0 1
r_fastsky 0
# ------- glow / brightness abuse (bounds wide enough for legit tuning) -------
r_intensity 1 2
r_overbrightbits 0 2
r_mapoverbrightbits 1 3
# ---------------- gameplay / view ----------------
cg_thirdperson 0
cg_drawgun 1
cg_fov 80 95
cg_shadows 0 1
cg_nopredict 0
# ---------------- audio ESP ----------------
s_show 0
# ---------------- PunkBuster heritage (2026-09-15) ----------------
# Ported from the old server's pb/pbsv.cfg + pbsvuser.cfg (950 distinct pb_sv_cvar rules)
# with scripts/pb_to_competitive.py: only the cvars that exist in the 1.5 CLIENT and are
# NOT already CVAR_CHEAT-flagged matter here (a CHEAT cvar - r_nocull, r_lockpvs, cg_gun*,
# fx_*, r_show* ... - is reverted to its default by the engine itself while sv_cheats is 0,
# see scripts/cvars_client.tsv for every client cvar with its flags). The rules above that
# ARE cheat-flagged (r_fullbright, r_drawentities, r_znear, cg_thirdperson...) are kept as
# belt and braces only.
# lod: PB allowed 0..4 in one file, 0..1 in the admin's file; 0..1 keeps every player model
# at full detail (values above 1 switch LODs earlier).
r_lodscale 0 1
r_picmip2 0 3
# brightness: PB's own bound; the ramp is applied by the mod per monitor
r_gamma 0 3
r_ignorehwgamma 0
# NVIDIA radial fog switch: PB forced it off (fog must be the map's, r_fog is cheat-flagged)
r_nv_fog_dist 0
# no delta compression = free packet loss immunity for nobody, PB forced it
cl_nodelta 0
# sound-source overlay = audio ESP
cg_drawSoundOverlay 0
# NOT portable to this format (PB semantics the parser cannot express):
# m_pitch OUT -0.011 0.011 -> |m_pitch| < 0.011 forbidden (pitch lock); watched by the
# cheat log (COD1RELOADED_CHEATGATE), not forced: inverted
# mouse needs -0.022 and ranges are integers only
# r_texturemode INCLUDE "GL_LINEAR_MIPMAP_" -> substring match (bans GL_NEAREST); forcing one
# exact mode would override trilinear/bilinear choice - skipped
# r_displayrefresh OUT 0.1 59 -> refresh 1..59 Hz forbidden; irrelevant on modern displays
# sun lighting quality: PB forced the defaults (lower steps flatten the lighting = players stand out)
r_diffusesunsteps 3
r_diffusesunquality 2