# ezQuake Manual: Match tools

This feature and manual page has been inherited from the FuhQuake client made by A Nourai aka 'fuh' (#fuhquake on Quakenet irc).

## Introduction

This file documents the match tools available in the client. A summary of the match tools available are:

- Auto demo recording (on compatible servers).
- Auto console logging.
- Auto screenshot taking of final scoreboard.
- Customising the names of all the above.

## Auto Demo Recording

### Compatabile Servers

Auto recording only works on compatible servers. Kteams, and ktpro server are all compatible. OZTF (v1.45 and above) servers also work when in clan mode.

### Variables

match_auto_record (Default: "0")
  When set to 1 or 2, a temp demo will automatically be recorded when a match starts (usually when the countdown starts). match_auto_record 2 automatically saves the demo after the match is completed. 'match_auto_record 1' requires manual saving (see the "match_save" command below).
match_auto_minlength (Default: "30")
  When using 'match_auto_record 2', temp demo's auto recorded won't be saved automatically if they are shorter than the number of seconds 'match_auto_minlength' is set to. If a temp demo is too short to autosave, you can still save it manually with "match_save" (see below).
match_auto_spectating (Default: "0")
  When set to 1, auto recording will also occur when in spectator mode.
demo_dir (Default: "")
  This is the default location easy recorded and saved auto recorded demos will be saved to. It is relative to your basedir. If it is "" then the demos will be saved to your current gamedir (default qw behaviour). It's recommended setting this to something like "qw/demos/recording" to have your demos put into c:\quake\qw\demos\recording . Note that this only affects easy recorded demos and saved auto recorded demos. It does not affect demos recorded with "record" (these go into your gamedir).

### Commands

match_save
  If you are using 'match_auto_record 1' then a temp demo will be recorded to c:\quake\ezquake\temp\_!_temp_!_.qwd each time a map starts. This temp demo will be overwritten when the next match starts. If you want to keep the temp demo, use the "match_save" command. This will move the demo to the same folder and filename that easyrecord would have used.
match_forcestart
  Simulates the start of a match (so that auto recording etc is triggered). Useful if you join a ktpro server after countdown has started, or you are playing a mode that doesn't have a proper countdown (eg race mode). Most importantly this is useful for tf servers, since you can use a msg_trigger to execute match_forcestart on "MATCH BEGINS NOW".

### Command Line Parameters

-democache <size in KB>
  If you specify a democache size on the command line, then the client will record demos to memory instead of to disl. When the demo is completed, the client will then copy the demo from memory to disk. This can reduce hard disk activity and result in more smooth gameplay when recording for many people, but not everyone. Don't use it if it gives you problems. You should specify a -democache size slightly bigger than than the size of demos you usually record. Ex, if most of your qwd recorded demos are 15mb in size, "-democache 20000" is good. Don't make the democache too big unless you have the RAM for it. Important: If the democache space runs out (because your demo is too big for it), you will get a big lag while the client empties some of the democache to disk. Important: When using -democache and demo recording finishes, there can be a long pause while the demo is copied from memory to disk. The bigger the demo, the longer the pause.

### Important Notes

Demo recording starts whenever the "status" serverinfo key changes from "standby" to something other than "standby". On KT servers this happens when the countdown begins.

Auto recording stops in the following situations:

- The "status" serverinfo key changes from something other than "standby" to "standby" (eg. people vote to break during countdown).
- 4 seconds after the final match scoreboard is displayed.
- You type "stop" to stop recording.
- You "disconnect" from the server (includes connecting to another server, starting demo playback, etc).
- A new map starts on the server.

If you are using "match_auto_record 1" then after an auto recorded demo has completed (it will tell you), you can use "match_save" to save the demo. The demo will be saved to the same name easyrecord would use (you can customise this name...see the MATCH NAME section below).

If you are using "match_auto_record 2", auto recorded demos will automatically be saved unless the length of the demo is less than the number of seconds in the match_auto_minlength variable. If they are too short to be auto saved, the client will say "Autorecording cancelled." but you can still manually save the demo with "match_save".

## Auto Console Logging

### Variables

match_auto_logconsole (Default: "0")
  When set to 1 or 2, a temp console log will automatically be created when a match starts (usually when the countdown starts). match_auto_logconsole 2 automatically saves the console log after the match is completed. 'match_auto_logconsole 1' requires manual saving (see the "match_save" command above).

### Important Notes

The client can log your console to a .log file automatically when a match begins. This is useful if you have a stats program that generates stats from logs. It works exactly the same as auto demo recording except "match_auto_logconsole" is used instead of "match_auto_record" and "log_dir" is used instead of "demo_dir". "match_save", "match_auto_minlength" and "match_auto_spectating" still apply.

If you use 'match_auto_logconsole 1' and 'match_auto_record 1' then "match_save" will save both the log and the demo for the match.

If you use 'match_auto_logconsole 1' and 'match_auto_record 2' then "match_save" will only save the log for the match, and the demo should be saved automatically.

It's all common sense.

Note, the "log_readable" variable may be useful here. Setting it to 1 will make the console logging convert all non-printable characters to printable equivalents.

## Scoreboard Screenshot Taking

### Variables

match_auto_sshot (Default: "0")
  Set to 1 to automatically take a screenshot of the final scoreboard when a match ends. If your console is down or you are in the menus, then the client will remove the console/menu for a split second so it can take a screenshot of the scoreboard without any interference.
sshot_dir (Default: "")
  This is the default location screenshots will be saved to. It is relative to your basedir. If it is "" then the demos will be saved to your current gamedir (default qw behaviour). It's recommended setting this to something like "qw/sshots" to have your screenshots put into c:\quake\qw\sshots . Note that this affects all screenshots, those taken with the "screenshot" command, and those automatically taken with 'match_auto_sshot 1'.
sshot_format (Default: "tga" for GL, "pcx" for software)
  This defines the image format of screenshots. Software client version can only use "pcx" and "png". OpenGL client version can use "tga", "png" or "jpg" (recommended). Note that if you specify an extension in the fiilename given to the 'screenshot' command, that image type is used regardless of 'sshot_format'. Ex. "screenshot blah.jpg" will take a screenshot in jpg format (GL only) regardless of sshot_format. But "screenshot blah" would use the format set by 'sshot_format'.
sshot_applyGamma (Default: "1")
  If set to 1, your gamma/contrast settings will be applied to all screenshots taken.

### Important Notes

The client can automatically take a screenshot of your scoreboard if you set 'match_auto_sshot' to 1. Unlike auto recording and auto console logging, there is no way to take a 'temp' screenshot of the final scoreboard and manually save it. In essence, the screenshot taken with 'match_auto_sshot 1' is automatically saved.

The name of the screenshot taken by 'match_auto_sshot 1' is the same name easyrecord would use (with the proper extension, eg ".tga", ".pcx", etc). You can customise this name (see the matchname section below).

Ex. If you have "sshot_dir qw/sshots" then a 4on4 screenshot would be put into "c:/quake/qw/sshots/4on4/[clan]quaker - [4on4_myclan_vs_someclan] - [dm3].tga" assuming your base quake dir is c:/quake and you haven't customised the 'match_format_4on4' variable (see section 4 below).

## The Match Name

Each match has a customisable name that is used for easyrecord, saved auto recordings, saved auto screenshots, saved auto logging and so on. There is also a macro called $matchname which you can use to get the name of the match manually (echo $matchname).

For example, a matchname might be "[clan]quaker - [4on4_myclan_vs_someclan] - [dm3]" or whatever.

### Match Types

Matches are sorted into different categories. The following lists the supported categories. If you think there should be more, please let us know.

The criteria for each category is roughly summarised in brackets.

duel
  (gamedir = "qw", 2 players)
ffa
  (gamedir = "qw", more than 2 players, teamplay off)
race
  (gamedir = qw, serverinfo "race" key present and equal to mapname)
2on2
  (gamedir = "qw", 2 teams with at least 1 team having 2 people)
3on3
  (gamedir = "qw", 2 teams with at least 1 team having 3 people)
4on4
  (gamedir = "qw", 2 teams with at least 1 team having 4 people)
tdm
  (gamedir = "qw", 2 teams, 1 team having at least 5 people)
multiteam
  (gamedir = "qw", 3 or more teams)
arena
  (gamedir = "arena")
carena
  (gamedir = "carena")
tf_duel
  (gamedir = "fortress", 2 players)
tf_clanwar
  (gamedir = "fortress", at least 2 teams)
solo
  (any gamedir, 1 player on a server, not in race mode)
coop
  (gamedir = "qw", at least 2 people, deathmatch is off)

Notes: The race category is basically for ktpro race mode.

### Customising Match Names

Each match category has a name format variable associated with it. This variable is called match_format_<category> .

For example, there is match_format_duel, match_format_2on2, etc, etc.

All these variables can contain macro's that are expanded according to the macro list given below. You can also use the "match_format_macrolist" command inside the client to display a list of the macros and their meaning.

### Macros

The square brackets apply when spectating.

Note that your nick is the same as your name unless you set a nick with match_name_nick. This is useful if you use lots of different names, but only want a certain name to be used in %n.

You can use the "match_format_macrolist" in a game to see this list of macros.

macro | replacement
%n | your nick [your nick followed by "(SPEC)"]
%p | your name [player1's name]
%t | your team [team1's name]
%e | enemy nick in duels, enemy team in tp [player2/team2]
%k | names of players on your team [team1] (separated by match_name_and)
%l | names of players on enemy team [team2] (separated by match_name_and)
%O | number of teammates [number on team1]
%E | number of enemies [number on team2]
%C | number of players on the server
%a | team counts separated by match_name_on (eg 4on3on4)
%b | team names separated by match_name_versus (eg sr _vs_ cmf _vs_ fs)
%v | shortcut for whatever is in match_name_versus
%T | timelimit on the server
%F | fraglimit n the server
%N | teamplay setting on the server
%D | deathmatch mode on the server
%M | mapname
%G | gamedir (eg. qw, fortress, arena, etc)
%d | day
%m | month
%y | year without century (Ex. 03)
%Y | year with century (Ex. 2003)

### Commands

match_format_macrolist
  Prints list of match format macros and their use. Useful if you forget a certain macro in game, and can't be bothered opening this doc.

### Variables

match_name_and (Default: "_&_")
  Used for separating names in %k and %l
match_name_versus (Default: "_vs_")
  Used for separating names in %b
match_name_on (Default: "on")
  Used for separating numbers in %a
match_name_nick (Default: "")
  %n uses this if its not "", otherwise it uses your in game name.
match_name_spec (Default: "(SPEC)")
  This is placed after your nick when using %n and are in spec mode. Eg. if you use "match_name_nick foo" and leave match_name_spec default, then %n will be "foo(SPEC)" in spec mode and "foo" when not in spec mode.

variable | Default value
match_format_solo | "solo/%n - [%M]"
match_format_coop | "coop/%n - [%C_player_coop] - [%M]"
match_format_duel | "duel/%n - %p%v%e - [dmm%D] - [%M]"
match_format_ffa | "ffa/%n - [%C_player_ffa] - [%M]"
match_format_race | "race/%n - [race] - [%M]"
match_format_2on2 | "2on2/%n - [%k%v%l] - [%M]"
match_format_3on3 | "tdm/%n - [%Oon%E_%t%v%e] - [%M]"
match_format_4on4 | "tdm/%n - [%Oon%E_%t%v%e] - [%M]"
match_format_tdm | "tdm/%n - [%Oon%E_%t%v%e] - [%M]"
match_format_multiteam | "tdm/%n - [%a_%b] - [%M]"
match_format_arena | "arena/%n - %p%v%e - [%F_frags] - [%M]"
match_format_carena | "carena/%n - [%a_%b] - [%M]"
match_format_tf_duel | "tfduel/%n - %p%v%e [%M]"
match_format_tf_clanwar | "tfwar/%n - [%Oon%E_%t%v%e] - [%M]"

### Macros

$matchname
  works out "match_format_<bleh>" with all macros etc expanded. <bleh> is the match category.

## FAQ

Q1. Why are my auto recording/logging/screenshots not working in spec mode?
  A1. You need "match_auto_spectating 1" for them to work when spectating.
Q2. Is it possible to auto record only 4on4's and not duels (etc) ?
  A2. Not really. The only solution here is to temp record and manually save the 4on4 demos with the match_save command.
Q3. How do I auto record in teamfortress ?
  A3. If you are playing teamfortress 2.9 or earlier (including MTF, CuTF which are based on tf 2.5) then you need to use 'match_auto_record 1' and the following msg_trigger: alias tfstart "match_forcestart" msg_trigger tfstart "MATCH BEGINS NOW" The above msg_trigger will also work for all versions of OZTF. However in OZTF 1.45 and above you don't *need* the msg_trigger since it will automatically start recording when the OZTF countdown begins (in clan mode). Of course you will need 'match_auto_record 1' for this. If you have the msg_trigger above in OZTF 1.45, a demo will begin recording when the countdown starts, and then restart again when the countdown ends and "MATCH BEGINS NOW" is printed. This is perfectly fine. But if you only play on OZTF 1.45 servers and above, you can just not use the msg_trigger.
Q4. How is 'match_auto_sshot 1' any different from "alias f_mapend screenshot $matchname" ?
  A4. Well the main difference is that if your console is pulled down or you are in the quake menus when the match ends, 'match_auto_sshot 1' will automatically remove the console/menu for 1 frame so it can take a screenshot of the scoreboard without any interference. On a minor note, when using the screenshot command in the f_mapend alias (which is automatically executed when a match ends), it is important to put a wait in first, eg alias f_mapend "wait; screenshot <name>". Without the wait, the screenshot probably won't contain the scoreboard when playing OpenGL fullscreen. You don't need to worry about this if you are using 'match_auto_sshot 1'.
Q5. Is it possible to automatically compress my demos?
  A5. There was no time to put this feature into the client yet. However future versions of the client will allow you to compress your demos using qizmo .qwz compression and/or .zip compression. There will also be an option for converting demos to .mvd format. There will also be an option to zip demos and screenshots together into a single zip. I plan a menu where you will be able to browse a list of demos inside these zip files, with a thumbnail of the scoreboard screenshot next to each demo.

Last update: 31.12.1969 16:00 PST, made by JohnNy_cz