<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.splashdamage.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=192.168.0.152&amp;*</id>
	<title>Mod Wiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.splashdamage.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=192.168.0.152&amp;*"/>
	<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php/Special:Contributions/192.168.0.152"/>
	<updated>2026-06-10T04:33:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars_Competition_Mod_Guide&amp;diff=4112</id>
		<title>Enemy Territory: QUAKE Wars Competition Mod Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars_Competition_Mod_Guide&amp;diff=4112"/>
		<updated>2008-02-05T15:04:35Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.152: /* Auto Demo Recording and Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Enemy Territory: QUAKE Wars Competition Mod allows tournament organizers to easily implement and enforce specific rule-sets and enhances other competition related features of the game, such as ETQW:TV. It does this by providing additional Cvars and commands to both the players and server admins.&lt;br /&gt;
&lt;br /&gt;
This is a brief guide explaining some of those Cvars and commands and providing examples where necessary.&lt;br /&gt;
&lt;br /&gt;
==Weapon and Upgrade Unlocks==&lt;br /&gt;
&lt;br /&gt;
Some weapons and proficiency upgrades can be unlocked for all players from the match start in Competition Mod, despite proficiency being turned off. Setting the following Cvars to 1 will unlock these weapons and upgrades.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_unlockGrenadeLauncher}} – unlocks the Grenade/Plasma Launcher for the Engineer/Constructor&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_unlockScopedRifle}} – unlocks the Scoped Assault Rifle/Accurised Lacerator for the Field Ops/Oppressor&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_unlockExtraClip}} – unlocks extra ammo for all player classes&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_unlockFasterSprint}} – unlocks faster movement speed for all player classes&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_unlockWeaponSpread}} – unlocks reduced weapon spread for all weapons&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Class, Weapon and Deployable Limits==&lt;br /&gt;
&lt;br /&gt;
Competition Mod also allows admins to set restrictions on the number of classes and deployables available to a team, as well as limiting some weapon types. The value placed against any of the following Cvars is the maximum number of that game element allowed. A value of -1 makes means there is no limit.&lt;br /&gt;
&lt;br /&gt;
===Class Limits===&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_maxSoldiers}} – sets the number of GDF Soldiers allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxMedics}} – sets the number of GDF Medics allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxEngineers}} – sets the number of GDF Engineers allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxFieldOps}} – sets the number of GDF Field Ops allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxCovertOps}} – sets the number of GDF Covert Ops allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxAggressors}} – sets the number of Strogg Aggressors allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxTechnicians}} – sets the number of Strogg Technicians allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxConstructors}} – sets the number of Strogg Constructors allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxOppressors}} – sets the number of Strogg Oppressors allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxInfiltrators}} – sets the number of Strogg Infiltrators allowed&lt;br /&gt;
&lt;br /&gt;
===Weapon Limits===&lt;br /&gt;
	&lt;br /&gt;
{{consolecmd|g_maxGPMGs}} – sets the number of GPMGs/Hyperblasters allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxRocketLaunchers}} – sets the number of Rocket Launchers/Obliterators allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxSniperRifles}} – sets the number of Sniper Rifle/Railguns allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxHeavyWeapons}} – limits the total number of GPMGs/Hyperblasters and Rocket Launchers/Obliterators allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxGrenadeLaunchers}} – sets the number of Grenade/Plasma Launchers allowed per team&lt;br /&gt;
&lt;br /&gt;
===Engineer/Constructor Turrets===&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_maxAITs}} – sets the number of Artillery Interceptor Turrets allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxAPTs}} – sets the number of Anti-Personnel Turrets allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxAVTs}} – sets the number of Anti-vehicle Turrets allowed per team&lt;br /&gt;
&lt;br /&gt;
===Field Ops/Oppressor Artillery===&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_maxArtillery}} – sets the number of Artillery/Rail Howitzers allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxHammers}} – sets the number of Hammers/Dark Matter Cannons allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxRocketArtillery}} – sets the number of Rocket Artillery/Plasma Mortars allowed per team&lt;br /&gt;
&lt;br /&gt;
===Covert Ops/Infiltrator Radar===&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_maxRadars}} – sets the number of Radars/Psi-Radars allowed per team&lt;br /&gt;
&lt;br /&gt;
===Mines===&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_maxMines}} – sets the total number of mines a team is allowed to have deployed at any one time&lt;br /&gt;
&lt;br /&gt;
===Example Server Config===&lt;br /&gt;
&lt;br /&gt;
This is an example of a server config file limiting deployables, weapons, class, and mines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
// **************************************************************&lt;br /&gt;
// *******                                               ********&lt;br /&gt;
// *******  Example class, dep and weapon limits config  ********&lt;br /&gt;
// *******                                               ********&lt;br /&gt;
// **************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Turret restrictions&lt;br /&gt;
&lt;br /&gt;
set g_maxAITs 1			// Allows 1 Artillery Interceptor Turret per team&lt;br /&gt;
set g_maxAPTs 1			// Allows 1 Anti-Personnel Turret per team&lt;br /&gt;
set g_maxAVTs 1			// Allows 1 Anti-Vehicle Turret per team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Artillery Restrictions&lt;br /&gt;
&lt;br /&gt;
set g_maxArtillery 1		// Allows 1 Artillery or Rail Howitzer per team&lt;br /&gt;
set g_maxRocketArtillery 1	// Allows 1 Rocket Artillery or Plasma Mortar per team&lt;br /&gt;
set g_maxHammers 1		// Allows 1 Hammer or Dark Matter Cannon per team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Weapon Restrictions&lt;br /&gt;
&lt;br /&gt;
set g_maxRocketLaunchers 1	// Allows 1 Rocket Launcer or Obliterator per team&lt;br /&gt;
set g_maxGPMGs 2		// Allows 2 GPMGs or Hyperblasters per team&lt;br /&gt;
set g_maxGrenadeLaunchers -1  	// Allows unlimited Grenade Launchers per team if the Grenade Launcher is available&lt;br /&gt;
set g_maxHeavyWeapons -1	// Set no limit to Heavy Weapons&lt;br /&gt;
set g_maxSniperRifles 1		// Allows 1 Sniper Rifle or Rail Gun per team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Mine Limit&lt;br /&gt;
&lt;br /&gt;
set g_maxMines 8		// Allows each team to only have a maximum 8 mines deployed at one time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Radar Limit&lt;br /&gt;
&lt;br /&gt;
set g_maxRadars 1		// Allows each team to deploy only 1 Radar at a time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Strogg Class Limits&lt;br /&gt;
&lt;br /&gt;
set g_maxAggressors 2		// Limits Strogg to 2 Aggressors at any one time&lt;br /&gt;
set g_maxTechnicians 2		// Limits Strogg to 2 Technicians at any one time&lt;br /&gt;
set g_maxConstructors 3		// Limits Strogg to 3 Constructors at any one time&lt;br /&gt;
set g_maxOppressors 2		// Limits Strogg to 2 Oppressors at any one time&lt;br /&gt;
set g_maxInfiltrators 2		// Limits Strogg to 2 Infiltrators at any one time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GDF Class Limits&lt;br /&gt;
&lt;br /&gt;
set g_maxSoldiers 2		// Limits GDF to 2 Soldiers at any one time&lt;br /&gt;
set g_maxMedics 2 		// Limits GDF to 2 Medics at any one time&lt;br /&gt;
set g_maxEngineers 2		// Limits GDF to 2 Engineers at any one time&lt;br /&gt;
set g_maxFieldOps 4		// Limits GDF to 4 Field Ops at any one time&lt;br /&gt;
set g_maxCovertOps 1		// Limits GDF to 1 Covert Op at any one time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pausing and Time Outs==&lt;br /&gt;
&lt;br /&gt;
Further support has been added for pausing matches as well as a new Team Timeout feature. Any player on either team can call a time out at any time during a game (if allowed on the server), this will pause the game for a set amount of time before counting the game back in and restarting it. Related Cvars and Commands are listed below.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|admin pause}} – Command to pause a game indefinitely&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|admin unpause}} – Command to un-pause a game&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_unpauseTimer}} – Sets the duration, in seconds, of the match restart countdown that plays after a pause or time out has ended&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxTeamTimeouts}} –  Determines how many timeouts a team can use per match, value of -1 turns timeouts off&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_teamTimeoutLength}} – Sets the duration, in minutes, a timeout will last&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|callTimeout}} – Command used to start a timeout, any player is able to call a time out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Spectating and 'Spec Labels'==&lt;br /&gt;
&lt;br /&gt;
With Competition Mod spectators are now able to view players in free fly mode with much greater control and feedback. Support is added for pre-set cameras, binding hot keys for viewing specific clients and for clicking on individual players to jump into their first person perspective. In addition labels can now be added to players when spectating, allowing much easier identification of individuals. These spec labels are customized via client side Cvars.&lt;br /&gt;
&lt;br /&gt;
===Spectate Position===&lt;br /&gt;
&lt;br /&gt;
This command allows the user to jump to a specific point on the map, looking in a pre-set direction, essentially jumping to user defined camera. The command is set in the following format:&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|Spectate Position &amp;lt;x&amp;gt; &amp;lt;y&amp;gt; &amp;lt;z&amp;gt; &amp;lt;yaw&amp;gt; &amp;lt;pitch&amp;gt; &amp;lt;roll&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Here X, Y and Z are the coordinates at which the camera will be placed, Yaw, Pitch and Roll set the direction in which it will be looking. The easiest way to obtain these values is to start ETQW, launch Play Computer, fly to the position at which you'd like the camera to be placed and then use the command 'getviewpos'. This will capture the coordinates for your current point of view to the clipboard and you can use these for your camera. You will need net_allowcheats to be set to 1 to be able to use the getviewpos command.&lt;br /&gt;
&lt;br /&gt;
Obviously this is not very easy to do on the fly so it is best to make a series of binds for each map and then store them in a config file. An example of a bind for a ready made camera for the map Valley is:&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|bind k &amp;quot;spectate position 9044.66 -4553.08 1891.27 24.87 -334.34 0.00&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
===Other spectate commands===&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|Spectate Client}} - Jumps to spectating a specific player based on the client number or the player name entered e.g. &amp;quot;Specate Client 1&amp;quot; or &amp;quot;Spectate Client Tapir&amp;quot; for a player called Tapir&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|Spectate next}} – Jumps to the next player&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|Spectate prev}} – Jumps to the previous player&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|Spectate objective}} – Jumps to a player currently attempting to complete the objective or jumps to view a planted HE/Plasma charge (only works on Primary Objectives)&lt;br /&gt;
&lt;br /&gt;
Pressing the use key ({{consolecmd|_activate}}) whilst a player is under the spectators crosshair will now jump to that players point of view, allowing for more fluid transitions between first person and free fly mode &lt;br /&gt;
&lt;br /&gt;
===Example spectator config===&lt;br /&gt;
&lt;br /&gt;
This is an example of a client config file set up to jump to specific clients, map locations, and objectives.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
// **********************************&lt;br /&gt;
// *******                   ********&lt;br /&gt;
// *******  Specator Config  ********&lt;br /&gt;
// *******                   ********&lt;br /&gt;
// **********************************&lt;br /&gt;
&lt;br /&gt;
// Number keys are bound to specific clients based on client number (ignores clients that are also spectating)&lt;br /&gt;
&lt;br /&gt;
bind  1		&amp;quot;spectate client 1&amp;quot;					&lt;br /&gt;
bind  2		&amp;quot;spectate client 2&amp;quot;&lt;br /&gt;
bind  3		&amp;quot;spectate client 3&amp;quot;&lt;br /&gt;
bind  4		&amp;quot;spectate client 4&amp;quot;&lt;br /&gt;
bind  5		&amp;quot;spectate client 5&amp;quot;&lt;br /&gt;
bind  6		&amp;quot;spectate client 6&amp;quot;		&lt;br /&gt;
bind  7		&amp;quot;spectate client 7&amp;quot;	&lt;br /&gt;
bind  8		&amp;quot;spectate client 8&amp;quot;&lt;br /&gt;
bind  9		&amp;quot;spectate client 9&amp;quot;&lt;br /&gt;
bind  0		&amp;quot;spectate client 10&amp;quot;&lt;br /&gt;
bind  -		&amp;quot;spectate client 11&amp;quot;&lt;br /&gt;
bind  =		&amp;quot;spectate client 12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Keys bound to specific clients based on the player's name&lt;br /&gt;
&lt;br /&gt;
bind  q		&amp;quot;spectate client AO&amp;quot;					&lt;br /&gt;
bind  w		&amp;quot;spectate client 'Bongo Boy'&amp;quot;&lt;br /&gt;
bind  e		&amp;quot;spectate client ducks&amp;quot;&lt;br /&gt;
bind  r		&amp;quot;spectate client Digibob&amp;quot;&lt;br /&gt;
bind  t		&amp;quot;spectate client RR2DO2&amp;quot;&lt;br /&gt;
bind  y		&amp;quot;spectate client Wils&amp;quot;		&lt;br /&gt;
bind  u		&amp;quot;spectate client MoP&amp;quot;	&lt;br /&gt;
bind  i		&amp;quot;spectate client Anti&amp;quot;&lt;br /&gt;
bind  o		&amp;quot;spectate client Smooth&amp;quot;&lt;br /&gt;
bind  p		&amp;quot;spectate client Jose&amp;quot;&lt;br /&gt;
bind  [		&amp;quot;spectate client Huntle&amp;quot;&lt;br /&gt;
bind  ]		&amp;quot;spectate client JFK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Keys bound to toggle through clients&lt;br /&gt;
&lt;br /&gt;
bind rightarrow	&amp;quot;spectate next&amp;quot;&lt;br /&gt;
bind leftarrow	&amp;quot;spectate prev&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Pre-set cameras for Valley&lt;br /&gt;
&lt;br /&gt;
bind kp_end		&amp;quot;spectate position 9044.66 -4553.08 1891.27 24.87 -334.34 0.00&amp;quot;		// Views obj. 1&lt;br /&gt;
bind kp_downarrow	&amp;quot;spectate position 3862.32 1435.13 1879.86 131.09 -353.98 0.00&amp;quot;		// Views Tunnel Spawn&lt;br /&gt;
bind kp_pgdn	&amp;quot;spectate position 1085.68 8092.22 1955.78 274.70 -337.35 0.00&amp;quot;		// Views obj. 2&lt;br /&gt;
bind kp_leftarrow	&amp;quot;spectate position -6847.38 -4325.94 2230.2 244.78 -340.67 0.00&amp;quot;		// Views obj. 3&lt;br /&gt;
bind kp_5		&amp;quot;spectate position -5549.77 -9793.78 1934.23 174.49 -330.27 0.00&amp;quot;		// Views obj. 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Jumps to spectating any player currently achieving the objective&lt;br /&gt;
&lt;br /&gt;
bind a 		&amp;quot;spectate objective&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Spec Labels===&lt;br /&gt;
&lt;br /&gt;
Spec Labels are fully customizable name tags that hover next to players in-world when spectating them to aid a viewers understanding of who they are watching. They are also used to display the amount of time remaining on a planted HE/Plasma charge. The labels are controlled client side and are usable with ETQW:TV. The following Cvars are used for editing spec labels:&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_showPlayerNames}} – cvar used to toggle player spec labels on/off&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_showChargeTimers}} – cvar used to toggle in-world HE/Plasma charge timers on/off&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelAlpha}} – adjusts the alpha of the text on the spec label&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelBackground}} – cvar used to toggle the label background on/off&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelBackgroundColor}} – adjusts the background color of the label, format &amp;quot;&amp;lt;nowiki&amp;gt;&amp;lt;R&amp;gt; &amp;lt;G&amp;gt; &amp;lt;B&amp;gt; &amp;lt;Alpha&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelDropShadow}} – adds or removes drop shadow on the label text&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelMaxDistance}} – adjusts the distance at which spec labels become visible&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelPosition}} – adjusts where a label appears in relation to a player (0 = above, 1 = center, 2 = below)&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelSize}} – adjusts the size of the label&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelShowAll}} - cvar used to show labels even for players that are hidden (eg behind a wall)&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelTeamColors}} - enables the names to be coloured based on the team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelGDFColor}} – adjusts the text color on GDF labels, format &amp;quot;&amp;lt;nowiki&amp;gt;&amp;lt;R&amp;gt; &amp;lt;G&amp;gt; &amp;lt;B&amp;gt; &amp;lt;Alpha&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelStroggColor}} – adjusts the text color on Strogg labels, format &amp;quot;&amp;lt;nowiki&amp;gt;&amp;lt;R&amp;gt; &amp;lt;G&amp;gt; &amp;lt;B&amp;gt; &amp;lt;Alpha&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_showFreeFlyText}} – cvar used to add/remove the 'free fly mode' text that appears in the center of the screen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vampire/Violator Team Charge Bar==&lt;br /&gt;
&lt;br /&gt;
Competition Mod makes it possible to have a shared charge bar on the Vampire/Violator for each team. When turned on this can be used to prevent teams from 'spamming' fire support at the same time or in quick succession.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_teamAirstrikeCost}} - This cvar sets the percentage of the team's charge bar a single air strike will use, set to 100 a single Vampire strike would use the whole charge bar and it would have to fully re-fill before another Vampire could be used. Set to 50 a single Vampire being thrown would cause the charge bar to re-fill from half way, halving the time before another strike could be made. If the cvar is set to -1 then no shared team charge bar is set.&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_teamAirstrikeRechargeTime}} – Sets the time in seconds it takes for the whole charge bar to re-fill&lt;br /&gt;
&lt;br /&gt;
==Signed Configs==&lt;br /&gt;
&lt;br /&gt;
Support is also available for checking configs between the client and the server, this allows players to ensure that the config that is being run on the server is the correct one. For example if the server is supposed to be running OfficialComp.cfg for a tournament players would be able to download it to their own machine and then check it against the server's version, comparing checksums to see if they are the same. The following commands are used to compare configs, in each case the name of the config to check is entered after the command.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|getConfigChecksum}} - generates a checksum for a config stored on the client and prints it to the player requesting it&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|getServerConfigChecksum}} - generates a checksum for a config stored on the server and prints it to the player requesting it&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|admin configChecksum}} - generates a checksum for a config stored on the server and prints it to all players on the server&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|compareConfigs}} - compares a config stored on the client with one on the server and tells the player if they match or not&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|admin compareConfigs}} - compares a config stored on the client with one on the server and tells all players on the server if they match or not &lt;br /&gt;
&lt;br /&gt;
==General Changes==&lt;br /&gt;
&lt;br /&gt;
===Force Limbo Spectate===&lt;br /&gt;
&lt;br /&gt;
These cvars allow server admins to prevent 'gibbed' players from viewing the battlefield from their corpse.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_forceLimboSpectate}} – when set to 1 this forces gibbed players to spectate team mates until they re-spawn, or if all team mates are dead forces them to the limbo menu&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_forceLimboSpectateMenuSticky}} – cvar sets if the limbo menu should automatically close if a player forced to the limbo menu re-spawns&lt;br /&gt;
&lt;br /&gt;
===setSpawnPoint Commands===&lt;br /&gt;
&lt;br /&gt;
Competition Mod provides a series of commands that allow players to select spawn points across the map without having to use the limbo menu. These commands can be bound to keys to allow very fast spawn point selection.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|setSpawnPoint next}} – selects one spawn ahead of the player's current selection&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|setSpawnPoint prev}} – selects one spawn back from the player's current selection&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|setSpawnPoint default}} – selects the current front-line spawn point&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|setSpawnPoint base}} – sets the player's spawn point to the main base (Command Center/Domination Hub)&lt;br /&gt;
&lt;br /&gt;
===Auto Demo Recording and Screenshots===&lt;br /&gt;
&lt;br /&gt;
It is possible for players to auto record their own demo files and generate screenshots of the end game scoreboard using Competition Mod. These files can also be given a customized naming format.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_autoRecordDemos}} – set to 1 this cvar starts demo recording automatically when the match is started &lt;br /&gt;
{{consolecmd|g_autoScreenshot}} – set to 1 this cvar will automatically take a screenshot of the end game scoreboard&lt;br /&gt;
&lt;br /&gt;
Auto recorded demos and auto screenshots can also have a user defined name format applied to them using the cvars {{consolecmd|g_autoDemoNameFormat}} and {{consolecmd|g_autoScreenshotNameFormat}}. These default to the following formats:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;scoreboard_$year$$month$$day$_$hour$$min$$sec$_$map$_$rules$_$name$_build_$srcrev$_$mediarev$.tga&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$year$$month$$day$_$hour$$min$$sec$_$map$_$rules$_$name$_build_$srcrev$_$mediarev$.ndm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These would result in the following file names respectively:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;scoreboard_20080205_103901_maps_sewer_competition_first_Player_build_12095_33034.tga&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;20080205_103617_sewer_competition_first_Player_build_12095_33034.ndm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Separate Vehicle Sensitivity Settings===&lt;br /&gt;
&lt;br /&gt;
In Competition Mod it's possible to adjust mouse sensitivity for specific vehicles, allowing players to have high sensitivity in some vehicles with low sensitivity in others, all without effecting their sensitivity when playing as Infantry. The Cvars used to scale the sensitivity in the various vehicles are listed below. Each vehicle has two sensitivity cvars, one for vertical movement, one for horizontal. To adjust the general sensitivity then the value of both cvars should be the same.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|m_bumblebeePitchScale}} – adjusts the vertical sensitivity in the Bumblebee&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_bumblebeeYawScale}} – adjusts the horizontal sensitivity in the Bumblebee&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_heavyVehiclePitchScale}} – adjusts the vertical sensitivity in the Titan, Cyclops and Desecrator&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_heavyVehicleYawScale}} – adjusts the horizontal sensitivity in the Titan, Cyclops and Desecrator&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_helicopterPitchScale}} – adjusts the vertical sensitivity in the Anansi and Tormentor&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_helicopterYawScale}} – adjusts the horizontal sensitivity in the Anansi and Tormentor&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_lightVehiclePitchScale}} – adjusts the vertical sensitivity in the Trojan, Armadillo, Hog and Husky&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_lightVehicleYawScale}} – adjusts the horizontal sensitivity in the Trojan, Armadillo, Hog and Husky&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_playerPitchScale}} – adjusts the vertical sensitivity as infantry and in the Icarus&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_playerYawScale}} – adjusts the horizontal sensitivity as infantry and in the Icarus&lt;br /&gt;
&lt;br /&gt;
Players are also able to switch yaw and roll between the keyboard and the mouse if they choose to using the cvar {{consolecmd|ui_swapFlightYawAndRoll}}. Setting this to a value of 1 causes the mouse to become the control for yaw and the keys to become the control for roll.&lt;br /&gt;
&lt;br /&gt;
===Look at Killer/Medic===&lt;br /&gt;
&lt;br /&gt;
Normally a dead players point of view will snap to look towards their killer or a nearby medic, this feedback is to help the user understand who just killed them or if they should tap out or not. With Competition Mod the player is now able to turn off this functionality if they choose to.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_lookAtKiller}} – set this to a value of 0 to turn off the camera tracking a killer&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_lookAtMedic}} – set this to a value of 0 to turn off the camera tracking nearby Medics/Technicians&lt;/div&gt;</summary>
		<author><name>192.168.0.152</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars_Competition_Mod_Guide&amp;diff=4111</id>
		<title>Enemy Territory: QUAKE Wars Competition Mod Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars_Competition_Mod_Guide&amp;diff=4111"/>
		<updated>2008-02-05T15:02:22Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.152: /* Spec Labels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Enemy Territory: QUAKE Wars Competition Mod allows tournament organizers to easily implement and enforce specific rule-sets and enhances other competition related features of the game, such as ETQW:TV. It does this by providing additional Cvars and commands to both the players and server admins.&lt;br /&gt;
&lt;br /&gt;
This is a brief guide explaining some of those Cvars and commands and providing examples where necessary.&lt;br /&gt;
&lt;br /&gt;
==Weapon and Upgrade Unlocks==&lt;br /&gt;
&lt;br /&gt;
Some weapons and proficiency upgrades can be unlocked for all players from the match start in Competition Mod, despite proficiency being turned off. Setting the following Cvars to 1 will unlock these weapons and upgrades.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_unlockGrenadeLauncher}} – unlocks the Grenade/Plasma Launcher for the Engineer/Constructor&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_unlockScopedRifle}} – unlocks the Scoped Assault Rifle/Accurised Lacerator for the Field Ops/Oppressor&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_unlockExtraClip}} – unlocks extra ammo for all player classes&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_unlockFasterSprint}} – unlocks faster movement speed for all player classes&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_unlockWeaponSpread}} – unlocks reduced weapon spread for all weapons&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Class, Weapon and Deployable Limits==&lt;br /&gt;
&lt;br /&gt;
Competition Mod also allows admins to set restrictions on the number of classes and deployables available to a team, as well as limiting some weapon types. The value placed against any of the following Cvars is the maximum number of that game element allowed. A value of -1 makes means there is no limit.&lt;br /&gt;
&lt;br /&gt;
===Class Limits===&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_maxSoldiers}} – sets the number of GDF Soldiers allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxMedics}} – sets the number of GDF Medics allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxEngineers}} – sets the number of GDF Engineers allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxFieldOps}} – sets the number of GDF Field Ops allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxCovertOps}} – sets the number of GDF Covert Ops allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxAggressors}} – sets the number of Strogg Aggressors allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxTechnicians}} – sets the number of Strogg Technicians allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxConstructors}} – sets the number of Strogg Constructors allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxOppressors}} – sets the number of Strogg Oppressors allowed&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxInfiltrators}} – sets the number of Strogg Infiltrators allowed&lt;br /&gt;
&lt;br /&gt;
===Weapon Limits===&lt;br /&gt;
	&lt;br /&gt;
{{consolecmd|g_maxGPMGs}} – sets the number of GPMGs/Hyperblasters allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxRocketLaunchers}} – sets the number of Rocket Launchers/Obliterators allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxSniperRifles}} – sets the number of Sniper Rifle/Railguns allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxHeavyWeapons}} – limits the total number of GPMGs/Hyperblasters and Rocket Launchers/Obliterators allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxGrenadeLaunchers}} – sets the number of Grenade/Plasma Launchers allowed per team&lt;br /&gt;
&lt;br /&gt;
===Engineer/Constructor Turrets===&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_maxAITs}} – sets the number of Artillery Interceptor Turrets allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxAPTs}} – sets the number of Anti-Personnel Turrets allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxAVTs}} – sets the number of Anti-vehicle Turrets allowed per team&lt;br /&gt;
&lt;br /&gt;
===Field Ops/Oppressor Artillery===&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_maxArtillery}} – sets the number of Artillery/Rail Howitzers allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxHammers}} – sets the number of Hammers/Dark Matter Cannons allowed per team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxRocketArtillery}} – sets the number of Rocket Artillery/Plasma Mortars allowed per team&lt;br /&gt;
&lt;br /&gt;
===Covert Ops/Infiltrator Radar===&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_maxRadars}} – sets the number of Radars/Psi-Radars allowed per team&lt;br /&gt;
&lt;br /&gt;
===Mines===&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_maxMines}} – sets the total number of mines a team is allowed to have deployed at any one time&lt;br /&gt;
&lt;br /&gt;
===Example Server Config===&lt;br /&gt;
&lt;br /&gt;
This is an example of a server config file limiting deployables, weapons, class, and mines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
// **************************************************************&lt;br /&gt;
// *******                                               ********&lt;br /&gt;
// *******  Example class, dep and weapon limits config  ********&lt;br /&gt;
// *******                                               ********&lt;br /&gt;
// **************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Turret restrictions&lt;br /&gt;
&lt;br /&gt;
set g_maxAITs 1			// Allows 1 Artillery Interceptor Turret per team&lt;br /&gt;
set g_maxAPTs 1			// Allows 1 Anti-Personnel Turret per team&lt;br /&gt;
set g_maxAVTs 1			// Allows 1 Anti-Vehicle Turret per team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Artillery Restrictions&lt;br /&gt;
&lt;br /&gt;
set g_maxArtillery 1		// Allows 1 Artillery or Rail Howitzer per team&lt;br /&gt;
set g_maxRocketArtillery 1	// Allows 1 Rocket Artillery or Plasma Mortar per team&lt;br /&gt;
set g_maxHammers 1		// Allows 1 Hammer or Dark Matter Cannon per team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Weapon Restrictions&lt;br /&gt;
&lt;br /&gt;
set g_maxRocketLaunchers 1	// Allows 1 Rocket Launcer or Obliterator per team&lt;br /&gt;
set g_maxGPMGs 2		// Allows 2 GPMGs or Hyperblasters per team&lt;br /&gt;
set g_maxGrenadeLaunchers -1  	// Allows unlimited Grenade Launchers per team if the Grenade Launcher is available&lt;br /&gt;
set g_maxHeavyWeapons -1	// Set no limit to Heavy Weapons&lt;br /&gt;
set g_maxSniperRifles 1		// Allows 1 Sniper Rifle or Rail Gun per team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Mine Limit&lt;br /&gt;
&lt;br /&gt;
set g_maxMines 8		// Allows each team to only have a maximum 8 mines deployed at one time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Radar Limit&lt;br /&gt;
&lt;br /&gt;
set g_maxRadars 1		// Allows each team to deploy only 1 Radar at a time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Strogg Class Limits&lt;br /&gt;
&lt;br /&gt;
set g_maxAggressors 2		// Limits Strogg to 2 Aggressors at any one time&lt;br /&gt;
set g_maxTechnicians 2		// Limits Strogg to 2 Technicians at any one time&lt;br /&gt;
set g_maxConstructors 3		// Limits Strogg to 3 Constructors at any one time&lt;br /&gt;
set g_maxOppressors 2		// Limits Strogg to 2 Oppressors at any one time&lt;br /&gt;
set g_maxInfiltrators 2		// Limits Strogg to 2 Infiltrators at any one time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GDF Class Limits&lt;br /&gt;
&lt;br /&gt;
set g_maxSoldiers 2		// Limits GDF to 2 Soldiers at any one time&lt;br /&gt;
set g_maxMedics 2 		// Limits GDF to 2 Medics at any one time&lt;br /&gt;
set g_maxEngineers 2		// Limits GDF to 2 Engineers at any one time&lt;br /&gt;
set g_maxFieldOps 4		// Limits GDF to 4 Field Ops at any one time&lt;br /&gt;
set g_maxCovertOps 1		// Limits GDF to 1 Covert Op at any one time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pausing and Time Outs==&lt;br /&gt;
&lt;br /&gt;
Further support has been added for pausing matches as well as a new Team Timeout feature. Any player on either team can call a time out at any time during a game (if allowed on the server), this will pause the game for a set amount of time before counting the game back in and restarting it. Related Cvars and Commands are listed below.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|admin pause}} – Command to pause a game indefinitely&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|admin unpause}} – Command to un-pause a game&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_unpauseTimer}} – Sets the duration, in seconds, of the match restart countdown that plays after a pause or time out has ended&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_maxTeamTimeouts}} –  Determines how many timeouts a team can use per match, value of -1 turns timeouts off&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_teamTimeoutLength}} – Sets the duration, in minutes, a timeout will last&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|callTimeout}} – Command used to start a timeout, any player is able to call a time out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Spectating and 'Spec Labels'==&lt;br /&gt;
&lt;br /&gt;
With Competition Mod spectators are now able to view players in free fly mode with much greater control and feedback. Support is added for pre-set cameras, binding hot keys for viewing specific clients and for clicking on individual players to jump into their first person perspective. In addition labels can now be added to players when spectating, allowing much easier identification of individuals. These spec labels are customized via client side Cvars.&lt;br /&gt;
&lt;br /&gt;
===Spectate Position===&lt;br /&gt;
&lt;br /&gt;
This command allows the user to jump to a specific point on the map, looking in a pre-set direction, essentially jumping to user defined camera. The command is set in the following format:&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|Spectate Position &amp;lt;x&amp;gt; &amp;lt;y&amp;gt; &amp;lt;z&amp;gt; &amp;lt;yaw&amp;gt; &amp;lt;pitch&amp;gt; &amp;lt;roll&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Here X, Y and Z are the coordinates at which the camera will be placed, Yaw, Pitch and Roll set the direction in which it will be looking. The easiest way to obtain these values is to start ETQW, launch Play Computer, fly to the position at which you'd like the camera to be placed and then use the command 'getviewpos'. This will capture the coordinates for your current point of view to the clipboard and you can use these for your camera. You will need net_allowcheats to be set to 1 to be able to use the getviewpos command.&lt;br /&gt;
&lt;br /&gt;
Obviously this is not very easy to do on the fly so it is best to make a series of binds for each map and then store them in a config file. An example of a bind for a ready made camera for the map Valley is:&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|bind k &amp;quot;spectate position 9044.66 -4553.08 1891.27 24.87 -334.34 0.00&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
===Other spectate commands===&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|Spectate Client}} - Jumps to spectating a specific player based on the client number or the player name entered e.g. &amp;quot;Specate Client 1&amp;quot; or &amp;quot;Spectate Client Tapir&amp;quot; for a player called Tapir&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|Spectate next}} – Jumps to the next player&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|Spectate prev}} – Jumps to the previous player&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|Spectate objective}} – Jumps to a player currently attempting to complete the objective or jumps to view a planted HE/Plasma charge (only works on Primary Objectives)&lt;br /&gt;
&lt;br /&gt;
Pressing the use key ({{consolecmd|_activate}}) whilst a player is under the spectators crosshair will now jump to that players point of view, allowing for more fluid transitions between first person and free fly mode &lt;br /&gt;
&lt;br /&gt;
===Example spectator config===&lt;br /&gt;
&lt;br /&gt;
This is an example of a client config file set up to jump to specific clients, map locations, and objectives.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
// **********************************&lt;br /&gt;
// *******                   ********&lt;br /&gt;
// *******  Specator Config  ********&lt;br /&gt;
// *******                   ********&lt;br /&gt;
// **********************************&lt;br /&gt;
&lt;br /&gt;
// Number keys are bound to specific clients based on client number (ignores clients that are also spectating)&lt;br /&gt;
&lt;br /&gt;
bind  1		&amp;quot;spectate client 1&amp;quot;					&lt;br /&gt;
bind  2		&amp;quot;spectate client 2&amp;quot;&lt;br /&gt;
bind  3		&amp;quot;spectate client 3&amp;quot;&lt;br /&gt;
bind  4		&amp;quot;spectate client 4&amp;quot;&lt;br /&gt;
bind  5		&amp;quot;spectate client 5&amp;quot;&lt;br /&gt;
bind  6		&amp;quot;spectate client 6&amp;quot;		&lt;br /&gt;
bind  7		&amp;quot;spectate client 7&amp;quot;	&lt;br /&gt;
bind  8		&amp;quot;spectate client 8&amp;quot;&lt;br /&gt;
bind  9		&amp;quot;spectate client 9&amp;quot;&lt;br /&gt;
bind  0		&amp;quot;spectate client 10&amp;quot;&lt;br /&gt;
bind  -		&amp;quot;spectate client 11&amp;quot;&lt;br /&gt;
bind  =		&amp;quot;spectate client 12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Keys bound to specific clients based on the player's name&lt;br /&gt;
&lt;br /&gt;
bind  q		&amp;quot;spectate client AO&amp;quot;					&lt;br /&gt;
bind  w		&amp;quot;spectate client 'Bongo Boy'&amp;quot;&lt;br /&gt;
bind  e		&amp;quot;spectate client ducks&amp;quot;&lt;br /&gt;
bind  r		&amp;quot;spectate client Digibob&amp;quot;&lt;br /&gt;
bind  t		&amp;quot;spectate client RR2DO2&amp;quot;&lt;br /&gt;
bind  y		&amp;quot;spectate client Wils&amp;quot;		&lt;br /&gt;
bind  u		&amp;quot;spectate client MoP&amp;quot;	&lt;br /&gt;
bind  i		&amp;quot;spectate client Anti&amp;quot;&lt;br /&gt;
bind  o		&amp;quot;spectate client Smooth&amp;quot;&lt;br /&gt;
bind  p		&amp;quot;spectate client Jose&amp;quot;&lt;br /&gt;
bind  [		&amp;quot;spectate client Huntle&amp;quot;&lt;br /&gt;
bind  ]		&amp;quot;spectate client JFK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Keys bound to toggle through clients&lt;br /&gt;
&lt;br /&gt;
bind rightarrow	&amp;quot;spectate next&amp;quot;&lt;br /&gt;
bind leftarrow	&amp;quot;spectate prev&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Pre-set cameras for Valley&lt;br /&gt;
&lt;br /&gt;
bind kp_end		&amp;quot;spectate position 9044.66 -4553.08 1891.27 24.87 -334.34 0.00&amp;quot;		// Views obj. 1&lt;br /&gt;
bind kp_downarrow	&amp;quot;spectate position 3862.32 1435.13 1879.86 131.09 -353.98 0.00&amp;quot;		// Views Tunnel Spawn&lt;br /&gt;
bind kp_pgdn	&amp;quot;spectate position 1085.68 8092.22 1955.78 274.70 -337.35 0.00&amp;quot;		// Views obj. 2&lt;br /&gt;
bind kp_leftarrow	&amp;quot;spectate position -6847.38 -4325.94 2230.2 244.78 -340.67 0.00&amp;quot;		// Views obj. 3&lt;br /&gt;
bind kp_5		&amp;quot;spectate position -5549.77 -9793.78 1934.23 174.49 -330.27 0.00&amp;quot;		// Views obj. 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Jumps to spectating any player currently achieving the objective&lt;br /&gt;
&lt;br /&gt;
bind a 		&amp;quot;spectate objective&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Spec Labels===&lt;br /&gt;
&lt;br /&gt;
Spec Labels are fully customizable name tags that hover next to players in-world when spectating them to aid a viewers understanding of who they are watching. They are also used to display the amount of time remaining on a planted HE/Plasma charge. The labels are controlled client side and are usable with ETQW:TV. The following Cvars are used for editing spec labels:&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_showPlayerNames}} – cvar used to toggle player spec labels on/off&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_showChargeTimers}} – cvar used to toggle in-world HE/Plasma charge timers on/off&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelAlpha}} – adjusts the alpha of the text on the spec label&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelBackground}} – cvar used to toggle the label background on/off&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelBackgroundColor}} – adjusts the background color of the label, format &amp;quot;&amp;lt;nowiki&amp;gt;&amp;lt;R&amp;gt; &amp;lt;G&amp;gt; &amp;lt;B&amp;gt; &amp;lt;Alpha&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelDropShadow}} – adds or removes drop shadow on the label text&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelMaxDistance}} – adjusts the distance at which spec labels become visible&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelPosition}} – adjusts where a label appears in relation to a player (0 = above, 1 = center, 2 = below)&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelSize}} – adjusts the size of the label&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelShowAll}} - cvar used to show labels even for players that are hidden (eg behind a wall)&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelTeamColors}} - enables the names to be coloured based on the team&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelGDFColor}} – adjusts the text color on GDF labels, format &amp;quot;&amp;lt;nowiki&amp;gt;&amp;lt;R&amp;gt; &amp;lt;G&amp;gt; &amp;lt;B&amp;gt; &amp;lt;Alpha&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_specLabelStroggColor}} – adjusts the text color on Strogg labels, format &amp;quot;&amp;lt;nowiki&amp;gt;&amp;lt;R&amp;gt; &amp;lt;G&amp;gt; &amp;lt;B&amp;gt; &amp;lt;Alpha&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_showFreeFlyText}} – cvar used to add/remove the 'free fly mode' text that appears in the center of the screen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vampire/Violator Team Charge Bar==&lt;br /&gt;
&lt;br /&gt;
Competition Mod makes it possible to have a shared charge bar on the Vampire/Violator for each team. When turned on this can be used to prevent teams from 'spamming' fire support at the same time or in quick succession.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_teamAirstrikeCost}} - This cvar sets the percentage of the team's charge bar a single air strike will use, set to 100 a single Vampire strike would use the whole charge bar and it would have to fully re-fill before another Vampire could be used. Set to 50 a single Vampire being thrown would cause the charge bar to re-fill from half way, halving the time before another strike could be made. If the cvar is set to -1 then no shared team charge bar is set.&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_teamAirstrikeRechargeTime}} – Sets the time in seconds it takes for the whole charge bar to re-fill&lt;br /&gt;
&lt;br /&gt;
==Signed Configs==&lt;br /&gt;
&lt;br /&gt;
Support is also available for checking configs between the client and the server, this allows players to ensure that the config that is being run on the server is the correct one. For example if the server is supposed to be running OfficialComp.cfg for a tournament players would be able to download it to their own machine and then check it against the server's version, comparing checksums to see if they are the same. The following commands are used to compare configs, in each case the name of the config to check is entered after the command.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|getConfigChecksum}} - generates a checksum for a config stored on the client and prints it to the player requesting it&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|getServerConfigChecksum}} - generates a checksum for a config stored on the server and prints it to the player requesting it&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|admin configChecksum}} - generates a checksum for a config stored on the server and prints it to all players on the server&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|compareConfigs}} - compares a config stored on the client with one on the server and tells the player if they match or not&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|admin compareConfigs}} - compares a config stored on the client with one on the server and tells all players on the server if they match or not &lt;br /&gt;
&lt;br /&gt;
==General Changes==&lt;br /&gt;
&lt;br /&gt;
===Force Limbo Spectate===&lt;br /&gt;
&lt;br /&gt;
These cvars allow server admins to prevent 'gibbed' players from viewing the battlefield from their corpse.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_forceLimboSpectate}} – when set to 1 this forces gibbed players to spectate team mates until they re-spawn, or if all team mates are dead forces them to the limbo menu&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_forceLimboSpectateMenuSticky}} – cvar sets if the limbo menu should automatically close if a player forced to the limbo menu re-spawns&lt;br /&gt;
&lt;br /&gt;
===setSpawnPoint Commands===&lt;br /&gt;
&lt;br /&gt;
Competition Mod provides a series of commands that allow players to select spawn points across the map without having to use the limbo menu. These commands can be bound to keys to allow very fast spawn point selection.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|setSpawnPoint next}} – selects one spawn ahead of the player's current selection&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|setSpawnPoint prev}} – selects one spawn back from the player's current selection&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|setSpawnPoint default}} – selects the current front-line spawn point&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|setSpawnPoint base}} – sets the player's spawn point to the main base (Command Center/Domination Hub)&lt;br /&gt;
&lt;br /&gt;
===Auto Demo Recording and Screenshots===&lt;br /&gt;
&lt;br /&gt;
It is possible for players to auto record their own demo files and generate screenshots of the end game scoreboard using Competition Mod. These files can also be given a customized naming format.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_autoRecordDemos}} – set to 1 this cvar starts demo recording automatically when the match is started &lt;br /&gt;
{{consolecmd|g_autoScreenshot}} – set to 1 this cvar will automatically take a screenshot of the end game scoreboard&lt;br /&gt;
&lt;br /&gt;
Auto recorded demos and auto screenshots can also have a user defined name format applied to them using the cvars {{consolecmd|g_autoDemoNameFormat}} and {{consolecmd|g_autoScreenshotNameFormat}}. These default to the following formats:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;scoreboard_$year$$month$$day$_$hour$$min$$sec$_$map$_$rules$_$name$_build_$srcrev$_$mediarev$.tga&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$year$$month$$day$_$hour$$min$$sec$_$map$_$rules$_$name$_build_$srcrev$_$mediarev$.ndm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These would result in the following file names respectively:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;scoreboard_20080205_103901_maps_sewer_tournament_first_Player_build_12095_33034.tga&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;20080205_103617_sewer_tournament_first_Player_build_12095_33034.ndm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Separate Vehicle Sensitivity Settings===&lt;br /&gt;
&lt;br /&gt;
In Competition Mod it's possible to adjust mouse sensitivity for specific vehicles, allowing players to have high sensitivity in some vehicles with low sensitivity in others, all without effecting their sensitivity when playing as Infantry. The Cvars used to scale the sensitivity in the various vehicles are listed below. Each vehicle has two sensitivity cvars, one for vertical movement, one for horizontal. To adjust the general sensitivity then the value of both cvars should be the same.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|m_bumblebeePitchScale}} – adjusts the vertical sensitivity in the Bumblebee&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_bumblebeeYawScale}} – adjusts the horizontal sensitivity in the Bumblebee&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_heavyVehiclePitchScale}} – adjusts the vertical sensitivity in the Titan, Cyclops and Desecrator&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_heavyVehicleYawScale}} – adjusts the horizontal sensitivity in the Titan, Cyclops and Desecrator&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_helicopterPitchScale}} – adjusts the vertical sensitivity in the Anansi and Tormentor&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_helicopterYawScale}} – adjusts the horizontal sensitivity in the Anansi and Tormentor&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_lightVehiclePitchScale}} – adjusts the vertical sensitivity in the Trojan, Armadillo, Hog and Husky&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_lightVehicleYawScale}} – adjusts the horizontal sensitivity in the Trojan, Armadillo, Hog and Husky&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_playerPitchScale}} – adjusts the vertical sensitivity as infantry and in the Icarus&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|m_playerYawScale}} – adjusts the horizontal sensitivity as infantry and in the Icarus&lt;br /&gt;
&lt;br /&gt;
Players are also able to switch yaw and roll between the keyboard and the mouse if they choose to using the cvar {{consolecmd|ui_swapFlightYawAndRoll}}. Setting this to a value of 1 causes the mouse to become the control for yaw and the keys to become the control for roll.&lt;br /&gt;
&lt;br /&gt;
===Look at Killer/Medic===&lt;br /&gt;
&lt;br /&gt;
Normally a dead players point of view will snap to look towards their killer or a nearby medic, this feedback is to help the user understand who just killed them or if they should tap out or not. With Competition Mod the player is now able to turn off this functionality if they choose to.&lt;br /&gt;
&lt;br /&gt;
{{consolecmd|g_lookAtKiller}} – set this to a value of 0 to turn off the camera tracking a killer&amp;lt;br&amp;gt;&lt;br /&gt;
{{consolecmd|g_lookAtMedic}} – set this to a value of 0 to turn off the camera tracking nearby Medics/Technicians&lt;/div&gt;</summary>
		<author><name>192.168.0.152</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Vehicle_Tutorial_Part_3&amp;diff=3857</id>
		<title>Vehicle Tutorial Part 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Vehicle_Tutorial_Part_3&amp;diff=3857"/>
		<updated>2007-12-04T11:25:34Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.152: /* Collision Damage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''More Advanced Joints''' ==&lt;br /&gt;
[[Image:buggy_rough_rig2.jpg|frame|right|More advanced vehicle rig showing the joint positions and names.]]&lt;br /&gt;
You can now add extra joints as needed for more passengers, gunners, suspension, effects locations and exit points.&lt;br /&gt;
* '''Passengers''' - For each passenger you want to add, you will need a joint for the player location, and a joint for their first-person camera view.&lt;br /&gt;
* '''Gunners''' - This can be set up like a passenger, but with more scripting needed, as described in the Scripting section below.&lt;br /&gt;
* '''Suspension''' - These joints should be parented to the origin joint, and have the related wheel joint as a child.&lt;br /&gt;
* '''Exit points''' - These joints define more places that players may appear when they exit the vehicle.&lt;br /&gt;
* '''Effects locations''' - Used as an attachment location for effects such as smoke and fire when the vehicle is damaged.&lt;br /&gt;
&lt;br /&gt;
=== '''Related Files''' ===&lt;br /&gt;
----&lt;br /&gt;
* [[Media:buggy_rig_advanced_max8.zip|More advanced rig example (3ds max 8 format)]]&lt;br /&gt;
* [[Media:buggy_rig_advanced_maya7.zip|More advanced rig example (Maya 7 format)]]&lt;br /&gt;
&lt;br /&gt;
== '''More Scripting''' ==&lt;br /&gt;
&lt;br /&gt;
In Part 2 you learnt how to get your vehicle into the game in a very rough state. Here we are going to expand on what we developed last time to improve it&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Suspension ===&lt;br /&gt;
----&lt;br /&gt;
Now that we have suspension joints we can hook them up so that we can see the wheels moving up and down, following the ground. To the &amp;lt;tt&amp;gt;text&amp;lt;/tt&amp;gt; part of the wheel template add the following line:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;suspension&amp;quot;                    &amp;quot;vehicle_buggy_tute_FrontBackParm_LeftRightParm_suspension&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This makes the wheel look for a &amp;lt;tt&amp;gt;stringMap&amp;lt;/tt&amp;gt; to describe the suspension. The simplest type is &amp;lt;tt&amp;gt;vertical&amp;lt;/tt&amp;gt;, which is the one we are going to use here:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 stringMap vehicle_buggy_tute_front_right_suspension {&lt;br /&gt;
     &amp;quot;type&amp;quot;                          &amp;quot;vertical&amp;quot;&lt;br /&gt;
     &amp;quot;joint&amp;quot;                         &amp;quot;front_right_suspension&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 stringMap vehicle_buggy_tute_front_left_suspension {&lt;br /&gt;
     &amp;quot;type&amp;quot;                          &amp;quot;vertical&amp;quot;&lt;br /&gt;
     &amp;quot;joint&amp;quot;                         &amp;quot;front_left_suspension&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 stringMap vehicle_buggy_tute_rear_right_suspension {&lt;br /&gt;
     &amp;quot;type&amp;quot;                          &amp;quot;vertical&amp;quot;&lt;br /&gt;
     &amp;quot;joint&amp;quot;                         &amp;quot;rear_right_suspension&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 stringMap vehicle_buggy_tute_rear_left_suspension {&lt;br /&gt;
     &amp;quot;type&amp;quot;                          &amp;quot;vertical&amp;quot;&lt;br /&gt;
     &amp;quot;joint&amp;quot;                         &amp;quot;rear_left_suspension&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These can go in the vscript file, outside the &amp;lt;tt&amp;gt;vehicleDef&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shooting it ===&lt;br /&gt;
----&lt;br /&gt;
At the moment your vehicle will not take damage when people shoot it - this is because it does not fit in any of the target lists used by the bullet damage definitions. To put it into these target lists we need to add the vehicle to some &amp;quot;collections&amp;quot;. You'll need to add it to the following collections by adding these keys to the &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;collection_antivehicle&amp;quot;       &amp;quot;antivehicle&amp;quot;&lt;br /&gt;
     &amp;quot;collection_vehicles_light&amp;quot;    &amp;quot;vehicles_light&amp;quot;&lt;br /&gt;
     &amp;quot;collection_vehicles_gdf&amp;quot;      &amp;quot;vehicles_gdf&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first of these allows it to be targeted by anti-vehicle turrets. The second marks it as being a light vehicle - this means it will take more damage from bullets than if it were markes as a heavy vehicle. The last one allows it to be damaged by various map entities, for example Strogg energy walls.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Damage Effects ===&lt;br /&gt;
----&lt;br /&gt;
You'll probably now notice that your vehicle will have flames/smoke coming from the origin of the model when it gets significantly damaged. This is where your damage effect joint comes in - again, these keys go in the &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;joint_damage_smoke&amp;quot;           &amp;quot;effects&amp;quot;&lt;br /&gt;
     &amp;quot;joint_damage_fire&amp;quot;            &amp;quot;effects&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will make the damage effects play at the joint named &amp;lt;tt&amp;gt;effects&amp;lt;/tt&amp;gt;. You can adjust the effects that play, and when they play, with the following keys:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    &amp;quot;damage_smoke&amp;quot;                  &amp;quot;70&amp;quot;&lt;br /&gt;
    &amp;quot;damage_level1&amp;quot;                 &amp;quot;50&amp;quot;&lt;br /&gt;
    &amp;quot;damage_level2&amp;quot;                 &amp;quot;30&amp;quot;&lt;br /&gt;
    &amp;quot;damage_level3&amp;quot;                 &amp;quot;10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;fx_damage_level_smoke&amp;quot;         &amp;quot;effects/vehicles/generic_smoke&amp;quot;&lt;br /&gt;
    &amp;quot;fx_damage_level1&amp;quot;              &amp;quot;effects/vehicles/vehicle_flames_small&amp;quot;&lt;br /&gt;
    &amp;quot;fx_damage_level2&amp;quot;              &amp;quot;effects/vehicles/vehicle_flames_medium&amp;quot;&lt;br /&gt;
    &amp;quot;fx_damage_level3&amp;quot;              &amp;quot;effects/vehicles/vehicle_flames_large&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The smoke effect will play at the same time as the damage level 1, 2, or 3 effects. When the vehicle's health drops below the value specified by &amp;lt;tt&amp;gt;&amp;quot;damage_smoke&amp;quot;&amp;lt;/tt&amp;gt; etc the corresponding effect will be played. I have given the default values here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Collision Damage ===&lt;br /&gt;
----&lt;br /&gt;
Your vehicle will not currently do any damage to anything else in a collision. For this you'll need to make a new damage type for the collision:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 damageDef damage_buggy_tute_collide {&lt;br /&gt;
     damage                          &amp;quot;damage_buggy_tute_collide&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     team_kill_cvar                  &amp;quot;g_allowComplaint_vehicles&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     tt_obituary                     &amp;quot;tooltips/killmsgs/vehicles/buggy_tute&amp;quot;&lt;br /&gt;
     tt_obituary_unknown             &amp;quot;tooltips/killmsgs/vehicles/buggy_tute/empty&amp;quot;&lt;br /&gt;
     tt_obituary_team_kill           &amp;quot;tooltips/killmsgs/vehicles/buggy_tute/teamkill&amp;quot;&lt;br /&gt;
     tt_obituary_self                &amp;quot;tooltips/killmsgs/vehicles/driving&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 damageFilter damage_buggy_tute_collide {&lt;br /&gt;
     type {&lt;br /&gt;
         target  &amp;quot;target_player_all&amp;quot;&lt;br /&gt;
         damage  100&lt;br /&gt;
     }&lt;br /&gt;
     type {&lt;br /&gt;
         target  &amp;quot;target_veh_all&amp;quot;&lt;br /&gt;
         damage  100&lt;br /&gt;
     }&lt;br /&gt;
     type {&lt;br /&gt;
         target  &amp;quot;target_supply_crate&amp;quot;&lt;br /&gt;
         damage  200&lt;br /&gt;
     }&lt;br /&gt;
     type {&lt;br /&gt;
         target  &amp;quot;target_deployables_all&amp;quot;&lt;br /&gt;
         damage  100&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I put these in the &amp;lt;tt&amp;gt;buggy_tute.def&amp;lt;/tt&amp;gt; file, below the vehicle's &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt;. Then you'll need to add the following key to the vehicle's &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    &amp;quot;dmg_collide&amp;quot;                    &amp;quot;damage_buggy_tute_collide&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up a damage filter listing the target sets that are damaged by the vehicle, and values that scale the damage caused - the damage caused varies with the speed of the collision. The damage definition also specifies a cvar that can be used to enable and disable complaints for team kills by this damage type, and obituary names. I'll describe how to set the obituaries up below.&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
----&lt;br /&gt;
Anything to be displayed on the HUD needs to be a localized string. Its pretty easy to create new strings, but there are a few files involved. First of all you'll want to create a few directories under your mod directory: &amp;lt;tt&amp;gt;localization&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;localization/locstr&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;localization/english&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;localization/english/strings&amp;lt;/tt&amp;gt;. Now create a couple of files to put your new strings in: &amp;lt;tt&amp;gt;localization/locstr/buggy_tute.locstr&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;localization/english/strings/buggy_tute.lang&amp;lt;/tt&amp;gt;. Into the &amp;lt;tt&amp;gt;locstr&amp;lt;/tt&amp;gt; files go &amp;lt;tt&amp;gt;locString&amp;lt;/tt&amp;gt; definitions, which are named strings that can have arguments. Into &amp;lt;tt&amp;gt;lang&amp;lt;/tt&amp;gt; files go tables of string values. This allows there to be &amp;lt;tt&amp;gt;lang&amp;lt;/tt&amp;gt; files for each language, having different strings for each language but with them all looking the same from the rest of the game's code &amp;amp; data.&lt;br /&gt;
&lt;br /&gt;
Into the &amp;lt;tt&amp;gt;locstr&amp;lt;/tt&amp;gt; file add:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 locString game/vec/buggy_tute {&lt;br /&gt;
     text &amp;quot;#str_10000100&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The number in the string is used to identify the number of the localized string in the &amp;lt;tt&amp;gt;lang&amp;lt;/tt&amp;gt; file. All strings in retail ETQW are numbered less than 10000000, so values over that are safe. I like to set aside a range of values for a category of strings - in this case I'm setting aside the range 10000100 -&amp;gt; 10000200 for this vehicle. This helps prevent the situation where you have to search through all the files to find an unused number.&lt;br /&gt;
* '''Note:''' You do not have to use this exact numbering scheme, for example to prevent conflicts you could call your string ''&amp;quot;#str_buggy_001&amp;quot;'' etc. This is slightly easier to remember and less potential string conflicts to worry about.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;tt&amp;gt;lang&amp;lt;/tt&amp;gt; file all the strings must be between a pair of braces, so add:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;quot;#str_10000100&amp;quot; &amp;quot;Buggy!&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Any further strings I add for this car I'll be adding in between the two braces.&lt;br /&gt;
You can now hook this up to the vehicle entity by changing the value of its &amp;lt;tt&amp;gt;&amp;quot;info_name&amp;quot;&amp;lt;/tt&amp;gt; key to &amp;lt;tt&amp;gt;&amp;quot;game/vec/buggy_tute&amp;quot;&amp;lt;/tt&amp;gt;. When you look at the vehicle in the game you should now see &amp;quot;Buggy!&amp;quot; :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Obituaries ===&lt;br /&gt;
----&lt;br /&gt;
There are three obituaries we need to fill in (we referenced them above when we made a collision damage definition). The strings for these are referenced via a tooltip definition, so we need to make those:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 tooltip tooltips/killmsgs/vehicles/buggy_tute {&lt;br /&gt;
     text &amp;quot;game/obit/buggy_tute&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 tooltip tooltips/killmsgs/vehicles/buggy_tute/empty {&lt;br /&gt;
     text &amp;quot;game/obit/buggy_tute_empty&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 tooltip tooltips/killmsgs/vehicles/buggy_tute/teamkill {&lt;br /&gt;
     text &amp;quot;game/obit/buggy_tute_team&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I added these at the end of the &amp;lt;tt&amp;gt;buggy_tute.def&amp;lt;/tt&amp;gt; file. Next we need to set up the localized string definitions for these:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 locString game/obit/buggy_tute {&lt;br /&gt;
     text &amp;quot;#str_10000101&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 locString game/obit/buggy_tute_empty {&lt;br /&gt;
     text &amp;quot;#str_10000102&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 locString game/obit/buggy_tute_team {&lt;br /&gt;
     text &amp;quot;#str_10000103&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally the actual localized strings:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;#str_10000101&amp;quot; &amp;quot;%b^0 &amp;amp;lbrBuggy&amp;amp;rbr %a&amp;quot;&lt;br /&gt;
     &amp;quot;#str_10000102&amp;quot; &amp;quot;&amp;amp;lbrBuggy&amp;amp;rbr %a&amp;quot;&lt;br /&gt;
     &amp;quot;#str_10000103&amp;quot; &amp;quot;%b^1 &amp;amp;lbrBuggy&amp;amp;rbr ^0%a&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These strings have some interesting escape sequences in them. &amp;lt;tt&amp;gt;%a&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;%b&amp;lt;/tt&amp;gt; are replaced with the names of the name of the killer and the killed respectively, &amp;lt;tt&amp;gt;&amp;amp;lbr&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;&amp;amp;rbr&amp;lt;/tt&amp;gt; are replaced by left square brackets and right square brackets respectively, and the caret ( &amp;lt;tt&amp;gt;^&amp;lt;/tt&amp;gt; ) symbol allows the text colour to be changed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Command Map ===&lt;br /&gt;
----&lt;br /&gt;
At the moment your vehicle won't be visible on the command map. This is easy fixed:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    &amp;quot;icon_size_cm&amp;quot;                  &amp;quot;16&amp;quot;&lt;br /&gt;
    &amp;quot;mtr_commandmap&amp;quot;                &amp;quot;guis/assets/commandmap/icon_vehicle&amp;quot;&lt;br /&gt;
    &amp;quot;mtr_commandmap_unknown&amp;quot;        &amp;quot;guis/assets/commandmap/icon_vehicle&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first key sets the size of the icon and the other two set the material to be used for the icon. The unkown material isn't really important in this case, you should just set it to the same as the normal material as I have done here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Control Binding Context ===&lt;br /&gt;
----&lt;br /&gt;
In ETQW bindings can be context sensitive, and by using a series of cvars (one for each vehicle type) you can customize the control layout for each vehicle. To set the name of the context cvar your vehicle uses you can add the following key to your vehicle's &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;control_context&amp;quot;              &amp;quot;g_bind_context_buggy&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you can call the cvar whatever you like. To create the cvar you will need to pull the console down and set it by typing something like &amp;lt;tt&amp;gt;set g_bind_context_buggy vehicle&amp;lt;/tt&amp;gt;. This can be included in config files with your mod to ensure people have the cvars created.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tuning the Steering ===&lt;br /&gt;
----&lt;br /&gt;
The default values for the steering tend to be pretty good for most cases. The steering works on the principle that there is a direction in which the player wants to go - by pressing left and right they alter the direction they want to go in. The game then tries to steer towards that direction. When driving a real car you automatically adjust the steering wheel as you go over bumps etc by feel - you do not get any of this feeling from a keyboard, normally by the time you see your car veering to one side from hitting a bump its already too late to correct it neatly. Keyboards are also an on/off input device, so making subtle corrections is very difficult. The game is essentially trying to compensate for your lack of this feeling of the road surface and make all the subtle adjustments you aren't able to make.&lt;br /&gt;
&lt;br /&gt;
There are a number of keys that can be set on the vehicle's &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt; to adjust the behaviour of the steering:&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#dfdfdf&amp;quot; | '''Key''' || style=&amp;quot;background:#dfdfdf&amp;quot; | '''Default Value''' || style=&amp;quot;background:#dfdfdf&amp;quot; | '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;steering_angle&amp;lt;/tt&amp;gt; || n/a || The maximum steering angle.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_forward_speed&amp;lt;/tt&amp;gt; || 2 || The speed at which the desired direction of movement will change due to player input while moving forward.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_reverse_speed&amp;lt;/tt&amp;gt; || -4 || The speed at which the desired direction of movement will change due to player input while moving in reverse.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_centering_speed_min&amp;lt;/tt&amp;gt; || 2 || The minimum speed at which the steering will tend to center back towards the current movement direction.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_centering_speed_max&amp;lt;/tt&amp;gt; || 15 || The maximum speed at which the steering will tend to center back towards the current movement direction.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_centering_ramp_threshold&amp;lt;/tt&amp;gt; || 20 || The vehicle speed at which the centering speed will drop to the minimum value (as the vehicle speeds up the steering becomes less twitchy).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_centering_speed_air&amp;lt;/tt&amp;gt; || 0.5 || The speed at which the steering will tend to center back towards the current movement direction while the vehicle is airborne (so it doesn't lose the direction of movement too fast when jumping).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_reverse_angle_scale&amp;lt;/tt&amp;gt; || -0.5 || Scales the amount/direction of steering when moving in reverse.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For example if you wish the player's input to result in the vehicle turning faster you can increase &amp;lt;tt&amp;gt;simplesteer_forward_speed&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Engine Sounds ===&lt;br /&gt;
----&lt;br /&gt;
One thing thats our vehicle lacks so far is sound. ETQW wheeled vehicles use three looping samples that are cross-faded and pitched with varying speeds and accelerator input values. In addition to this there is an engine start sound and an engine stop sound for when the driver gets in or out. All of these things are defined in the &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Firstly you'll need to set the sound control method:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;sound_control&amp;quot;                 &amp;quot;wheeled&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to specify the samples to be used. We use an idle sample &amp;amp; a drive sample, where idle is cross-faded with the drive as speed increases, and a &amp;quot;hard acceleration&amp;quot; sample which is faded in and out with speed and input. This is meant to emulate the ferocious exhaust note you hear on a vehicle that is accelerating hard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;snd_engine_start&amp;quot;              &amp;quot;sounds/vehicles/badger/engine/start&amp;quot;&lt;br /&gt;
     &amp;quot;snd_engine_stop&amp;quot;               &amp;quot;sounds/vehicles/badger/engine/stop&amp;quot;&lt;br /&gt;
     &amp;quot;snd_engine_idle&amp;quot;               &amp;quot;sounds/vehicles/badger/engine/idle&amp;quot;&lt;br /&gt;
     &amp;quot;snd_engine_drive&amp;quot;              &amp;quot;sounds/vehicles/badger/engine/drive&amp;quot;&lt;br /&gt;
     &amp;quot;snd_engine_hardaccel&amp;quot;          &amp;quot;sounds/vehicles/husky/engine/hardaccel&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In my case I'm reusing most of the sounds of the badger, but mixing in the husky acceleration sound to hopefully make it sound a bit more raw. &lt;br /&gt;
&lt;br /&gt;
The first few parameters control the change in pitch of the samples as the vehicle changes pitch:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;engine_pitch_low&amp;quot;              &amp;quot;1.5&amp;quot;&lt;br /&gt;
     &amp;quot;engine_pitch_high&amp;quot;             &amp;quot;2&amp;quot;&lt;br /&gt;
     &amp;quot;engine_speed_low&amp;quot;              &amp;quot;10&amp;quot;&lt;br /&gt;
     &amp;quot;engine_speed_high&amp;quot;             &amp;quot;150&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets the high &amp;amp; low levels of the pitch and the speeds at which they occur. At &amp;lt;tt&amp;gt;engine_speed_low&amp;lt;/tt&amp;gt; the pitch will be &amp;lt;tt&amp;gt;engine_pitch_low&amp;lt;/tt&amp;gt; and similarly for high speed. The pitch is linearly ramped between those two. The original pitch in the sample is 1, so 1.5 is 50% faster, and 0.5% is 50% slower.&lt;br /&gt;
&lt;br /&gt;
The next few parameters control engine &amp;quot;spooling&amp;quot; - this is meant to emulate the fact that an engine does not speed up or slow down instantly:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;engine_accel_spool_time&amp;quot;       &amp;quot;0.033&amp;quot;&lt;br /&gt;
     &amp;quot;engine_decel_spool_time&amp;quot;       &amp;quot;0.033&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is how long it takes for the &amp;quot;engine speed&amp;quot; to reach the actual speed of movement, in seconds. 0.033 is instant (1 / 30 -  ie, one 30fps game frame).&lt;br /&gt;
&lt;br /&gt;
Next are the volume settings for the idle and drive samples:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;engine_idle_min_speed&amp;quot;         &amp;quot;5.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_idle_max_speed&amp;quot;         &amp;quot;50.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_idle_min_vol&amp;quot;           &amp;quot;0.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_idle_max_vol&amp;quot;           &amp;quot;-50.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_idle_power&amp;quot;             &amp;quot;1.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_idle_fade_time&amp;quot;         &amp;quot;0.066&amp;quot;&lt;br /&gt;
&lt;br /&gt;
     &amp;quot;engine_drive_min_speed&amp;quot;        &amp;quot;20.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_drive_max_speed&amp;quot;        &amp;quot;80.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_drive_min_vol&amp;quot;          &amp;quot;-20.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_drive_max_vol&amp;quot;          &amp;quot;-5.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_drive_power&amp;quot;            &amp;quot;0.3&amp;quot;&lt;br /&gt;
     &amp;quot;engine_drive_fade_time&amp;quot;        &amp;quot;0.066&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the min speed the sample will be at min volume - at max speed the sample will be at max volume. The sample will change between the two depending on the power value. This adjusts the linearity of the curve - 1 is linear, greater than 1 is exponential (slow change at first, fast change later), and less than 1 (but greater than zero) changes fast at first and slowly later. The fade time governs how long it takes the sound to fade away when the engine is shut off. All volume settings are measured in decibels, with zero being the original sample volume.&lt;br /&gt;
&lt;br /&gt;
Next are the acceleration sound tuning parameters - these are much more complicated. First of all there are parameters to allow the pitch to be adjusted semi-independently of the idle and drive samples:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;engine_accel_pitch_mult&amp;quot;       &amp;quot;1.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_pitch_offset&amp;quot;     &amp;quot;0.5&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The pitch used for the other samples is subtracted from the minimum pitch, multiplied by the pitch multiplier and added to the offset. This effectively allows the pitch to change over a different range of values, given the same speed range, with the offset value giving the minimum. The pitch and the volume can also be adjusted based on the yaw speed of the vehicle (see the Titan/MCP for examples).&lt;br /&gt;
&lt;br /&gt;
The volume of the acceleration sound has three key points - a min, mid and a max value. Each has a speed and a corresponding volume, and the transition between min &amp;amp; mid and mid &amp;amp; max each have their own power values to adjust the linearity of the transition. It is also increased when going up steep slopes and when the player is accelerating, to emulate the engine straining.&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;engine_accel_min_speed&amp;quot;        &amp;quot;1.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_mid_speed&amp;quot;        &amp;quot;20.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_max_speed&amp;quot;        &amp;quot;80.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_min_vol&amp;quot;          &amp;quot;-5.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_mid_vol&amp;quot;          &amp;quot;5.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_max_vol&amp;quot;          &amp;quot;-3.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_power_low&amp;quot;        &amp;quot;0.1&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_power_high&amp;quot;       &amp;quot;5.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_fade_time&amp;quot;        &amp;quot;0.0&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Overdrive Sounds ====&lt;br /&gt;
&lt;br /&gt;
There are default overdrive sound settings, but you may want to tweak those. They support pitch shifting much like the engine sounds:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;snd_overdrive&amp;quot;                 &amp;quot;sounds/vehicles/husky/overdrive&amp;quot;&lt;br /&gt;
     &amp;quot;snd_overdrive_stop&amp;quot;            &amp;quot;sounds/vehicles/husky/overdrive/stop&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     &amp;quot;overdrive_pitch_low&amp;quot;           &amp;quot;0.9&amp;quot;&lt;br /&gt;
     &amp;quot;overdrive_pitch_high&amp;quot;          &amp;quot;1.5&amp;quot;&lt;br /&gt;
     &amp;quot;overdrive_speed_low&amp;quot;           &amp;quot;20&amp;quot;&lt;br /&gt;
     &amp;quot;overdrive_speed_high&amp;quot;          &amp;quot;90&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous Sounds ===&lt;br /&gt;
----&lt;br /&gt;
There are a couple of other sounds used by vehicles - the horn, and the low health warning. These are dead easy to configure:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;snd_horn_loop&amp;quot;                 &amp;quot;sounds/vehicles/husky/horn&amp;quot;&lt;br /&gt;
     &amp;quot;snd_horn_stop&amp;quot;                 &amp;quot;sounds/vehicles/husky/horn/stop&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     &amp;quot;snd_health_warn&amp;quot;               &amp;quot;sounds/vehicles/misc/warning/ground/gdf&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The keys used should be pretty self-explanatory for these!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;'''[[Vehicle Tutorial Part 4|Click here to continue on to Part 4 of the Vehicle Tutorial.]]'''&lt;br /&gt;
[[Category:Models]]&lt;br /&gt;
[[Category:Vehicles]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.152</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Vehicle_Tutorial_Part_3&amp;diff=3856</id>
		<title>Vehicle Tutorial Part 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Vehicle_Tutorial_Part_3&amp;diff=3856"/>
		<updated>2007-12-04T11:25:24Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.152: /* Collision Damage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''More Advanced Joints''' ==&lt;br /&gt;
[[Image:buggy_rough_rig2.jpg|frame|right|More advanced vehicle rig showing the joint positions and names.]]&lt;br /&gt;
You can now add extra joints as needed for more passengers, gunners, suspension, effects locations and exit points.&lt;br /&gt;
* '''Passengers''' - For each passenger you want to add, you will need a joint for the player location, and a joint for their first-person camera view.&lt;br /&gt;
* '''Gunners''' - This can be set up like a passenger, but with more scripting needed, as described in the Scripting section below.&lt;br /&gt;
* '''Suspension''' - These joints should be parented to the origin joint, and have the related wheel joint as a child.&lt;br /&gt;
* '''Exit points''' - These joints define more places that players may appear when they exit the vehicle.&lt;br /&gt;
* '''Effects locations''' - Used as an attachment location for effects such as smoke and fire when the vehicle is damaged.&lt;br /&gt;
&lt;br /&gt;
=== '''Related Files''' ===&lt;br /&gt;
----&lt;br /&gt;
* [[Media:buggy_rig_advanced_max8.zip|More advanced rig example (3ds max 8 format)]]&lt;br /&gt;
* [[Media:buggy_rig_advanced_maya7.zip|More advanced rig example (Maya 7 format)]]&lt;br /&gt;
&lt;br /&gt;
== '''More Scripting''' ==&lt;br /&gt;
&lt;br /&gt;
In Part 2 you learnt how to get your vehicle into the game in a very rough state. Here we are going to expand on what we developed last time to improve it&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Suspension ===&lt;br /&gt;
----&lt;br /&gt;
Now that we have suspension joints we can hook them up so that we can see the wheels moving up and down, following the ground. To the &amp;lt;tt&amp;gt;text&amp;lt;/tt&amp;gt; part of the wheel template add the following line:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;suspension&amp;quot;                    &amp;quot;vehicle_buggy_tute_FrontBackParm_LeftRightParm_suspension&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This makes the wheel look for a &amp;lt;tt&amp;gt;stringMap&amp;lt;/tt&amp;gt; to describe the suspension. The simplest type is &amp;lt;tt&amp;gt;vertical&amp;lt;/tt&amp;gt;, which is the one we are going to use here:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 stringMap vehicle_buggy_tute_front_right_suspension {&lt;br /&gt;
     &amp;quot;type&amp;quot;                          &amp;quot;vertical&amp;quot;&lt;br /&gt;
     &amp;quot;joint&amp;quot;                         &amp;quot;front_right_suspension&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 stringMap vehicle_buggy_tute_front_left_suspension {&lt;br /&gt;
     &amp;quot;type&amp;quot;                          &amp;quot;vertical&amp;quot;&lt;br /&gt;
     &amp;quot;joint&amp;quot;                         &amp;quot;front_left_suspension&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 stringMap vehicle_buggy_tute_rear_right_suspension {&lt;br /&gt;
     &amp;quot;type&amp;quot;                          &amp;quot;vertical&amp;quot;&lt;br /&gt;
     &amp;quot;joint&amp;quot;                         &amp;quot;rear_right_suspension&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 stringMap vehicle_buggy_tute_rear_left_suspension {&lt;br /&gt;
     &amp;quot;type&amp;quot;                          &amp;quot;vertical&amp;quot;&lt;br /&gt;
     &amp;quot;joint&amp;quot;                         &amp;quot;rear_left_suspension&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These can go in the vscript file, outside the &amp;lt;tt&amp;gt;vehicleDef&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shooting it ===&lt;br /&gt;
----&lt;br /&gt;
At the moment your vehicle will not take damage when people shoot it - this is because it does not fit in any of the target lists used by the bullet damage definitions. To put it into these target lists we need to add the vehicle to some &amp;quot;collections&amp;quot;. You'll need to add it to the following collections by adding these keys to the &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;collection_antivehicle&amp;quot;       &amp;quot;antivehicle&amp;quot;&lt;br /&gt;
     &amp;quot;collection_vehicles_light&amp;quot;    &amp;quot;vehicles_light&amp;quot;&lt;br /&gt;
     &amp;quot;collection_vehicles_gdf&amp;quot;      &amp;quot;vehicles_gdf&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first of these allows it to be targeted by anti-vehicle turrets. The second marks it as being a light vehicle - this means it will take more damage from bullets than if it were markes as a heavy vehicle. The last one allows it to be damaged by various map entities, for example Strogg energy walls.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Damage Effects ===&lt;br /&gt;
----&lt;br /&gt;
You'll probably now notice that your vehicle will have flames/smoke coming from the origin of the model when it gets significantly damaged. This is where your damage effect joint comes in - again, these keys go in the &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;joint_damage_smoke&amp;quot;           &amp;quot;effects&amp;quot;&lt;br /&gt;
     &amp;quot;joint_damage_fire&amp;quot;            &amp;quot;effects&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will make the damage effects play at the joint named &amp;lt;tt&amp;gt;effects&amp;lt;/tt&amp;gt;. You can adjust the effects that play, and when they play, with the following keys:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    &amp;quot;damage_smoke&amp;quot;                  &amp;quot;70&amp;quot;&lt;br /&gt;
    &amp;quot;damage_level1&amp;quot;                 &amp;quot;50&amp;quot;&lt;br /&gt;
    &amp;quot;damage_level2&amp;quot;                 &amp;quot;30&amp;quot;&lt;br /&gt;
    &amp;quot;damage_level3&amp;quot;                 &amp;quot;10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;fx_damage_level_smoke&amp;quot;         &amp;quot;effects/vehicles/generic_smoke&amp;quot;&lt;br /&gt;
    &amp;quot;fx_damage_level1&amp;quot;              &amp;quot;effects/vehicles/vehicle_flames_small&amp;quot;&lt;br /&gt;
    &amp;quot;fx_damage_level2&amp;quot;              &amp;quot;effects/vehicles/vehicle_flames_medium&amp;quot;&lt;br /&gt;
    &amp;quot;fx_damage_level3&amp;quot;              &amp;quot;effects/vehicles/vehicle_flames_large&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The smoke effect will play at the same time as the damage level 1, 2, or 3 effects. When the vehicle's health drops below the value specified by &amp;lt;tt&amp;gt;&amp;quot;damage_smoke&amp;quot;&amp;lt;/tt&amp;gt; etc the corresponding effect will be played. I have given the default values here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Collision Damage ===&lt;br /&gt;
----&lt;br /&gt;
Your vehicle will not currently do any damage to anything else in a collision. For this you'll need to make a new damage type for the collision:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 damageDef damage_buggy_tute_collide {&lt;br /&gt;
     damage                          &amp;quot;damage_buggy_tute_collide&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     team_kill_cvar                  &amp;quot;g_allowComplaint_vehicles&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     tt_obituary                     &amp;quot;tooltips/killmsgs/vehicles/buggy_tute&amp;quot;&lt;br /&gt;
     tt_obituary_unknown             &amp;quot;tooltips/killmsgs/vehicles/buggy_tute/empty&amp;quot;&lt;br /&gt;
     tt_obituary_team_kill           &amp;quot;tooltips/killmsgs/vehicles/buggy_tute/teamkill&amp;quot;&lt;br /&gt;
     tt_obituary_self                &amp;quot;tooltips/killmsgs/vehicles/driving&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 damageFilter damage_buggy_tute_collide {&lt;br /&gt;
     type {&lt;br /&gt;
         target  &amp;quot;target_player_all&amp;quot;&lt;br /&gt;
         damage  100&lt;br /&gt;
     }&lt;br /&gt;
     type {&lt;br /&gt;
         target  &amp;quot;target_veh_all&amp;quot;&lt;br /&gt;
         damage  100&lt;br /&gt;
     }&lt;br /&gt;
     type {&lt;br /&gt;
         target  &amp;quot;target_supply_crate&amp;quot;&lt;br /&gt;
         damage  200&lt;br /&gt;
     }&lt;br /&gt;
     type {&lt;br /&gt;
         target  &amp;quot;target_deployables_all&amp;quot;&lt;br /&gt;
         damage  100&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I put these in the &amp;lt;tt&amp;gt;buggy_tute.def&amp;lt;/tt&amp;gt; file, below the vehicle's &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt;. Then you'll need to add the following key to the vehicle's &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    &amp;quot;dmg_collide&amp;quot;                    &amp;quot;damage_buggy_tute_collide&amp;quot;&lt;br /&gt;
&amp;lt;/tt&lt;br /&gt;
&lt;br /&gt;
This sets up a damage filter listing the target sets that are damaged by the vehicle, and values that scale the damage caused - the damage caused varies with the speed of the collision. The damage definition also specifies a cvar that can be used to enable and disable complaints for team kills by this damage type, and obituary names. I'll describe how to set the obituaries up below.&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
----&lt;br /&gt;
Anything to be displayed on the HUD needs to be a localized string. Its pretty easy to create new strings, but there are a few files involved. First of all you'll want to create a few directories under your mod directory: &amp;lt;tt&amp;gt;localization&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;localization/locstr&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;localization/english&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;localization/english/strings&amp;lt;/tt&amp;gt;. Now create a couple of files to put your new strings in: &amp;lt;tt&amp;gt;localization/locstr/buggy_tute.locstr&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;localization/english/strings/buggy_tute.lang&amp;lt;/tt&amp;gt;. Into the &amp;lt;tt&amp;gt;locstr&amp;lt;/tt&amp;gt; files go &amp;lt;tt&amp;gt;locString&amp;lt;/tt&amp;gt; definitions, which are named strings that can have arguments. Into &amp;lt;tt&amp;gt;lang&amp;lt;/tt&amp;gt; files go tables of string values. This allows there to be &amp;lt;tt&amp;gt;lang&amp;lt;/tt&amp;gt; files for each language, having different strings for each language but with them all looking the same from the rest of the game's code &amp;amp; data.&lt;br /&gt;
&lt;br /&gt;
Into the &amp;lt;tt&amp;gt;locstr&amp;lt;/tt&amp;gt; file add:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 locString game/vec/buggy_tute {&lt;br /&gt;
     text &amp;quot;#str_10000100&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The number in the string is used to identify the number of the localized string in the &amp;lt;tt&amp;gt;lang&amp;lt;/tt&amp;gt; file. All strings in retail ETQW are numbered less than 10000000, so values over that are safe. I like to set aside a range of values for a category of strings - in this case I'm setting aside the range 10000100 -&amp;gt; 10000200 for this vehicle. This helps prevent the situation where you have to search through all the files to find an unused number.&lt;br /&gt;
* '''Note:''' You do not have to use this exact numbering scheme, for example to prevent conflicts you could call your string ''&amp;quot;#str_buggy_001&amp;quot;'' etc. This is slightly easier to remember and less potential string conflicts to worry about.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;tt&amp;gt;lang&amp;lt;/tt&amp;gt; file all the strings must be between a pair of braces, so add:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;quot;#str_10000100&amp;quot; &amp;quot;Buggy!&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Any further strings I add for this car I'll be adding in between the two braces.&lt;br /&gt;
You can now hook this up to the vehicle entity by changing the value of its &amp;lt;tt&amp;gt;&amp;quot;info_name&amp;quot;&amp;lt;/tt&amp;gt; key to &amp;lt;tt&amp;gt;&amp;quot;game/vec/buggy_tute&amp;quot;&amp;lt;/tt&amp;gt;. When you look at the vehicle in the game you should now see &amp;quot;Buggy!&amp;quot; :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Obituaries ===&lt;br /&gt;
----&lt;br /&gt;
There are three obituaries we need to fill in (we referenced them above when we made a collision damage definition). The strings for these are referenced via a tooltip definition, so we need to make those:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 tooltip tooltips/killmsgs/vehicles/buggy_tute {&lt;br /&gt;
     text &amp;quot;game/obit/buggy_tute&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 tooltip tooltips/killmsgs/vehicles/buggy_tute/empty {&lt;br /&gt;
     text &amp;quot;game/obit/buggy_tute_empty&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 tooltip tooltips/killmsgs/vehicles/buggy_tute/teamkill {&lt;br /&gt;
     text &amp;quot;game/obit/buggy_tute_team&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I added these at the end of the &amp;lt;tt&amp;gt;buggy_tute.def&amp;lt;/tt&amp;gt; file. Next we need to set up the localized string definitions for these:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 locString game/obit/buggy_tute {&lt;br /&gt;
     text &amp;quot;#str_10000101&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 locString game/obit/buggy_tute_empty {&lt;br /&gt;
     text &amp;quot;#str_10000102&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 locString game/obit/buggy_tute_team {&lt;br /&gt;
     text &amp;quot;#str_10000103&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally the actual localized strings:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;#str_10000101&amp;quot; &amp;quot;%b^0 &amp;amp;lbrBuggy&amp;amp;rbr %a&amp;quot;&lt;br /&gt;
     &amp;quot;#str_10000102&amp;quot; &amp;quot;&amp;amp;lbrBuggy&amp;amp;rbr %a&amp;quot;&lt;br /&gt;
     &amp;quot;#str_10000103&amp;quot; &amp;quot;%b^1 &amp;amp;lbrBuggy&amp;amp;rbr ^0%a&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These strings have some interesting escape sequences in them. &amp;lt;tt&amp;gt;%a&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;%b&amp;lt;/tt&amp;gt; are replaced with the names of the name of the killer and the killed respectively, &amp;lt;tt&amp;gt;&amp;amp;lbr&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;&amp;amp;rbr&amp;lt;/tt&amp;gt; are replaced by left square brackets and right square brackets respectively, and the caret ( &amp;lt;tt&amp;gt;^&amp;lt;/tt&amp;gt; ) symbol allows the text colour to be changed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Command Map ===&lt;br /&gt;
----&lt;br /&gt;
At the moment your vehicle won't be visible on the command map. This is easy fixed:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    &amp;quot;icon_size_cm&amp;quot;                  &amp;quot;16&amp;quot;&lt;br /&gt;
    &amp;quot;mtr_commandmap&amp;quot;                &amp;quot;guis/assets/commandmap/icon_vehicle&amp;quot;&lt;br /&gt;
    &amp;quot;mtr_commandmap_unknown&amp;quot;        &amp;quot;guis/assets/commandmap/icon_vehicle&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first key sets the size of the icon and the other two set the material to be used for the icon. The unkown material isn't really important in this case, you should just set it to the same as the normal material as I have done here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Control Binding Context ===&lt;br /&gt;
----&lt;br /&gt;
In ETQW bindings can be context sensitive, and by using a series of cvars (one for each vehicle type) you can customize the control layout for each vehicle. To set the name of the context cvar your vehicle uses you can add the following key to your vehicle's &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;control_context&amp;quot;              &amp;quot;g_bind_context_buggy&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you can call the cvar whatever you like. To create the cvar you will need to pull the console down and set it by typing something like &amp;lt;tt&amp;gt;set g_bind_context_buggy vehicle&amp;lt;/tt&amp;gt;. This can be included in config files with your mod to ensure people have the cvars created.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tuning the Steering ===&lt;br /&gt;
----&lt;br /&gt;
The default values for the steering tend to be pretty good for most cases. The steering works on the principle that there is a direction in which the player wants to go - by pressing left and right they alter the direction they want to go in. The game then tries to steer towards that direction. When driving a real car you automatically adjust the steering wheel as you go over bumps etc by feel - you do not get any of this feeling from a keyboard, normally by the time you see your car veering to one side from hitting a bump its already too late to correct it neatly. Keyboards are also an on/off input device, so making subtle corrections is very difficult. The game is essentially trying to compensate for your lack of this feeling of the road surface and make all the subtle adjustments you aren't able to make.&lt;br /&gt;
&lt;br /&gt;
There are a number of keys that can be set on the vehicle's &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt; to adjust the behaviour of the steering:&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#dfdfdf&amp;quot; | '''Key''' || style=&amp;quot;background:#dfdfdf&amp;quot; | '''Default Value''' || style=&amp;quot;background:#dfdfdf&amp;quot; | '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;steering_angle&amp;lt;/tt&amp;gt; || n/a || The maximum steering angle.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_forward_speed&amp;lt;/tt&amp;gt; || 2 || The speed at which the desired direction of movement will change due to player input while moving forward.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_reverse_speed&amp;lt;/tt&amp;gt; || -4 || The speed at which the desired direction of movement will change due to player input while moving in reverse.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_centering_speed_min&amp;lt;/tt&amp;gt; || 2 || The minimum speed at which the steering will tend to center back towards the current movement direction.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_centering_speed_max&amp;lt;/tt&amp;gt; || 15 || The maximum speed at which the steering will tend to center back towards the current movement direction.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_centering_ramp_threshold&amp;lt;/tt&amp;gt; || 20 || The vehicle speed at which the centering speed will drop to the minimum value (as the vehicle speeds up the steering becomes less twitchy).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_centering_speed_air&amp;lt;/tt&amp;gt; || 0.5 || The speed at which the steering will tend to center back towards the current movement direction while the vehicle is airborne (so it doesn't lose the direction of movement too fast when jumping).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;simplesteer_reverse_angle_scale&amp;lt;/tt&amp;gt; || -0.5 || Scales the amount/direction of steering when moving in reverse.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For example if you wish the player's input to result in the vehicle turning faster you can increase &amp;lt;tt&amp;gt;simplesteer_forward_speed&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Engine Sounds ===&lt;br /&gt;
----&lt;br /&gt;
One thing thats our vehicle lacks so far is sound. ETQW wheeled vehicles use three looping samples that are cross-faded and pitched with varying speeds and accelerator input values. In addition to this there is an engine start sound and an engine stop sound for when the driver gets in or out. All of these things are defined in the &amp;lt;tt&amp;gt;entityDef&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Firstly you'll need to set the sound control method:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;sound_control&amp;quot;                 &amp;quot;wheeled&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to specify the samples to be used. We use an idle sample &amp;amp; a drive sample, where idle is cross-faded with the drive as speed increases, and a &amp;quot;hard acceleration&amp;quot; sample which is faded in and out with speed and input. This is meant to emulate the ferocious exhaust note you hear on a vehicle that is accelerating hard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;snd_engine_start&amp;quot;              &amp;quot;sounds/vehicles/badger/engine/start&amp;quot;&lt;br /&gt;
     &amp;quot;snd_engine_stop&amp;quot;               &amp;quot;sounds/vehicles/badger/engine/stop&amp;quot;&lt;br /&gt;
     &amp;quot;snd_engine_idle&amp;quot;               &amp;quot;sounds/vehicles/badger/engine/idle&amp;quot;&lt;br /&gt;
     &amp;quot;snd_engine_drive&amp;quot;              &amp;quot;sounds/vehicles/badger/engine/drive&amp;quot;&lt;br /&gt;
     &amp;quot;snd_engine_hardaccel&amp;quot;          &amp;quot;sounds/vehicles/husky/engine/hardaccel&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In my case I'm reusing most of the sounds of the badger, but mixing in the husky acceleration sound to hopefully make it sound a bit more raw. &lt;br /&gt;
&lt;br /&gt;
The first few parameters control the change in pitch of the samples as the vehicle changes pitch:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;engine_pitch_low&amp;quot;              &amp;quot;1.5&amp;quot;&lt;br /&gt;
     &amp;quot;engine_pitch_high&amp;quot;             &amp;quot;2&amp;quot;&lt;br /&gt;
     &amp;quot;engine_speed_low&amp;quot;              &amp;quot;10&amp;quot;&lt;br /&gt;
     &amp;quot;engine_speed_high&amp;quot;             &amp;quot;150&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets the high &amp;amp; low levels of the pitch and the speeds at which they occur. At &amp;lt;tt&amp;gt;engine_speed_low&amp;lt;/tt&amp;gt; the pitch will be &amp;lt;tt&amp;gt;engine_pitch_low&amp;lt;/tt&amp;gt; and similarly for high speed. The pitch is linearly ramped between those two. The original pitch in the sample is 1, so 1.5 is 50% faster, and 0.5% is 50% slower.&lt;br /&gt;
&lt;br /&gt;
The next few parameters control engine &amp;quot;spooling&amp;quot; - this is meant to emulate the fact that an engine does not speed up or slow down instantly:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;engine_accel_spool_time&amp;quot;       &amp;quot;0.033&amp;quot;&lt;br /&gt;
     &amp;quot;engine_decel_spool_time&amp;quot;       &amp;quot;0.033&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is how long it takes for the &amp;quot;engine speed&amp;quot; to reach the actual speed of movement, in seconds. 0.033 is instant (1 / 30 -  ie, one 30fps game frame).&lt;br /&gt;
&lt;br /&gt;
Next are the volume settings for the idle and drive samples:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;engine_idle_min_speed&amp;quot;         &amp;quot;5.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_idle_max_speed&amp;quot;         &amp;quot;50.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_idle_min_vol&amp;quot;           &amp;quot;0.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_idle_max_vol&amp;quot;           &amp;quot;-50.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_idle_power&amp;quot;             &amp;quot;1.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_idle_fade_time&amp;quot;         &amp;quot;0.066&amp;quot;&lt;br /&gt;
&lt;br /&gt;
     &amp;quot;engine_drive_min_speed&amp;quot;        &amp;quot;20.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_drive_max_speed&amp;quot;        &amp;quot;80.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_drive_min_vol&amp;quot;          &amp;quot;-20.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_drive_max_vol&amp;quot;          &amp;quot;-5.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_drive_power&amp;quot;            &amp;quot;0.3&amp;quot;&lt;br /&gt;
     &amp;quot;engine_drive_fade_time&amp;quot;        &amp;quot;0.066&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the min speed the sample will be at min volume - at max speed the sample will be at max volume. The sample will change between the two depending on the power value. This adjusts the linearity of the curve - 1 is linear, greater than 1 is exponential (slow change at first, fast change later), and less than 1 (but greater than zero) changes fast at first and slowly later. The fade time governs how long it takes the sound to fade away when the engine is shut off. All volume settings are measured in decibels, with zero being the original sample volume.&lt;br /&gt;
&lt;br /&gt;
Next are the acceleration sound tuning parameters - these are much more complicated. First of all there are parameters to allow the pitch to be adjusted semi-independently of the idle and drive samples:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;engine_accel_pitch_mult&amp;quot;       &amp;quot;1.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_pitch_offset&amp;quot;     &amp;quot;0.5&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The pitch used for the other samples is subtracted from the minimum pitch, multiplied by the pitch multiplier and added to the offset. This effectively allows the pitch to change over a different range of values, given the same speed range, with the offset value giving the minimum. The pitch and the volume can also be adjusted based on the yaw speed of the vehicle (see the Titan/MCP for examples).&lt;br /&gt;
&lt;br /&gt;
The volume of the acceleration sound has three key points - a min, mid and a max value. Each has a speed and a corresponding volume, and the transition between min &amp;amp; mid and mid &amp;amp; max each have their own power values to adjust the linearity of the transition. It is also increased when going up steep slopes and when the player is accelerating, to emulate the engine straining.&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;engine_accel_min_speed&amp;quot;        &amp;quot;1.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_mid_speed&amp;quot;        &amp;quot;20.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_max_speed&amp;quot;        &amp;quot;80.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_min_vol&amp;quot;          &amp;quot;-5.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_mid_vol&amp;quot;          &amp;quot;5.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_max_vol&amp;quot;          &amp;quot;-3.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_power_low&amp;quot;        &amp;quot;0.1&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_power_high&amp;quot;       &amp;quot;5.0&amp;quot;&lt;br /&gt;
     &amp;quot;engine_accel_fade_time&amp;quot;        &amp;quot;0.0&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Overdrive Sounds ====&lt;br /&gt;
&lt;br /&gt;
There are default overdrive sound settings, but you may want to tweak those. They support pitch shifting much like the engine sounds:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;snd_overdrive&amp;quot;                 &amp;quot;sounds/vehicles/husky/overdrive&amp;quot;&lt;br /&gt;
     &amp;quot;snd_overdrive_stop&amp;quot;            &amp;quot;sounds/vehicles/husky/overdrive/stop&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     &amp;quot;overdrive_pitch_low&amp;quot;           &amp;quot;0.9&amp;quot;&lt;br /&gt;
     &amp;quot;overdrive_pitch_high&amp;quot;          &amp;quot;1.5&amp;quot;&lt;br /&gt;
     &amp;quot;overdrive_speed_low&amp;quot;           &amp;quot;20&amp;quot;&lt;br /&gt;
     &amp;quot;overdrive_speed_high&amp;quot;          &amp;quot;90&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous Sounds ===&lt;br /&gt;
----&lt;br /&gt;
There are a couple of other sounds used by vehicles - the horn, and the low health warning. These are dead easy to configure:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
     &amp;quot;snd_horn_loop&amp;quot;                 &amp;quot;sounds/vehicles/husky/horn&amp;quot;&lt;br /&gt;
     &amp;quot;snd_horn_stop&amp;quot;                 &amp;quot;sounds/vehicles/husky/horn/stop&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     &amp;quot;snd_health_warn&amp;quot;               &amp;quot;sounds/vehicles/misc/warning/ground/gdf&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The keys used should be pretty self-explanatory for these!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;'''[[Vehicle Tutorial Part 4|Click here to continue on to Part 4 of the Vehicle Tutorial.]]'''&lt;br /&gt;
[[Category:Models]]&lt;br /&gt;
[[Category:Vehicles]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.152</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Main_Page&amp;diff=1548</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Main_Page&amp;diff=1548"/>
		<updated>2007-10-18T08:40:42Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.152: Modified Code section title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__= '''Tutorials''' =&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[Taking A Screenshot]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Taking A Screenshot]]''' - Settings and options for making a great screenshot!&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[Making a Terrain Model]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Making a Terrain Model|Step 1]]''' - Create a terrain mesh for your map.&lt;br /&gt;
* More to go here, temp for now.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== [[Vehicle Tutorial]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Vehicle Tutorial Part 1|Step 1]]''' - Design considerations, before you do anything else!&lt;br /&gt;
* '''[[Vehicle Tutorial Part 2|Step 2]]''' - Initial rough model, rig and basic script.&lt;br /&gt;
* '''[[Vehicle Tutorial Part 3|Step 3]]''' - More advanced rig and scripting.&lt;br /&gt;
* '''[[Vehicle Tutorial Part 4|Step 4]]''' - Further technical setup ideas.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= '''Script &amp;amp; Code''' =&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[Vehicle Scripting]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Vehicle Scripting: Basic_Overview|Basic Overview]]''' - Introduction to vehicle setup.&lt;br /&gt;
* '''[[Vehicle Scripting: Entity_Definition|Entity Definition]]''' - One definition to rule them all!&lt;br /&gt;
* '''[[Vehicle Scripting: Vehicle_Definition|Vehicle Definition]]''' - Introduction to the ''.vscript'' file.&lt;br /&gt;
* '''[[Vehicle Scripting: Positions_&amp;amp;_Views|Positions &amp;amp; Views]]''' - Configuring player positions &amp;amp; camera views.&lt;br /&gt;
* '''[[Vehicle Scripting: Components|Components]]''' - Details of various vehicle components.&lt;br /&gt;
* '''[[Vehicle Scripting: Weapons|Weapons]]''' - Things that go boom!&lt;br /&gt;
* '''[[Vehicle Scripting: IK|IK]]''' - Inverse Kinematics &amp;amp; you...&lt;br /&gt;
* '''[[Vehicle Scripting: Cockpits|Cockpits]]''' - Cockpit setup.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[Entity Scripting]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[EntityClass:Overview|Classes]]''' - Tree of entity types.&lt;br /&gt;
* '''[[ScriptEvent:List|Events]]''' - List of all script events.&lt;br /&gt;
* '''[[Scripting:Examples|Examples]]''' - Some example walkthoughs of building up a scripted entity.&lt;br /&gt;
* '''[[Script:Files|Script Files]]''' - List of the script files used by the game.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[GUIs]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[GUIs: Event Based Scripting|Event Based Scripting]]''' - GUIs are event-based.&lt;br /&gt;
* '''[[GUIs: Materials|Materials]]''' - Using materials in GUIs.&lt;br /&gt;
* '''[[GUIs: Transitions|Transitions]]''' - Transitions.&lt;br /&gt;
* '''[[GUIs: Templates|Templates]]''' - Using templates in GUIs.&lt;br /&gt;
* '''[[GUIs: List Enumeration|List Enumeration]]''' - List enumerations.&lt;br /&gt;
* '''[[GUIs: Properties|Properties]]''' - Player/Global properties and more.&lt;br /&gt;
* '''[[GUIs: Timelines|Timelines]]''' - GUI timelines.&lt;br /&gt;
* '''[[GUIs: Layouts|Layouts]]''' - Window layouts.&lt;br /&gt;
* '''[[Reference (GUIs)|Reference]]''' - GUI reference.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Design''' =&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[Introduction]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Design: New In ETQW|What's new in ETQW]]''' - How ETQW mapping differs from Doom3/Quake4&lt;br /&gt;
* '''[[Design: editWorld Basics|editWorld Basics]]''' - A brief introduction to editWorld&lt;br /&gt;
* '''[[Design: editWorld from Radiant|editWorld for Radiant users]]''' - A guide for experienced Radiant users&lt;br /&gt;
* '''[[Design: editWorld from Worldcraft|editWorld for Worldcraft users]]''' - A guide for experienced Worldcraft users&lt;br /&gt;
* '''[[Design: ETQW from WET|ETQW or W:ET mappers]]''' - A guide to ETQW mapping for Wolfenstein: Enemy Territory mappers&lt;br /&gt;
* '''[[Design: References|'References']]''' - What are 'References', and how to create and edit them&lt;br /&gt;
* '''[[Design: Map files|Map files]]''' - List and description of files and file types that form a map&lt;br /&gt;
* '''[[Design: Troubleshooting|Troubleshooting]]''' - Common problems and how to fix or overcome them&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[editWorld]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Design: editWorld Customisation|Customising editWorld]]''' - Customising editWorld's setup&lt;br /&gt;
* '''[[Design: How do I|How do I ...?]]''' - Quick reference for common and useful tasks&lt;br /&gt;
* '''[[Design: editWorld Bugs and Fixes|Bugs and Fixes]]''' - List of known and new bugs or issues with editWorld&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== [[Primitives]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Design: Brush Basics|Brush Basics]]''' - The basics of brush usage and editing&lt;br /&gt;
* '''[[Design: Portal Basics|Portal Basics]]''' - What portals are for and when to use them&lt;br /&gt;
* '''[[Design: Geometry Optimisation|Optimising Geometry]]''' - How to optimise map geometry for performance&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[Entities]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Design: Entity Basics|Entity Basics]]''' - The basics of entity usage and editing&lt;br /&gt;
* '''[[Design: Entity List|List of Entities]]''' - Descriptions and uses for all entities&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[Lighting]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Design: Lighting Basics|Lighting Basics]]''' - The basics of lighting and the different lights&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= '''Art''' =&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[Models]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[In-Game Models]]''' - Making models for use in the engine.&lt;br /&gt;
* '''[[High-Poly Models]]''' - Making source models for baking normal maps.&lt;br /&gt;
* '''[[Renderbump]]''' - Create normal maps from high-poly geometry.&lt;br /&gt;
* '''[[Imposters]]''' - Sprites used for rendering complex models cheaply at a distance.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[Animation]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[MD5 Export Process]]''' - How to export an animated MD5.&lt;br /&gt;
* '''[[Vehicle Setup]]''' - How to set up a vehicle.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[Textures]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Basic Texture Overview]]''' - Supported texture types and implementations.&lt;br /&gt;
* '''[[Texturesheets]]''' - Overview of what texturesheets are, and when to use them.&lt;br /&gt;
* '''[[The Atlas Editor]]''' - Create environment texture sheets to improve performance.&lt;br /&gt;
* '''[[RenderBumpFlat]]''' - Create normal-maps from high-poly geometry.&lt;br /&gt;
* '''[[Detail Textures]]''' - Add high-frequency detail to your textures.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[Terrain Editing]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Making a Terrain Model]]''' - Create a terrain mesh for your map.&lt;br /&gt;
* '''[[Terrain Editor|EditWorld's Terrain Editor]]''' - Set up a Surface Tree for your MegaTexture.&lt;br /&gt;
* '''[[MegaBuild]]''' - Render and compile your MegaTexture.&lt;br /&gt;
* '''[[Water Surfaces#Water Models|Water Surfaces]]''' - Create water to go with your landscape.&lt;br /&gt;
* '''[[STUFF System]]''' - Procedurally distribute models over your terrain mesh.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA; background: #F9F9F9;&amp;quot; |&lt;br /&gt;
=== [[Atmospheres and Effects]] ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Atmosphere Editor|The Atmosphere Editor]]''' - Create and edit atmospheres for your map.&lt;br /&gt;
* '''[[Ambient Light Editor|The Ambient Light Editor]]''' - Create and edit ambient light setups.&lt;br /&gt;
* '''[[Environment Maps]]''' - Used for reflection effects.&lt;br /&gt;
* '''[[Water Surfaces]]''' - Creating water effects.&lt;br /&gt;
* '''[[Effects Editor|The Effects Editor]]''' - Create and edit particle effects.&lt;br /&gt;
* '''[[Cheap Decals]]''' - Bulletholes and other collision decals.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>192.168.0.152</name></author>
		
	</entry>
</feed>