Like all multiplayer games based on Valve's Source Engine, Team Fortress 2 uses a client-server model. The client is the copy of the game running on a player's computer, while the server is the software which players connect to. There are currently several thousand Team Fortress 2 servers running worldwide.
A server is responsible for many aspects of Team Fortress 2 gameplay. It responds to players' actions by updating their respective locations and states, e.g. firing a weapon, before determining an appropriate response, e.g. dealing damage to a target, and then broadcasting the results to the players, e.g. displaying a damage dealt value. The server also handles events that are not controlled by players, e.g. map time, Sentry Gun behavior, etc.
Instead of joining an existing server, players can opt to create their own servers to host the game. This can allow the host player to set the map rotation, determining which particular maps and subsequent game modes are played. Additionally, other built in settings can be altered, such as gravity, class slot limit, Highlander limitations and so on. Custom modifications may also be installed on the server to provide alternate gameplay.
There are 2 types of servers that can be run using the Source engine.
A Listen Server is a basic server running within a player's TF2 client. It can be easily created through selecting the Create Server button at the main menu. Other players can connect to the server, but the overhead of running a regular client on the same system will often strain the host player's hardware. These types of servers are best suited to LAN-based events.
A Dedicated Server is a standalone server that does not require Steam to run. Dedicated servers are preferred due to decreased overhead, among other factors. Additionally, many dedicated servers are run on high-end hardware in data centers, providing high performance and fast, reliable connections to players, which can seldom be guaranteed on residential connections.
While GSPs (Game Server Providers) generally use high-end dedicated hardware to run game servers, anybody can create a server by using a computer running:
- Mac OS X 10.5.8 or 10.6.3 and higher meeting the game's requirements.
- Windows XP or higher meeting the game's requirements.
- GNU/Linux (x86 or amd64) running glibc 2.3.2 or later.
- FreeBSD (x86 or amd64) running the Linux compatibility code in the kernel and a recent base Linux system from the ports collection.
- Windows 2000 or later.
September 20, 2007 Patch
- Linux Dedicated Server beta release.
September 26, 2007 Patch
- The affinity of the main thread is not set explicitly for dedicated servers. This will properly load balance multiple instances of the dedicated server running on a multi-processor machine. The affinity is still set to CPU 1 for clients and listen servers.
- Removed mp_friendlyfire cvar for servers. Team Fortress 2 breaks in a number of ways if this is on.
September 28, 2007 Patch
- Fixed rare server crash due to data corruption in networking.
October 2, 2007 Patch
- Fixed server crash related to Spy Sappers.
- Extra options added to 'Game' tab in "Create server" menu option.
October 9, 2007 Patch
- Improved startup network initialization to catch issues with server firewalls popping up in the background.
October 25, 2007 Patch
- Fixed issues on Dustbowl and Hydro that could occur when a server emptied in the middle of a round.
- Fixed honeypot server problems.
November 20, 2007 Patch
- Added sv_pure to the server, currently defaults to off. Type "sv_pure" in the console to get the full description.
- Added server log entries for: Round_Start, Round_Setup_Begin, Round_Setup_End, Round_Overtime, Round_SuddenDeath, Round_Stalemate, Round_Win, Round_Length, Mini_Round_Selected, Mini_Round_Start, Mini_Round_Win, and Mini_Round_Length.
- Server log entries for Round_Win and level changes will now detail the team scores and player counts.
- Updated server log entries for flag captures to detail the number of captures and the tf_flag_caps_per_round value.
- Fixed Windows dedicated server running in -console mode moves its window to the front instead of the back upon startup.
- Fixed Windows dedicated server bug (in -console mode) where typing anything in the console window was slow and tedious.
- Fixed an error when updating name of 32nd player on server.
December 20, 2007 Patch
- Sudden death mode is now a server option (a convar) and defaults to OFF.
- Fixed an rcon/console command that could cause server crashes.
- Fixed a rare crash that can happen when a player being healed leaves the server suddenly.
- Added the ability for servers to have map-specific .cfg files in the cfg folder.
December 31, 2007 Patch
- Added player position data to server logging of events (player_death, player_builtobject, teamplay_flag_event, object_destroyed, teamplay_point_captured, teamplay_capture_blocked).
January 7, 2008 Patch
- Added an option in the Options -> Multiplayer dialog to filter custom game files being downloaded from servers.
January 14, 2008 Patch
- Added "nextlevel" server cvar. If set to a valid map name, server will change to that map during the next changelevel.
February 14, 2008 Patch
- Added server log entry for buildings destroyed by their owner.
- Fixed idle players not being kicked from the server if mp_allowspectators was set to 0.
February 15, 2008 Patch
- Game server will now try 32 sequential ports to start up on if they are all originating on the same machine. Previously it would stop at 10.
- Fixed server crash with mp_forcecamera set to 1 (reverted to pre-release behavior).
- Fixed the SourceTV changes not working unless servers launched with +tv_enable 1 in the command line.
February 28, 2008 Patch
- Servers can now specify metatags describing the custom rules they've adopted.
- Added options for servers who want to become custom games: Disable Critical hits (tf_weapon_criticals), eliminate respawn times (mp_disable_respawn_times), and raise maxplayers above 24.
- Made several improvements to server-side stat reporting (not related to individual player stats).
- Fixed "-maxplayers" on the command line not correctly setting the maxplayers value for the server.
March 6, 2008 Patch
- Removed sv_alltalk from the list of convars that affect custom server tags.
- Fixed servers with maxplayers <= 24 that are running SourceTV having the "increased_maxplayers" tag added for their server.
March 13, 2008 Patch
- Fixed Linux dedicated server map load problems on certain Athlon processors.
March 20, 2008 Patch
- Fixed Linux build not handling FCVAR_REPLICATED and FCVAR_NOTIFY cvars correctly.
- Plugged an exploit where the server could send executable code to the client.
- Added mp_stalemate_at_timelimit ConVar for server admin to allow SuddenDeath when mp_timelimit hits on non-Valve maps.
April 1, 2008 Patch
- Fixed problem that was preventing some dedicated servers from uploading gamestats.
April 2, 2008 Patch
- Fixed Linux dedicated server crash on map change.
April 30, 2008 Patch
- Fixed clients being able to trigger sv_soundscape_printdebuginfo on the server.
- Fixed potential "nuke" exploit in rcon subsystem.
August 4, 2008 Patch
- Fixed _resetgamestats command causing server crash.
July 14, 2009 Patch
- Improved connection logic to help servers that aren't automatically reconnecting to Steam.
- Fixed setinfo exploit that allowed restricted convars to be set while connected to a server.
- Fixed "sensitivity" ConVar not capping the upper value which sometimes caused a server crash.
May 27, 2010 Patch
- Added client/server version check on client connect.
June 11, 2010 Patch
- Fixed a case where servers could get stuck in an infinite loop while spawning bots.
July 13, 2010 Patch
- Fixed a server crash related to carrying buildings at round start.
February 14, 2011 Patch
- Improved the version mismatch error message received when connecting to a server with a different version than your client.
February 22, 2011 Patch
- Fixed a server crash exploit caused by malformed network packets.
February 24, 2011 Patch (Community Map Pack Update)
- Fixed another server crash exploit caused by malformed network packets.
- [Undocumented] Fixed trades only displaying one of the items traded to the server.
March 10, 2011 Patch (Shogun Pack)
- Added check to prevent multiplayer servers from transmitting 1 as their maxplayers value to connecting clients.
- Fixed clients being able to use particle exploits on sv_pure servers.
March 15, 2011 Patch
- Fixed a server crash caused by using the Half-Zatoichi to hit someone not holding a weapon.
April 15, 2011 Patch
- Fixed a server crash caused by the server triggering a nextlevel vote.
April 18, 2011 Patch
- Fixed a server crash that could occur if TFBots were used across map changes.
May 9, 2011 Patch
- Replay publishing system will try to do a rename for local HTTP mode but will manually copy and delete the file if the rename fails, which can happen if the source and destination are on different volumes.
- Fixed threading issues on Linux, which was causing major lag spikes.
- Fixed replay data cleanup system, which cleans up stale data at the end of each round. This asynchronous operation can be explicitly invoked by executing a replay_docleanup command on the server.
May 10, 2011 Patch
- Fixed a server lockup during data cleanup.
May 13, 2011 Patch
- Fixed a server crash caused by a mismatched items schema.
May 25, 2011 Patch
- Fixed a few server crashes caused by the replay system.
- Fixed a server crash caused by the vote system.
June 17, 2011 Patch
- Fixed a server crash caused by the replay system.
- Fixed a server crash caused by disguising Spies.
- Fixed a server crash on startup caused by writing to the console.
- Fixed a server crash triggered during entity cleanup.
June 27, 2011 Patch
- Added a server console message when a player is sent to the server via the matchmaking system.
July 5, 2011 Patch
- Fixed a Linux dedicated server crash in vphysics.so
July 28, 2011 Patch
- Fixed a damage calculation in the Mantreads on Linux server, which could cause a physics crash.
September 2, 2011 Patch
- Fixed a server crash exploit caused by invalid player viewangles.
October 17, 2011 Patch
- Fixed a server crash that occurred when running both SourceTV and Replay.
October 18, 2011 Patch
- Fixed a frequent server crash related to packfiles.
October 18, 2011 Patch #2
- Fixed a server error about unprecached models.
February 2, 2012 Patch
- Adjusted error messages on servers when players drop due to Steam authentication failure to be more clear.
- Additional important server messages now go to the server log instead of just the console.
- Fixed a server crash caused by Holiday Punch critical attacks on physics objects.
February 16, 2012 Patch
- Fixed dedicated server not receiving restart requests when updates are released.
February 23, 2012 Patch
+randommap not working correctly on server startup.
- Fixed dedicated server console spew related to the Replay client and viewangles.
March 8, 2012 Patch
- Fixed a client crash that could occur when a server used
SetCustomModel to change the player model.
May 10, 2012 Patch
- Fixed a bug that sometimes prevented servers from reconnecting to the item server after dropping connection.
May 17, 2012 Patch
- Added changelevel_next server command which changes to the next map in the map cycle.
June 27, 2012 Patch (Pyromania Update)
- Added ConVars
sv_rcon_maxpacketbans to allow server admins to control the maximum RCON packet size and whether or not users get banned for exceeding that limit. The defaults reflect the existing behavior.
- Fixed map triggered annotation events not working on dedicated servers.
- Votes created by a dedicated server no longer trigger a failed vote cooldown.
- Using a Name Tag while in game notifies everyone of the name change.
- [Undocumented] Servers no longer require a restart during the full moon period to allow players to equip Halloween items.
July 2, 2012 Patch
- Fixed a problem that allowed spoofed IP addresses to make connections to the game server.
July 10, 2012 Patch
- Fixed a client/server crash when re-connecting to the item server.
July 20, 2012 Patch #1
sv_namechange_cooldown_seconds, to throttle clients from changing their name too rapidly. (Defaults to 20 seconds)
sv_netspike_on_reliable_snapshot_overflow to selectively enable the automatic dumping of netspike file if a client drops due to "reliable snapshot overflow". (defaults to 0, which disables the debugging)
- Added check to prevent player names from containing color codes.
- Fix a bug that caused gameservers to not properly receive client inventory updates. (Frequent cause of the "The server you are playing on has lost connection to the item server" error message.)
July 23, 2012 Patch
- Fixed dedicated servers not being able to set
August 3, 2012 Patch
- Fix server crash bug caused by setting
tf_mm_servermode before map command.
August 17, 2012 Patch #1
- Updated the dedicated server to exit when attempting to start a Mann vs. Machine map with less than 32 maxplayers.
mp_timelimit causing Mann vs. Machine mode to not reset properly when the defenders lose.
- Updated the matchmaking ConVar
- A value of 2 will hide the server from the server browser but will still allow direct connections.
August 17, 2012 Patch #2
- Fixed a bug where rejected players could leave a "ghost" player that takes up a slot on the server browser.
August 21, 2012 Patch
- Fixed a rare server crash when firing hitscan weapons.
August 23, 2012 Patch
- Added a command "
kickall" which kicks all connected clients except for replay, HLTV, and the listenserver host if applicable.
September 10, 2012 Patch
- Fixed a bug that allowed malicious servers to execute restricted console commands on players.
- Fixed a bug that allowed malicious servers to prevent players from executing console commands.
September 21, 2012 Patch #1
- Fixed a server crash related to Demoman bot AI.
- Community requests:
- Add a new server ConVar "
tf_avoidteammates_pushaway" to control whether or not teammates push each other away when occupying the same space.
- Add a new server ConVar "
tf_arena_override_team_size" to allow server owners to set the maximum team size in arena mode.
September 21, 2012 Patch #2
- Fixed bug causing gameservers to report themselves as full to the matchmaking system.
October 9, 2012 Patch
- Fixed a server crash that could occur if a Spy was disguised holding the Gunslinger.
October 27, 2012 Patch
November 21, 2012 Patch
- Fixed a dedicated server hang in bot pathfinding
March 19, 2013 Patch
- Fixed a server crash related to game stats.
April 3, 2013 Patch
- Prevent game servers from opening the MOTD panel more than once if the player connected through matchmaking or quickplay
- Improved performance of Linux dedicated server binaries
April 18, 2013 Patch
- Disabled plug-ins that would allow users to connect to secure game servers even when -insecure is specified on the command line.
- Added ConVar sv_motd_unload_on_dismissal to allow server ops to control the default behavior of their MOTD.
April 19, 2014 Patch
- [Undocumented] Fixed server, client, and engine problems.
January 9, 2015 Patch
- Fixed a dedicated server crash related to invalid client commands.