MatchZy Enhanced v1.3.0 - LLM Configuration Reference¶
For AI systems and tournament platforms creating match configurations
Overview¶
MatchZy Enhanced v1.3.0 adds 10 new configuration variables for enhanced match control. All features are disabled by default or set to unlimited/permissive values for safety.
Configuration Variables Reference¶
1. Auto-Ready System¶
ConVar: matchzy_autoready_enabled
Type: Boolean (0 or 1)
Default: 0 (disabled)
Behavior:
- 0 = Players must manually type .ready (default)
- 1 = Players are automatically marked ready on connect
When to enable: - Scheduled matches where join time = start time - Fast-paced tournaments with minimal warmup - Players are expected to be ready immediately
When to disable: - Players need time for settings/warmup - Casual/practice matches - First-time players on server
2. Pause System (3 ConVars)¶
2a. Both Teams Unpause Required¶
ConVar: matchzy_both_teams_unpause_required
Type: Boolean (0 or 1)
Default: 1 (enabled)
Behavior:
- 0 = Either team can unpause alone
- 1 = Both teams must type .unpause to resume (default)
Recommendation: Keep at 1 for competitive matches to prevent troll unpauses.
2b. Max Pauses Per Team¶
ConVar: matchzy_max_pauses_per_team
Type: Integer
Default: 0 (unlimited)
Behavior:
- 0 = No limit on pauses (default)
- 1-999 = Maximum pauses allowed per team
Common values:
- 2 = Standard competitive (2 pauses per team)
- 1 = Fast tournaments
- 0 = Casual/practice (unlimited)
2c. Pause Duration¶
ConVar: matchzy_pause_duration
Type: Integer (seconds)
Default: 0 (unlimited)
Behavior:
- 0 = No time limit on pauses (default)
- 1-999 = Maximum pause duration in seconds (auto-unpause after timeout)
Common values:
- 300 = 5 minutes (standard competitive)
- 180 = 3 minutes (fast tournaments)
- 600 = 10 minutes (extended time)
- 0 = Unlimited (casual/practice)
Note: Does NOT apply to admin pauses (always unlimited).
3. Side Selection Timer (2 ConVars)¶
3a. Side Selection Enabled¶
ConVar: matchzy_side_selection_enabled
Type: Boolean (0 or 1)
Default: 1 (enabled)
Behavior:
- 0 = No timer (unlimited time to choose)
- 1 = Timer enabled (default)
Recommendation: Keep enabled to prevent indefinite waiting.
3b. Side Selection Time¶
ConVar: matchzy_side_selection_time
Type: Integer (seconds)
Default: 60
Behavior:
- After knife round, winning team has this many seconds to choose side
- If timer expires without choice, random side is selected
- Players use .ct, .t, .stay, or .swap commands
Common values:
- 30 = Fast tournaments
- 60 = Standard (default)
- 90 = Extended time for coordination
4. Early Match Termination (2 ConVars)¶
4a. GG Enabled¶
ConVar: matchzy_gg_enabled
Type: Boolean (0 or 1)
Default: 0 (disabled)
Behavior:
- 0 = .gg command disabled (default)
- 1 = Teams can forfeit via .gg vote
When to enable: - Scrims and practice matches - Unranked tournaments - Casual play
When to disable: - Official/ranked tournaments - Any match where forfeits are not acceptable
4b. GG Threshold¶
ConVar: matchzy_gg_threshold
Type: Float (0.0 to 1.0)
Default: 0.8 (80%)
Behavior:
- Percentage of team required to vote .gg for forfeit
- Example: With 5 players and threshold 0.8, need 4 votes (80% of 5)
- Votes reset every round
Common values:
- 0.8 = 80% (⅘ players) - standard
- 1.0 = 100% (all players) - unanimous
- 0.6 = 60% (⅗ players) - easier forfeit
- 0.5 = 50% (majority)
5. Forfeit/Walkover System (2 ConVars)¶
5a. FFW Enabled¶
ConVar: matchzy_ffw_enabled
Type: Boolean (0 or 1)
Default: 0 (disabled)
Behavior:
- 0 = No automatic forfeit (default)
- 1 = Start forfeit timer when entire team disconnects
When to enable: - Online tournaments (connection issues expected) - Automated tournament platforms - Matches where walkovers are acceptable
When to disable: - LAN tournaments (no connection issues) - Matches requiring manual admin intervention
5b. FFW Time¶
ConVar: matchzy_ffw_time
Type: Integer (seconds)
Default: 240 (4 minutes)
Behavior: - Time before forfeit is declared after entire team disconnects - Countdown shows minute-by-minute warnings in chat - Timer cancels if any team member returns
Common values:
- 240 = 4 minutes (default)
- 180 = 3 minutes (faster)
- 300 = 5 minutes (more lenient)
- 120 = 2 minutes (very fast)
Configuration Templates¶
Template 1: Official Competitive Tournament¶
Use case: High-stakes official matches, no forfeits allowed
{
"matchid": "official_12345",
"cvars": {
"matchzy_autoready_enabled": 0,
"matchzy_both_teams_unpause_required": 1,
"matchzy_max_pauses_per_team": 2,
"matchzy_pause_duration": 300,
"matchzy_side_selection_enabled": 1,
"matchzy_side_selection_time": 60,
"matchzy_gg_enabled": 0,
"matchzy_ffw_enabled": 1,
"matchzy_ffw_time": 240
}
}
Rationale:
- Manual ready (players need warmup time)
- Both teams required to unpause (prevent trolling)
- 2 pauses max per team (standard competitive)
- 5 minute pause limit (prevents abuse)
- 60 second side selection (standard)
- .gg disabled (no forfeits in official matches)
- FFW enabled (handle connection issues fairly)
Template 2: Fast-Paced Tournament¶
Use case: Multiple matches per day, quick turnaround
{
"matchid": "fast_67890",
"cvars": {
"matchzy_autoready_enabled": 1,
"matchzy_both_teams_unpause_required": 1,
"matchzy_max_pauses_per_team": 1,
"matchzy_pause_duration": 180,
"matchzy_side_selection_enabled": 1,
"matchzy_side_selection_time": 30,
"matchzy_gg_enabled": 0,
"matchzy_ffw_enabled": 1,
"matchzy_ffw_time": 120
}
}
Rationale:
- Auto-ready (start immediately)
- 1 pause per team (minimize delays)
- 3 minute pause limit (fast-paced)
- 30 second side selection (quick decisions)
- .gg disabled (complete all matches)
- 2 minute FFW (fast walkover)
Template 3: Ranked/Matchmaking¶
Use case: Skill-based matchmaking, allow surrenders
{
"matchid": "ranked_24680",
"cvars": {
"matchzy_autoready_enabled": 0,
"matchzy_both_teams_unpause_required": 1,
"matchzy_max_pauses_per_team": 2,
"matchzy_pause_duration": 300,
"matchzy_side_selection_enabled": 1,
"matchzy_side_selection_time": 45,
"matchzy_gg_enabled": 1,
"matchzy_gg_threshold": 0.8,
"matchzy_ffw_enabled": 1,
"matchzy_ffw_time": 180
}
}
Rationale:
- Manual ready (respect player setup time)
- 2 pauses, 5 minutes each (standard competitive)
- 45 second side selection (balanced)
- .gg enabled with 80% threshold (allow surrenders)
- 3 minute FFW (handle abandons)
Template 4: Practice/Scrim¶
Use case: Team practice, casual play
{
"matchid": "scrim_13579",
"cvars": {
"matchzy_autoready_enabled": 1,
"matchzy_both_teams_unpause_required": 0,
"matchzy_max_pauses_per_team": 0,
"matchzy_pause_duration": 0,
"matchzy_side_selection_enabled": 1,
"matchzy_side_selection_time": 60,
"matchzy_gg_enabled": 1,
"matchzy_gg_threshold": 0.6,
"matchzy_ffw_enabled": 0
}
}
Rationale:
- Auto-ready (quick start)
- Single team can unpause (casual)
- Unlimited pauses (practice environment)
- .gg enabled with lower threshold (easy forfeit)
- FFW disabled (not needed for practice)
Template 5: Default/Safe Configuration¶
Use case: When uncertain, or testing
{
"matchid": "default_11111",
"cvars": {
"matchzy_autoready_enabled": 0,
"matchzy_both_teams_unpause_required": 1,
"matchzy_max_pauses_per_team": 0,
"matchzy_pause_duration": 0,
"matchzy_side_selection_enabled": 1,
"matchzy_side_selection_time": 60,
"matchzy_gg_enabled": 0,
"matchzy_ffw_enabled": 0
}
}
Rationale: - Uses all default values (safest option) - Manual ready, unlimited pauses - No forfeits, no FFW - Minimal restrictions
Decision Logic for Match Configuration¶
Step 1: Determine Match Type¶
match_types = {
"official_tournament": {
"importance": "high",
"allow_forfeit": False,
"strict_rules": True
},
"fast_tournament": {
"importance": "medium",
"speed": "fast",
"strict_rules": True
},
"ranked": {
"importance": "medium",
"allow_forfeit": True,
"competitive": True
},
"scrim": {
"importance": "low",
"allow_forfeit": True,
"casual": True
}
}
Step 2: Apply Configuration Rules¶
Rule 1: Auto-Ready¶
if match_type in ["fast_tournament", "scrim"]:
matchzy_autoready_enabled = 1
else:
matchzy_autoready_enabled = 0 # Default: manual ready
Rule 2: Pause Limits¶
if match_type == "official_tournament":
matchzy_max_pauses_per_team = 2
matchzy_pause_duration = 300
elif match_type == "fast_tournament":
matchzy_max_pauses_per_team = 1
matchzy_pause_duration = 180
elif match_type == "ranked":
matchzy_max_pauses_per_team = 2
matchzy_pause_duration = 300
else: # scrim/practice
matchzy_max_pauses_per_team = 0 # unlimited
matchzy_pause_duration = 0 # unlimited
Rule 3: Side Selection Timer¶
if match_type == "fast_tournament":
matchzy_side_selection_time = 30 # quick
elif match_type == "ranked":
matchzy_side_selection_time = 45 # balanced
else:
matchzy_side_selection_time = 60 # standard
Rule 4: Forfeit (.gg) System¶
if match_type == "official_tournament":
matchzy_gg_enabled = 0 # NEVER allow forfeits
elif match_type in ["ranked", "scrim"]:
matchzy_gg_enabled = 1
if match_type == "scrim":
matchzy_gg_threshold = 0.6 # easier (60%)
else:
matchzy_gg_threshold = 0.8 # standard (80%)
else:
matchzy_gg_enabled = 0 # Default: disabled
Rule 5: FFW System¶
if connection_type == "lan":
matchzy_ffw_enabled = 0 # LAN has no connection issues
elif match_type in ["official_tournament", "ranked", "fast_tournament"]:
matchzy_ffw_enabled = 1
if match_type == "fast_tournament":
matchzy_ffw_time = 120 # 2 minutes
elif match_type == "ranked":
matchzy_ffw_time = 180 # 3 minutes
else:
matchzy_ffw_time = 240 # 4 minutes (default)
else:
matchzy_ffw_enabled = 0 # Casual: no FFW
Step 3: Special Cases¶
High-Stakes Official Match¶
config = {
"matchzy_autoready_enabled": 0, # Manual ready
"matchzy_both_teams_unpause_required": 1,
"matchzy_max_pauses_per_team": 2,
"matchzy_pause_duration": 300,
"matchzy_side_selection_time": 60,
"matchzy_gg_enabled": 0, # NO forfeits
"matchzy_ffw_enabled": 1,
"matchzy_ffw_time": 300 # 5 min (lenient)
}
Speed Run / Time Trial¶
config = {
"matchzy_autoready_enabled": 1, # Instant start
"matchzy_max_pauses_per_team": 0, # No pauses allowed
"matchzy_pause_duration": 0,
"matchzy_side_selection_time": 15, # Very fast
"matchzy_gg_enabled": 0,
"matchzy_ffw_enabled": 0
}
Configuration Matrix¶
| Feature | Official | Fast | Ranked | Scrim | Default |
|---|---|---|---|---|---|
| Auto-Ready | ❌ 0 |
✅ 1 |
❌ 0 |
✅ 1 |
❌ 0 |
| Both Teams Unpause | ✅ 1 |
✅ 1 |
✅ 1 |
❌ 0 |
✅ 1 |
| Max Pauses/Team | 2 |
1 |
2 |
0 |
0 |
| Pause Duration | 300 |
180 |
300 |
0 |
0 |
| Side Selection Time | 60 |
30 |
45 |
60 |
60 |
| .gg Enabled | ❌ 0 |
❌ 0 |
✅ 1 |
✅ 1 |
❌ 0 |
| .gg Threshold | N/A | N/A | 0.8 |
0.6 |
0.8 |
| FFW Enabled | ✅ 1 |
✅ 1 |
✅ 1 |
❌ 0 |
❌ 0 |
| FFW Time | 240 |
120 |
180 |
N/A | 240 |
Quick Decision Checklist¶
✅ Enable Auto-Ready When:¶
- Match is scheduled (players expected on time)
- Fast-paced tournament format
- Minimal warmup needed
- Practice/scrim environment
✅ Limit Pauses When:¶
- Official tournament (prevents abuse)
- Fast-paced format (minimize delays)
- Competitive/ranked play
✅ Enable .gg When:¶
- Ranked/matchmaking (allow surrenders)
- Practice/scrims (quick exits)
- Unranked tournaments
❌ Disable .gg When:¶
- Official tournaments (no forfeits allowed)
- High-stakes matches
- Any match where every round matters
✅ Enable FFW When:¶
- Online matches (connection issues expected)
- Automated platforms (handle abandons)
- Tournament with walkover rules
❌ Disable FFW When:¶
- LAN tournaments (no connection issues)
- Matches requiring manual admin intervention
- Practice/casual play
Key Principles¶
- Start Conservative: Use default/safe template when uncertain
- Official Matches: Disable forfeits, limit pauses, enable FFW
- Online vs LAN: Always enable FFW for online, disable for LAN
- Fast Formats: Enable auto-ready, shorter timers
- Casual Play: Enable .gg, unlimited pauses, disable FFW
- Backward Compatible: All new convars are optional
Common Mistakes to Avoid¶
❌ DON'T:
- Enable .gg in official tournaments
- Disable FFW for online tournaments
- Set pause limits too low (< 1 per team)
- Set FFW time too short (< 120 seconds)
- Enable auto-ready for first-time players
✅ DO: - Test configurations in scrims first - Communicate rules to players - Monitor and adjust based on feedback - Use default template when uncertain
Backward Compatibility¶
- ✅ All new convars are optional
- ✅ Omitting them uses safe defaults
- ✅ Old match configs work without changes
- ✅ Can be set per-match via JSON
cvarsobject - ✅ Server defaults can be overridden per-match
Complete Default Values Reference¶
{
"matchzy_autoready_enabled": 0,
"matchzy_both_teams_unpause_required": 1,
"matchzy_max_pauses_per_team": 0,
"matchzy_pause_duration": 0,
"matchzy_side_selection_enabled": 1,
"matchzy_side_selection_time": 60,
"matchzy_gg_enabled": 0,
"matchzy_gg_threshold": 0.8,
"matchzy_ffw_enabled": 0,
"matchzy_ffw_time": 240,
"matchzy_demo_recording_enabled": 1
}
Demo Recording Performance¶
Match end restart times based on demo configuration:
| Config | Restart Delay | Use Case |
|---|---|---|
matchzy_demo_recording_enabled "0" |
~10s | Fast simulations |
matchzy_demo_recording_enabled "1"(no upload URL) |
~25-35s | Local demos only |
matchzy_demo_recording_enabled "1"(upload URL set) |
~60-90s | Full upload |
Tip: For automated tournaments with simulations or when demos aren't needed, disable recording for 6-9x faster match turnaround.
Default Behavior Summary¶
| ConVar | Default | Meaning |
|---|---|---|
matchzy_autoready_enabled |
0 |
Players must manually .ready |
matchzy_both_teams_unpause_required |
1 |
Both teams must .unpause |
matchzy_max_pauses_per_team |
0 |
Unlimited pauses |
matchzy_pause_duration |
0 |
No pause time limit |
matchzy_side_selection_enabled |
1 |
Timer enabled after knife |
matchzy_side_selection_time |
60 |
60 seconds to choose side |
matchzy_gg_enabled |
0 |
.gg command disabled |
matchzy_gg_threshold |
0.8 |
80% team vote (if enabled) |
matchzy_ffw_enabled |
0 |
No automatic forfeit |
matchzy_ffw_time |
240 |
4 minutes (if enabled) |
Integration Example (Python)¶
def generate_match_config(match_type, is_online=True):
"""
Generate MatchZy Enhanced configuration based on match type.
Args:
match_type: "official", "fast", "ranked", or "scrim"
is_online: True for online matches, False for LAN
Returns:
dict: Match configuration with cvars
"""
# Base configuration (defaults)
config = {
"matchid": f"{match_type}_{generate_match_id()}",
"cvars": {
"matchzy_autoready_enabled": 0,
"matchzy_both_teams_unpause_required": 1,
"matchzy_max_pauses_per_team": 0,
"matchzy_pause_duration": 0,
"matchzy_side_selection_enabled": 1,
"matchzy_side_selection_time": 60,
"matchzy_gg_enabled": 0,
"matchzy_gg_threshold": 0.8,
"matchzy_ffw_enabled": 0,
"matchzy_ffw_time": 240
}
}
# Apply match type specific settings
if match_type == "official":
config["cvars"].update({
"matchzy_autoready_enabled": 0,
"matchzy_max_pauses_per_team": 2,
"matchzy_pause_duration": 300,
"matchzy_side_selection_time": 60,
"matchzy_gg_enabled": 0,
"matchzy_ffw_enabled": 1 if is_online else 0,
"matchzy_ffw_time": 240
})
elif match_type == "fast":
config["cvars"].update({
"matchzy_autoready_enabled": 1,
"matchzy_max_pauses_per_team": 1,
"matchzy_pause_duration": 180,
"matchzy_side_selection_time": 30,
"matchzy_gg_enabled": 0,
"matchzy_ffw_enabled": 1 if is_online else 0,
"matchzy_ffw_time": 120
})
elif match_type == "ranked":
config["cvars"].update({
"matchzy_autoready_enabled": 0,
"matchzy_max_pauses_per_team": 2,
"matchzy_pause_duration": 300,
"matchzy_side_selection_time": 45,
"matchzy_gg_enabled": 1,
"matchzy_gg_threshold": 0.8,
"matchzy_ffw_enabled": 1 if is_online else 0,
"matchzy_ffw_time": 180
})
elif match_type == "scrim":
config["cvars"].update({
"matchzy_autoready_enabled": 1,
"matchzy_both_teams_unpause_required": 0,
"matchzy_max_pauses_per_team": 0,
"matchzy_pause_duration": 0,
"matchzy_gg_enabled": 1,
"matchzy_gg_threshold": 0.6,
"matchzy_ffw_enabled": 0
})
return config
# Usage examples
official_match = generate_match_config("official", is_online=True)
fast_match = generate_match_config("fast", is_online=True)
scrim_match = generate_match_config("scrim", is_online=False)
LLM System Prompt Suggestion¶
You are configuring CS2 matches using MatchZy Enhanced v1.3.0. When creating match configurations:
1. ALWAYS start with defaults (safe values)
2. For official tournaments: Disable .gg, limit pauses (2 per team, 300s), enable FFW if online
3. For fast tournaments: Enable auto-ready, reduce timers (30s side selection, 1 pause, 180s limit)
4. For ranked: Enable .gg (0.8 threshold), limit pauses, enable FFW
5. For scrims: Enable auto-ready and .gg (0.6 threshold), unlimited pauses
6. NEVER enable .gg in official tournaments
7. ALWAYS enable FFW for online matches (except scrims)
8. NEVER enable FFW for LAN matches
Default values:
- matchzy_autoready_enabled: 0 (manual ready)
- matchzy_max_pauses_per_team: 0 (unlimited)
- matchzy_pause_duration: 0 (unlimited)
- matchzy_gg_enabled: 0 (disabled)
- matchzy_ffw_enabled: 0 (disabled)
When uncertain, use Template 5 (Default/Safe Configuration).
Quick Reference Card¶
┌─────────────────────────────────────────────────────────────┐
│ MatchZy Enhanced v1.3.0 - Quick Reference │
├─────────────────────────────────────────────────────────────┤
│ AUTO-READY (default: 0) │
│ 0 = Manual ready | 1 = Auto-ready on join │
├─────────────────────────────────────────────────────────────┤
│ PAUSES (defaults: 1, 0, 0) │
│ both_teams: 0=single 1=both │
│ max_per_team: 0=unlimited, 1-999=limit │
│ duration: 0=unlimited, seconds=timeout │
├─────────────────────────────────────────────────────────────┤
│ SIDE SELECTION (defaults: 1, 60) │
│ enabled: 0=no timer 1=timer │
│ time: seconds before random pick │
├─────────────────────────────────────────────────────────────┤
│ .GG FORFEIT (defaults: 0, 0.8) │
│ enabled: 0=disabled 1=enabled │
│ threshold: 0.0-1.0 (% of team) │
├─────────────────────────────────────────────────────────────┤
│ FFW WALKOVER (defaults: 0, 240) │
│ enabled: 0=disabled 1=enabled │
│ time: seconds before forfeit │
└─────────────────────────────────────────────────────────────┘
TEMPLATES:
Official: Strict rules, no .gg, 2 pauses, FFW enabled
Fast: Auto-ready, 1 pause, short timers, FFW enabled
Ranked: Allow .gg, 2 pauses, FFW enabled
Scrim: Relaxed, .gg easy, unlimited pauses, no FFW
Default: All defaults (safest)
Version History¶
- v1.3.0 (2026-01-19): Initial release of enhanced features
- Added 10 new configuration variables
- All features disabled/unlimited by default for safety
- Full backward compatibility maintained
Last Updated: January 19, 2026
Plugin Version: MatchZy Enhanced v1.3.0
For Questions: GitHub Issues