Pre-match timer reworked to reduce wait times and to be more responsive to player joins
The timer starts at 150 seconds
If teams are even, the timer will go down to 30 seconds upon reaching at least a 7v7. Before, there was no timer handling for teams evenly forming, causing lopsided match starts as players loaded in.
If teams are not even, the timer will go down to 60 seconds upon 12 players joining the game. Before, it was upon 4 players joining the game.
The match will start immediately upon reaching a 9v9. This requirement is reduced to a 6v6 if players have been waiting for a total of 90 seconds or more. Before, the match only started with a full 12v12.
Fixed various desync issues in the timer countdown
New autobalance system improvements
New autobalance system now activated for all servers by default (mp_autoteambalance 2)
Autobalance now announces during the round it will be active in 5 seconds, rather than working quietly
Autobalance now runs instantly at the start of each round, ensuring that teams are balanced before gameplay starts
Autobalance no longer runs for the first 60 seconds of a round, or the last 60 seconds of the round timer
Autobalance is now less favored to apply for Engineers with relevant buildings, or Medics with enough UberCharge level
Autobalance is heavily less favored for players that have been recently autobalanced
Autobalance is less favored for players that have been playing a long time
Reworked rebalance scoring metric to be much more intelligent, keeping track of moment-to-moment raw performance, rather than biasing towards players who have been on the server for a long time, or by solely long term / average performance (MMR)
Casual matches are now restructured into multiple series
Series are essentially “mini-matches” comprised of the same win conditions as before
Achieving a win condition gets your team a series point, before moving onto the next series
Each map will be played for a minimum of 35 minutes
If time runs out, the current series will run to completion
If there is a tie in the series points, then another series will be played to break the tie
Whichever team has the most series points at the end will win the match
Win difference based on series points is factored into win/loss statistics
Added Team Shuffle
Teams will be shuffled at each series intermission between series for the following conditions:
Team series score is ahead by 2
Team points are ahead by 50%
Team shuffling finds an optimal and minimal set of mid-tier players within a performance curve to swap between the dominating and losing teams, rather than randomizing them like Team Scramble
The goal is to create more even matches without being overly disruptive or punishing players for good performances by switching them onto a losing team
Added Hybrid Stopwatch
Stopwatch has been added back to Casual, but with a twist!
Stopwatch measures which team had the best offense, either by capping more points or the same amount of points in less time.
Both teams will now play the map to completion, rather than the game ending abruptly when the Stopwatch condition is beaten.
Successfully defending will award 1 Series Point for defense. Teams on offense need to capture the last point to deny this point from being awarded to the enemy.
Another point will be awarded to the team with the best offense, as measured by Stopwatch.
Changed map selection
Replaced end of match map voting with an in-game vote call for the next map
If no map was voted on, Casual will automatically choose a map from the map pool at the end of the match
Reduced preround timer from 10 seconds to 5 seconds
Competitive Mode
Added pre-match warmup
Players are spawned randomly around the contested point
Respawning is instant
Killing an enemy rewards you with some healing and a weapon refresh
Improved match ready up
If at least one person on each team ready up, the match start countdown will start
In high skill competitive matches, the match will only start when all players ready up
If a player goes AFK for 30 seconds, they automatically unready
Improved competitive preround in high skill matches
Pre-round push from damage is now enabled in high skill matches
Pre-round countdown period separated into Planning Phase (first 7 seconds) and Rollout Phase (last 3 seconds)
Fixed projectiles getting removed at the end of the pre-round countdown
Developer note: Disabling pre-round push adversely affects the early rollout vs. extra overheal tradeoff that heavily impacts play in high skill games. Although this is a non-ideal solution, it’s best that we do not disrupt high level competitive play for now.
Teammate avoidance collision is now disabled in competitive games, pending a fix to this mechanic
This prevents teammates from blocking each other during rollouts
Added prompt for spawn switching in competitive games
Life recap messages (On the bright side…) no longer show in high skill competitive games
Item whitelists are now allowed in all games (not just mp_tournament matches)
Changed high skill competitive matches with rounds to be first to 5 format rather than a best of 5
Changed normal skill competitive matches with rounds to be best of 5 rather than best of 3
Added tf_tournament_force_ds 1 to allow server operators to force recording of demos when tournament mode is enabled, to enforce demo recording requirements on community administrated competitive games. If demo recording is stopped by the player in this case, it will be automatically restarted.
Adjusted First Blood announcer timings in Competitive Mode
Added new Administrator voicelines for killing most of the enemy team
Dueling Icons are no longer displayed in competitive games
Dueling Icons are also now hidden by the tf_tournament_hide_domination_icons ConVar for community servers
Pyrovision is now blocked in Competitive Mode
Fixed respawn waves being bypassable in certain cases in 6s
Fixed various rendering bugs after a map change within a competitive matchmaking server
Fixed player class not being reset when switching teams in competitive modes
Fixed competitive post-match drawing being slightly shorter than expected
Fixed an issue where competitive matches did not wait properly for SourceTV delay
[BETA] Added overhauled pause feature
Pause by pressing the F9 key by default
The new pause feature operates on a game-aware basis, rather than at the engine level
Pausing will no longer freeze networking and prevent player joins
Spectators can look and move around during pause
[BETA] Added online match history for Competitive matches
[BETA] Added basic class swap request feature for trading classes when a class limit is full
Currently only works on bots, but will be added for players later
If a player tries to select a class which is at the class limit, a bot will be requested to swap their class with the player.
Fixed various cases of team-based tournament mode not being handled properly in competitive systems, causing pre-match and round running states to not be handled correctly, for example, for Administrator voice lines, Demo Support, chat notifications, and more
Reduced humiliation time from 15 seconds to 10 seconds in competitive (game-ending win time in competitive is still 5 seconds)
Enabled trade request pop-ups in Casual games, disabled trade requests in all competitive games, rather than the prior behavior of blocking trade requests in matchmaking games
Fixed player-based ready up not working properly in community competitive
Added win conditions display to competitive matches
Fixed desync when enabling mp_tournament and mp_tournament_readymode after loading a map
Fixed mp_tournament_restart not fully restarting the map
mp_tournament_stop_and_refresh is available for the legacy behavior
Fixed competitive ready up voice lines not playing in community competitive
Fixed payload recede voicelines playing during match summary time
Added mp_timelimit_added_winlimit and mp_roundtime_override to support community competitive rulesets
Fixed first blood timer not accounting for setup time length
Class Changes
Scout
Can now jump while crouched on the ground
Fixed not being able to fire the Force a Nature during preround
Pyro
Split off heat system into two parts which measure warmup time and density separately. This allows the heat system to be accurate for both accuracy and warmup, rather than compromising on either.
Fixed initial flame particle dealing full damage
Fixed reflected projectiles having an incorrect path if the player was aiming directly at a projectile
Retuned flame particle damage falloff to more accurately approximate ideal distance
Fixed the Phlogistinator MMPH! taunt ending early in some cases.
Fixed the Thermal Thruster status effect not being removed as intended in some cases.
Fixed being unable to airblast enemies when looking straight down
Fixed the Backscratcher not reducing healing received from the Crusader’s Crossbow (GitHub fix from JoriKos)
Gas Passer: cosmetic-only gas dripping effect now lingers after ignition, properly granting assists for the Gas Passer thrower
Demoman
Added glows for your own stickybombs on all Stickybomb Launchers
Fixed Stickybomb count not showing “0” initially
Fixed Demoman Shield Charge meter showing the crit color too late vs. when a crit was actually available
Fixed the Tide Turner Charge meter turning red even though it cannot provide critical hits
Added more precise detonation selection to the Scottish Resistance
Now detonates clusters of bombs
Fixed Scottish Resistance selection radius not taking into account the player’s FOV
Interval between successful sticky detonations increased from 0.1 seconds to 0.25 seconds. Interval between retries when nothing detonated remains 0.1 seconds.
This brings intended Stickybomb detonation delays back more in line to what they were previously in effect
Heavy
Tweaked the Minigun spread pattern to be more consistent, making its effectiveness less dependent on rolling a good seed value during sustained fire.
The Holiday Punch now uses the same “crit from behind” logic as backstabs
Fixed Minigun having a slower spin down time if letting go of secondary fire (thanks wgetJane)
Fixed Fists of Steel not updating max overheal while already being healed (thanks wgetJane)
Engineer
Building Placement: Removed building placement checks that were causing confusing denied areas.
Fixed the Pomson 6000 colliding with teammates during its initial lifetime.
The Wrangler laser now renders the shooting angle more accurately.
Fixed Dispenser healing getting interrupted in some cases (GitHub fix from bakugo)
Fixed various building visuals, sounds, and effects not working properly.
Medic
As a Medic, you will now see outlines for injured teammates and teammates calling for Medic
Fixed being able to cancel an ÜberCharge by picking up another dropped Medi-Gun
Medi-Guns now go into an activated state when using ÜberCharge
When an activated Medi-Gun is picked up, the ÜberCharge is resumed
An activated Medi-Gun loses charge, when dropped, 2.5x faster than normal (25% per second instead of 10% per second)
Fixed being able to preserve Vaccinator charge by picking up another dropped Medi-Gun
Limited Medic auto-call threshold to up to 75% to prevent “radar” exploit for finding non-injured teammates
Fixed the Backscratcher not reducing healing received from the Crusader’s Crossbow (thanks JoriKos!)
Fixed Medi-Gun range being effectively shorter if you aimed towards someone’s legs
Sniper
Added Sniper Rifle “hold to zoom” option
Sniper Rifle will zoom out when let go, and zoom in when held
Between shots, the Sniper Rifle will automatically rezoom when held, and zoom out after shot if let go
Fixed Sniper Rifle crosshair being misaligned with the center of the screen
Fixed crosshair being blurry and improperly displayed
Fixed friendly Snipers without a bow being considered as an ignitable target (thanks AndrewBetson!)
Fixed Jarate splash regression where edges of a hitbox within the spherical radius would not be affected
Spy
Added cloaking preview to HUD player model panel
Fixed cloak not having team coloring in some cases
Fixed a crash when leaving a game at the same time a Spy changed disguises
Fixed various cases of enemy spies disguised as teammates causing pop-in for team outlines
Fixed disguised Spies being spotted from far away with team outlines
Fixed some Spy disguise bugs (thanks seanmcgeehan)
Fixed Sappers getting stuck in an inactive state on Sentries (thanks bakugo)
Possibly fixed various cases of Spy disguise items being invisible
General
Vulkan with Shader Model 3 is now the default and recommended
For older computers, Shader Model 3 is still required, with DirectX 9.0c (dxlevel 95)
This GPU spec was introduced in 2006
This will allow us to streamline certain rendering systems, improve performance, and enable more modern features
Some quality levels from lower dxlevels will be introduced through graphics settings rather than a separate dxlevel, based upon community feedback
Optimized various rendering systems to take advantage of the new spec
HDR map data is now required to be enabled
This will allow maps to only need HDR lighting rather than also an LDR lit version
Graphics settings (Post-processing) will now disable HDR visually rather than skipping loading its data
Extended spawn glows for the initial round start spawn to account for freeze / countdown time
This should help keep track of how your team is rolling out of spawn
Added crash and error logging, using Sentry. This will automatically report crashes and errors to the TC2 team, to help us resolve these issues in future updates. If you would like to opt out, please use the -nosentry launch option.
All talk is now enabled during pre-game and humiliation. Can be disabled by the server operator with sv_alltalk_betweenrounds 0
Motion blur is now disabled by default, to keep up with modern player expectations
Fixed dynamic shadows bleeding through thin surfaces (thanks copperpixel!)
Enhanced blood FX to be more reactive to damage
Dynamic models now compute full ambient lighting rather than a limited number of samples
Removed support for r_shader_srgb convar, which was unsupported any GPU that matches the new minimum spec
Restricted r_pixelfog to be on to prevent a visibility exploit
Fixed being able to cancel a ready game by disconnecting
Added shadows to rockets, grenades and stickybombs to better ground them in the world
Improved loading times when connecting to a server or loading a map
Added new data to demo log files: map name, game mode, team name, enemy team name, and tick count
Various server optimizations for damage and kill effect calculations
Fixed cases of subtick desync
Fixed some cases of position desync. This was most often encountered during backstab attempts.
Reduced the frequency of dropped packets during large teamfights
Fixed player networking data not being initialized properly on join, which could cause dysfunction on some poor quality connections
Fixed desync between server operator network config values and tickrate changes made in TC2
Added ability to disable fading props entirely for high quality graphics
Fixed blood particle effects not appearing if the attacker was holding a Flamethrower but the damage was dealt by another weapon
Removed various legacy rendering systems that reduced performance
Server operators can now use the -autoupdate launch option on Linux to check for and install updates upon server quit/restart
Removed HTML MOTD system
Various stability fixes
Fixed cp_degrootkeep (and other maps using SetWinner) saying that the defending team captured all points rather than defended until time is up
Fixed defender and attacker not being set in attack/defend modes in some cases:
This fixes some A/D maps not granting the Soviet Block Achievement
Fixed auto team assignment not assigning to the correct attacking team in some cases
Fixed stopwatch not being available on some attack/defend maps
Fixed some cases of incorrect win conditions being detected when a capture point was reset to the defending team on attack/defend maps
Fixed servers being able to fake cosmetic items on players
Fixed shadow appearing on Gunboats and other wearables in first person after respawn
Fixed various cases of weapons becoming invisible
Fixed various cases of players becoming invisible
Fixed winner crit sounds lingering after round respawn and in other cases
Fixed some base conditions not being cleared out correctly
Fixed a common file integrity bypass
Reduced initial voice command delay from 0.5 to 0.3 seconds
Fixed some wobbly jigglebone models disappearing when shot at
Fixed a crash when joining a server while a player died
Fixed stat clock not showing properly on world models / dropped weapons (thanks rabscootle!)
Fixed War Paint items not displaying certain data properly (thanks rabscootle!)
Reduced executable size slightly on Linux
HUD
Added a new main menu interface, along with a new server browser
Added a setting to control max chat lines. Defaults to 15 lines. Previously was unlimited and could cause performance issues after playing the game for a while.
Added a setting to select your preferred class to feature on the main menu
Added Main menu FPS limit to settings, 120 by default
Improved display for hitmarkers, especially for high fire rate weapons
Fixed ready up, stopwatch and win conditions intersecting with the match HUD
Fixed overtime display intersecting with the server time display
Fixed stopwatch label display errors while in the process of switching teams
Fixed countdown background being the wrong team color
Developer Console is now enabled by default, as a quality of life change for advanced players
Large Combat Text is now enabled by default, as it compliments the Individual+Combined damage number mode well
Added indicator for the Medi-Gun for selecting a heal target
Fixed some layout issues on the scoreboard
Fixed missing contracker font on Windows
Fixed missing TF2 styled numbers in PDA, Disguise Kit, etc (thanks to TF2 HUD Fixes)
Fixed misaligned Pip Boy PDA background (thanks to TF2 HUD Fixes)
Fixed Scout and Soldier number not being highlighted on hover in the class selection menu (thanks to TF2 HUD Fixes)
Fixed various display errors in HUD player models (thanks to TF2 HUD Fixes)
Fixed various weapon rendering glitches in the HUD and menus (thanks to TF2 HUD Fixes)
Fixed Team Ready not being localized in Tournament HUD (thanks to TF2 HUD Fixes)
Fixed some minor positioning issues in the taunt selection menu, spectator health on minmode, main menu, itemtest panel, and killstreak in target ID (thanks to TF2 HUD Fixes)
Fixed incorrect crosshair being used if view FOV was lower than 90
Bots
Outside of MvM, Pyro bots will now be affected by reaction time when reflecting projectiles
Bots now use “fill” quota mode by default: maintains a set player count of humans and bots
Fixed bots searching for health and ammo packs improperly
Optimized performance issues with bots, especially in high player count scenarios
Added Kritzkrieg charge functionality to Medic bots
Added Vaccinator resist cycling functionality to Medic bots
Fixed Demoman bots detonating stickies during setup
Fixed Demoman bots detonating sticky traps on themselves
Improved behavior and optimized pathing for Sniper and Spy bots
Fixed bots not having certain user settings set properly
Fixed bots not balancing team counts properly due to old behavior that tried to allow players to join
Fixed TFBot crash related to moving control points (thanks TheBetaM!)
Fixed TF bots not working on some gamemodes without a clear objective (based upon changes from ShowinGrowin, thanks!)
Bots now spawn during match countdown, rather than on match start, so that bots can keep up with rollouts
Fixed bot names getting out of sync on the server, which could cause bot commands to fail
Optimized how bots are assigned items to reduce server lag in some cases
Territorial Control 2
Added a new beta gamemode, Territorial Control 2
Territorial Control 2 is a 50v50 gamemode that modifies existing Territorial Control maps to open up the entire play area
The beta is launching with tc_hydro but more maps may be added
Maps are dynamically modified through a script file to adjust them for the 50v50 format, rather than requiring direct map edits
You can capture all the enemy team’s control points to unlock their base control point
You have 6 minutes to capture the base, or else the enemy team will reclaim their territory
You cannot capture the enemy team’s territory until all of your own territory is held
You may select a respawn point upon an uncontested capture point that your team owns, any active friendly teleporters, or the normal spawn points
Spectator
SourceTV Updates
SourceTV now transmits local player data, allowing ammo counters, Sniper Rifle charge, and more to display to clients
Fixed cases of desync due to SourceTV not transmitting various game events to clients
Renamed tv_allow_camera_man to tv_allow_camera_man_steamid. Now accepts a SteamID in addition to 0/1, allowing only a spectator with the given SteamID to control the camera.
Changed the default to 0, denying anyone to control the camera
Enabled map change delay by default, to prevent SourceTV from cutting off with a delay
Changed default SourceTV delay from 30 seconds to 90 seconds
Enabled recording SourceTV demos by default
Reduced time between SourceTV chat messages from 8 seconds to 5 seconds
Reduced SourceTV timeout time from 30 seconds to 20 seconds to match other timeouts
Changed the default for mp_spectators_restricted to 1, as used in matchmaking servers. This makes it so switching to spectator is not possible if it would unbalance the teams.
[BETA] Added drawing feature to tournament observer, to draw lines in 3D space
Toggle cl_sped_hud_draw 0/1 to enable drawing lines at the crosshair
Toggle cl_spec_hud_draw_show 0/1 to show / temporarily hide the lines
Set cl_spec_hud_draw_fade 1 to fade out and remove lines over the next 3 seconds
Increment/decrement cl_spec_hud_draw_dist to increase the distance the lines are drawn (default 1024 units). If lines intersect with geometry, they will be draw onto the geometry.
Set cl_spec_hud_draw_color to change the color of the lines. 0 = use the color set in the HUD (default green), 1 = white, 2 = red, 3 = blue
Added SourceTV recording support feature, replacing tv_autorecord. Use tv_demo_enable to automatically record demos in different contexts.
tv_demo_rounds_only 1 (default) makes sure that only gameplay is recorded rather than a long prematch warmup
A JSON file with map name, gamemode, length and team name info is logged alongside the demo
Spectators can move around during a pause
Pausing can be configured to have cooldowns and limited pauses per player
Fixed various issues with pausing responding to inputs improperly
Fixed various glitches with game / player state becoming corrupted during a pause
New pause sytem broadly blocks game simulation, but allows for certain systems to continue operating during a pause. Work is ongoing in this area.
[BETA] Added basic game state integration
External apps like observer tools can be notified of game state changes, and read/write game state to the game
Fixed some minor positioning issues in the taunt selection menu, spectator health on minmode, main menu, itemtest panel, and killstreak in target ID (thanks to TF2 HUD Fixes)