HARBOR OF
COMPETITIVE
TF2 CLASSIC

GUIDE

Disclaimer: TF2 Classic is announced to be released on Steam in 2025. The way of installing and running the game, as well as various details related to dedicated servers, plugins, convars and vscript described on this page are due change after the planned Steam release.

Installing TF2 Classic

Follow the steps in the official download page to download, install and play the game: TF2 Classic – Download (before the Steam release).
Add the game already to your Wishlist on Steam to download and play after the planned Steam release in 2025: Steam Store: Team Fortress 2 Classic

Setting Up a Dedicated Competitive Server

Warning: Until the planned Steam release of TF2C in 2025, if the Source SDK Base 2013 Dedicated Server installation is done via SteamCMD, the tf2classic.txt (used by the startscript.bat batch file) should have the line app_update 244310 -beta previous2021 validate instead of app_update 244310 validate or other variations.
If the installation is done via Steam, then the “previous 2021” build can be chosen from the related menu on Steam (right click on the application in Steam library > Properties > Betas).
This is because TF2C is not yet compatible with the latest version of SDK Base, until the Steam release planned in 2025.
Warning: For the SourceMod TF2Classic Tools plugin, download and use this one, forked and more recently updated by Azzy, rather the outdated one by Scags referred in the guides below.

To set up a TF2C server on a Windows system instead, follow either of the guides in the links below instead of the Linux server set up above.
Installing TF2Classic (Server) | Vault F4 Gaming
How to setup a Team Fortress 2 Classic server – (Windows)

CompTF2C Official Server Plugin, Config Pack and VScript Map Logic

The required SM server plugin, config pack and vscript to run an official game with CompTF2C ruleset and settings. Install it by copying the folders in the latest release of the repository linked below into the related directory (“…/tf2classic”) of the dedicated server. Credited to Jaws, and gwonam, with contribution from Güven.

Competitive PUG Server Plugin, Config Pack and VScript Map Logic

The SM plugin, configs and vscript for running a PUG (pick-up game) server is shared in the links below. It includes additional features compared to the official CompTF2C plugin, tailored for the specific needs of PUGs. Installed the same way as described for the official plugin above. Credited to Jaws, and gwonam, with contribution from Güven.

Important Console Commands

TF2C exclusive console commands can be found on the following wiki page: List of TF2 Classic exclusive commands – TF2 Classic Wiki.

Commands most commonly used for competitive are tabulated below.
Note that the rcon and sm_rcon (in case the authority is granted to the player’s Steam ID via the SourceMod plugin) additions for the in-game console are the same as in live TF2.

exec <filename>To execute a config file, such as an official CompTF2C config for the game mode currently being played. For instance, exec comptf2c_HLplus_vipr
mp_restartgame <value>To start the match after the input amount of seconds. For instance, mp_restartgame 5 starts the game in 5 seconds.
Note that the tournament mode is not yet fully integrated to TF2C with all features, such as the “Ready/Not Ready” GUI. This is due change with the planned Steam release of TF2C in 2025.
For the time being, mp_restartgame is used.
mp_tournament_restartRestarts the tournament mod (to the “Not Ready” state).
tf2c_allow_special_classes <0/1/2/3/4>0: Civilian class selection is disabled. (default)
1: Civilian class selection is enabled outside VIP/R maps; disabled on VIP/R maps. Spy disguise as Civilian is disabled.
2: Civilian class selection is enabled outside VIP/R maps; disabled on VIP/R maps. Spy disguise as Civilian is enabled with a command/bind (no GUI).
3: Civilian class selection is enabled on all maps. Spy disguise as Civilian is disabled.
4: Civilian class selection is enabled on all maps. Spy disguise as Civilian is enabled with a command/bind (no GUI).

Note that in competitive, the VIP role is assigned to the Civilian player by the server plugin. Therefore, a value of 3 or 4 is suitable for this command on VIP/R maps.
tf2c_vip_autoassign <0/1>0: Disables auto assignment of the VIP role.
1: Enables auto assignment of the VIP role.
In competitive, a value of 0 is required for this command for the teams to determine their own VIP (Civilian) player.
tf2c_vip_switchteams <0/1>0: VIP does not switch teams on round end.
1: VIP switches teams on round end.
In competitive, a value of 1 is required for this command.
tf2c_domination_comeback <-1/0/1>-1: Total Domination is set to map default
0: Disables Total Domination
1: Enables Total Domination
sm_unclassA command defined by the official SM server plugin.
Makes the player who types it leave their class.
Because of the way TF2C is built, using this command is the only way for a VIP player (BLU Civilian in VIP maps or any Civilian in VIPR) to change class.
Typing !unclass in chat performs the same action.

Modding and Mapping for TF2 Classic

Team Fortress started as a mod of Quake (1996). TF2 Classic is a mod of Team Fortress 2. CompTF2C uses plugins and scripts to modify the way TF2 Classic is played. Valve games and their mods have always been highly compatible and encouraging for modding. TF2 Classic and its community is no different in that sense. Below, useful resources for modding and mapping are shared for the new comer.

VScript Modification for TD Logic

In this section, CompTF2C’s modification to the default TD vscript to fix the spawn points at round start, and how it can be further modified for custom TD maps is explained.

The TD (Territorial Domination) maps in TF2C, the official td_sunnyside and td_caper as well as custom maps if they use the official prefab, trigger a vscript in the files (.vpk formatted) of the game, named tcdom_logic.nut. In this vscript file, the logic for the spawn points of each team at round start is defined, which is randomized by default, i.e. any team (BLU/RED) can spawn on any point at round start.

For competitive gameplay purposes, the spawn points of the teams at round start are fixed via the modified vscript file included in the official plugin+cfg+vscript pack of CompTF2C linked above. This file copied to the custom folder of the server, using the same name, overrides the original tcdom_logic.nut file to be triggered.

Different fixed spawn logics are defined by CompTF2C for td_sunnyside and td_caper, based on the structure of these asymmetrical maps. For all other TD maps, the default “random logic” is applied. The section of code that makes this possible is shown below.

// Defines round start spawn point logic per map
function getSeed()
{
    local mapName = GetMapName()
    if (mapName == "td_sunnyside") {
        local seed = 2 // Point A is RED, point B is uncapped, point C is BLU.
        return seed
    } else if (mapName == "td_caper") {
        local seed = 4 // Point A is RED, point B is BLU, point C is uncapped.
        return seed
    } else {
        local seed = RandomInt(0,5)
        return seed
    }
}

Anyone somewhat familiar with Squirrel (or C++) programming language can modify this code section to create a fixed spawn point logic working for custom TD maps as well. Please see the related code section in the vscript file for the corresponding team-point logic for each seed value.