(You don’t have to read the section headings or what’s in parentheses)
On February 18th, 2025, Valve released their Software Development Kit for Team Fortress 2, which allows third parties to modify up-to-date TF2 code and publish these modifications as separate titles to the Steam Store. One week later, EMINOMA, the developers of the then 10 year-old Sourcemod Team Fortress 2 Classic, announced they had begun porting their game to the freshly published SDK, with an expected release in 2025. On January 30th, 2026, TF2C – now Team Fortress 2 Classified – goes online on Steam.
Being knee-deep in your code for 11 months, it’s as good a time as any to make some adjustments. (Pause)
I’m here to present these adjustments. (Pause)
You’re watching the Team Fortress 2 Classified Visualized Changelog.
(This is the only sentence that definitely shall not be changed)
(Intro SFM animation)
Let’s begin with the most obvious difference: The name of the game’s changed, because Valve felt that Team Fortress 2 Classic might be confused for an official Valve title next to Team Fortress 2 and Team Fortress Classic in the Steam Store… despite the disclaimers.
Classified was chosen because it’s similar to Classic, retains the TF2C abbreviation and fits the theme of secret documents and covert operations.
Along with the new name come a new logo, new artwork for the Steam Library, and a new website (though the wiki stills uses tf2classic.com).
Since a full TF2 installation is now required for TF2 Classified to sit on top of, the total install size got bumped to roughly 37 GB.
TF2C now runs natively on Windows and Linux as a 64-bit application, no Proton required.
It also features Steam Networking integration, allowing you join a match via the Join Game option in the Steam Friends UI.
Starting the game for the first time, you’re no longer asked whether you want crash reports to be sent to the developers via the sentry system. I belive this is now enabled by default. There is currently no in-game setting to disable this.
The startup movie displays the new logo, the copyright is now attributed to EMINOMA, and TF2C is aknowledged as a fan project in the legal text at the bottom.
More on those later.
It still ends on railway, but fades to black earlier.
The main menu, along with most other menus, has been re-designed. The
server list and friends list are gone. Some items were shifted around a
bit. The background videos remain the same, but they’re now encoded in
the more modern webm format, instead of .bik, as has been
the case in Live TF2 for some time. Same goes for the intro movie. Their
non-widescreen variants have been removed.
The buttons for toggling the main menu music and changing the track are gone. The music can be toggled on or off using the console, however turning it off requires a restart to take effect.
Two new buttons appeared in the main panel: a greyed-out “Addons” button with a tooltip promise of “Coming soon” and one for the new Offline Practice mode, inherited from Live TF2. That will be discussed later.
The button that links to the website has moved to the bottom of the screen. In patch 3.0.2 two more buttons appeared besides it: a link to the bug tracker and one that links to the patch notes of the latest update.
The new Settings menu features a search bar that searches across categories. The legacy VGUI settings menu is still available, which — thanks to the SDK — will now scale correctly on HiDPI and generally high-resolution displays. The advanced settings menu, in the old multiplayer tab, brings up Live TF2’s “Advanced Options” window.
Achievements are grouped by class category and “Maps and Gamemodes,” instead of the update they were introduced in. You’re also given the option to view all achievements – now 30 instead of 100 with more being “on the way.” Beside some minor touch-up on the icons, bringing their color palette more in line with the rest of TF2C, no achivement was changed, except for “Brick.” No new achivements were introduced.
The stats view now displays random tips, like in Live TF2. The class portrait icons next to these are based on their Live TF2 counterparts with the addition of the Civilian and green and yellow color variants. Portrait icons of the scientist and chicken NPCs are avaible as Steam avatars.
The server browser has been completely overhauled, though you can opt to use the old VGUI window. Each server in the list displays a map preview image, and whether the server is official or verified – a system new to TF2 Classified. Server owners can submit their server to EMINOMA to have it added to the list of verified servers. Clicking on a server provides more info and options. The option to filter for “Vanilla only” has disappeared with the old server list.
All these menus are now fullscreen with a cohesive theme.
Joining a server presents you with the revamped class portraits on the the loading screen. They are based on the TF2 Classic portraits, but have a more painted-over look with minimal changes.
Again, the backgrounds remain unchanged, but non-widescreen variants are missing. The loading bar and cancel button are no longer default VGUI elements and scale with the game’s resolution. The message “This server is VAC secured” is missing.
The default Message-of-the-Day text now only includes TF2C-exclusive maps.
Speaking of which, three new maps were added to TF2C:
VIP Avanti (i leave the pronounciation up to you :-) is a reimagining of a Team Fortress Classic map of the same name. It’s set in and around a Californian hillside winery at dawn, surounded by vineyard fields. BLU must escort the Civilan up the hill over 4 control points to his car, parked at the entrance to the facility.
(Bonus: the bottles are Team Fortress branded.)
VIP Race Chopper combines the classic TF2 desert cliffs aesthetic – à la Arena Offblast – with the modern VIPR gamemode. This time it’s helicopters, not cars. Oh, how far we’ve come.
(screenshot from 1998 TF2 development showing the Civilian infront of a helicopter)
The Civilan also gets a couple new voicelines; courtesy of Benajmin Rudman.
Sisyphus is TF2C’s first 4-team Payload Race map. The teams push from the edge of the map towards a big hole in the center, while preventing the others from doing the same. A large fan at the bottom of the hole acts as a permanent jump pad, allowing players to quickly get from the map’s underground section to the action on top. It’s set in an open-pit mine with a data center underground. Why the name was chosen is yet to be discovered.
Casbah, Highpass, Kong King, Penguin Peek and Doomsday did not make it into the Steam release, however the latter two are said to return at some point in the future.
Some Live TF2 maps have recieved bugfixes and visual touch-ups. As for TF2C maps:
Flask got its artpass overhauled, looking a lot more detailed. Also, for some reason the map has been rotated by 180° (probably just to annoy me lol)
Frigid also had its artpass refreshed and is sporting some new and unique soundscapes. Additionaly the capture time is now 30 seconds longer.
Trainyard rounds have become considerably longer, as the VIP has to die three times now before BLU is declared the loser. This new lifes-system is communicated via a new HUD element and unique map-wide sounds. The visuals of the map were also touched up in a few places.
On to weapons:
The Scout’s Nailgun has its -25% spread bonus, aswell as its damage penalty against engineer buldings removed. Here’s a comparison.
By the way, these nails, they’re the same type of projectile as syringes; and they’ll now calculate their spread more accurately.
On the topic: the Medic no longer shoots syringes from his face.
The soldier gets a whole new model and texture for the R.P.G., aswell as unique explosion sounds.
The Admiralty Anchor’s earthquake damage multiplier on full charge has increased to 4.5 from 4.0. In addition: “Downside now requires a minimum height check when blast jumping.” If anyone knows what this means please let me know.
The Pyro’s compression bla— sorry, airblast now has a spherical hitbox, instead of a box-shaped one. Unfortunately the command for visualizing said hitbox is exclusive to TF2 Classic. As you can see, in normal combat you probably won’t feel a difference, but there are edge cases where this can matter.
Single puffs of flame can hit an enemy multiple times now. Again, no great way of visualizing this, but the flame thrower should feel more powerful.
Lastly, the flame particles look different; on land and underwater.
The Twin Barrel has its reserve ammo decreased to 8, from 12, and its reloads sound different.
Crit swings with the Harvester no longer have an extended reach.
The radius for combo explosions with the Cyclops has deceased by roughly 30%. Defusing enemy dynamite packs with the Cyclops’ grenades should feel more consistant with stickies and mines. The weapon also got new sounds.
The Mine Layer has been reworked, (small pause) again. Mines no longer stick to walls, they’re now 25% bigger, and have an increased detonation radius and detionation timer. Demomen can no longer see their mines through walls and the Mine Layer’s ammo, aswell as the Demo’s maximum amount of active mines, has been increased from 3 to 4.
(Dev Note: We are still experimenting with this item, but these changes were positive in most iterations. They made mines more predictable and gave players more tools to remove them, which made falling for a trap feel much more fair.)
The Anri-Aircraft Cannon now uses player hitboxes instead of player hulls.
You no longer loose your stored crits on missed melee swings with the Chekhov’s Punch.
The Coilgun’s alt-fire functionality is gone. Instead, you now hold primary fire to charge your shot, like with other weapons. Additionally, the gun’s recieved new animations and a unique sound when firing a charged shot.
The Rejuvinator has been mechanically simplified and, as a result, should feel more consistent.
Moreover direct grenade hits had their stats altered: the base heal got reduced from 40 to 30. Residual healing got buffed from 4 HP a second to 10. It now only applies on direct hits and is affected by the same modifiers as it is with the Medi Gun.
(Dev Note: The Rejuvenator was the last holdout for ported weapons by a large margin, only getting in towards the end of September. The reason? This weapon was pretty overengineered. In the old version of the game, the Rejuvenator had a whopping five separate factors that could wildly sway how much healing it does. Not only was this a nightmare to try and port, it was also unclear to players and messy to balance. So we’re reworking the healing calculation. In the Steam version, the Rejuvenator will focus a lot more on landing direct hits, and its healing will be a lot more consistent when landing direct or indirect hits.)
Alt-firing with the Überspritze now performs the Uberslice kill taunt.
The Huntsman’s arrows are now their own type of projectile
(tf2c_projectile_arrow) and no longer use this to
determine a headshot, but instead do it like this: (pause) If
the arrow intercepts the target’s bounding box, it performs 9
direcrional checks in a certain radius – comparable to the bullet spread
of a shotgun blast. This should make landing headshots with the Huntsman
feel more consistant.
Also, the animation for drawing an arrow is now in sync with the charge meter.
The Sniper’s movement speed while beeing scoped in with the Hunting Revolver is now 33% faster than before.
To be perfectly honest, I’m not sure about this next change to the SMG. On the update page it says »Removed the hidden “no damage falloff” stat« I don’t see a difference in behaviour and the wiki seems to contradict itself aswell here.
If anyone has more info on this, please let me know.
The darts of the Spy’s Tranquilizer Gun now give their target a slower firerate instead of a damage reduction – on top of the other debuffs. They also stick to players now, not just walls.
Disguising as a Medic now defaults to your disguise holding the Medi Gun (or Kirtzkrieg, or Rejuvinator).
For most other weapons, Spy has learned a new trick: pressing reload at any time while disguised will make your disguise appear to reload his weapon (if the weapon can reload). On the player’s side a fake reload viewmodel animation is played, depending on the gun you have equipped.
The global disguise screen now features a bit of explanitory text. Also, if you’ve got the 3D player models in the HUD enabled, you’ll now see a gray model when using the globl disguise.
As for general visual changes,
Player models have had their wrinkle maps updated to allow for more expressive faces.
Also all of these models now come with an individual neckstump for Harvester decapitations.
If explosions are more your style, take a look at these new giblets. Even the Scientist gets to be torn apart.
r_radiosity is set to 2 instead of 4 by default for
“nicer indirect lighting on players and other dynamic models.”
The custom burning death animations are still here, but now disabled by default.
Some leftover Half-Life 2 models have been remade to better fit the TF2 aesthetic.
Texture streaming is now enabled by default. It can be disabled the same way as in Live TF2.
The list of pre-installed sprays has completely changed. The old ones are all gone and in their stead a bunch of monochromes to mimic old-school Half-Life designs; forming quite the colorful collection.
Many UI elements now use scalable vector graphics to correctly scale and appear sharp at any resolution. This includes crosshairs, killfeed icons, achievement icons, and other HUD and menu elements.
Since the killfeed icons were completely remade, some of them have gotten a new design. Also, killing the VIP is no longer represented with a special icon. Instead “[VIP]” is appended to the killfeed message that is otherwise formatted normally.
“Tweaked the colors of pop-up text to be more subtle”
Again, if you know more about this, please leave a comment.
Weapon descriptions now show up in the death cam.
The objective HUD in VIP games now shares a consistent look with the VIPR HUD.
Some weapons with a charge meter got one or more new HUD icons.
The option to show weapon icons behind the ammo counter is now enabled by default. The Medic’s Ubercharge meter got moved up on the screen to prevent overlap with this.
The Target ID now shows the weapon held and ammo left for Medics, Spies and spectators.
In addition, Spies can see the building an enemy Engineer is carrying.
If no extra information is available, the name of the player you’re looking at is now vertically centered.
The scoreboard has been re-designed. Some items were shifted around, some colors slightly tweaked, but also: you can now click on any player’s name and see their current stats; even enemy players.
Besides this, ping is now always displayed as a colored graphic aswell as a numerical value. Before it was just the number, in Live TF2 you can choose. The new option to toggle between graphic and number doesn’t do anything; it’s always both. This style is also used in the new server browser.
For bots the text “BOT” in the ping column got replaced with a robot icon, like in Live TF2. However, it’s an entirely new icon, unique to TF2 Classified.
The medals were updated. Not only did they recieve new, more distinct designs, but you can now hover your mouse over a medal in the scoreboard to see what kind of medal it is. The list of who’s got what medal is now pulled from an online API so it can be updated more frequently than the game recieves patches.
New surface properties were added, along with their own impact particles and footstep sounds. For example, listen to the squishy grapes of Avanti.
In fact, all impact effects now use particles. (Though I’m not sure what else they would be using.)
The option to use beta-looking muzzle flahes will now apply to sentry guns.
And lastly, many weapon descriptions were rewritten, including stats. Here are the differences: As you’ll notice, all descriptions also got their quotation marks removed.
You hear that? Those sounds when you select a weapon are new. At least, some of them are. And what’s this?
In addition to the standard hit and kill sounds – now disabled by default – a new auditory telegraphing system was introduced: the Damage Feedback System. This can be set to include damage you deal, recieve, or both, and will inform you of the type of damage done via different distinct sounds. This means generic hits, aswell as custom sounds for
Plus separate versions of these for lethal hits. Additionaly, the system can be further customized with weapon-specific overrides. This system is separate from the old hit and kill sounds and can be enabled alongside of them.
Maps can now be 2team, 4team, or 3team and change the amount of teams during the match. In addition games are no longer limited to strictly RED vs BLU.
The team selection screen has been updated to support this change.
At the same time, 4team maps are now prefixed with a 4, so
4koth_frigid instead of just koth_frigid. Same
goes for 3team maps, of which there no official ones yet.
You can now land random critical hits with melee weapons in the VIP and VIP Race gamemodes, which was not the case in TF2 Classic.
The sounds for VIP buffs were altered.
Health kits dropped by players in Arena mode no longer despawn after a while.
Offline bots got smarter. They can now play the VIP and VIP Race gamemodes which you can experience in the new Offline Practice mode inherited from Live TF2.
Here you can train your skills across 21 maps and 6 gamemodes, including TF2C-exclusive maps aswell as the often overlooked Arena mode.
Custom artwork represents the VIP and Domination gamemodes based on equivalent Live TF2 art.
Playing Offline Practice does not impact your stats or achievements.
Server owners can now choose to try to run non-TF2C gamemodes, such as MvM, Mannpower, etc., aswell as VScript gamemodes such as Versus Saxton Hale. Emphasis on try, because none of these are properly supported by TF2C or EMINOMA.
Live TF2’s auto-demo-recording features are fully implemented
including automatically taking a scoreboard screenshot at the end of a
game. cl_autorecord still works, along with the old option
to take an end-of-game scoreboard screenshot. Both methods can be
enabled simultaneously which will record demos twice in two different
locations. Same for the screenshot options.
The option to to hold to scope with the sniper rifle has been removed.
Kicked bots no longer drop their active weapon.
Pressing tab in the chat window toggles it between allchat and teamchat.
The game now asks you to restart when changing resolution or its fullscreen/windowed state.
Creating a server from the main menu now works and looks exactly like it does in Live TF2. This includes the Steam Networking integration which allows you to start public unlisted servers aswell as servers only your Steam friends can join – in addition to standard public and LAN servers.
Discord Rich Presence is enabled by default, whith no in-game setting to disable it.
Reworked Chickens to be NPCs (no, I have no idea what this entails)
+moveup and +movedown are no lounger bound
by default. This only becomes apparant if you’re underwater or
nocliping.
The list of bot names got updated, with 6 removed, 11 added, and one changed. (shown on screen)
Exploding Scouts have a chance to spawn a dove like in Live TF2.
Rick may tribute statues appear on certain maps between Apr 12 and Apr 14 like in Live TF2.
Now for some technical stuff:
Left 4 Dead’s lag compensation system is now in TF2C.
The LanguagePreference material proxy has been ported
over from Alien Swarm: Reactive Drop. This allows textures to change
based on the player’s game language, though this is currently
unused.
Mappers can now make use of some newer Source features.
The addcond command can now use condition names on top
of ID numbers as an argument.
The default item schema has changed and many unused parameters were
removed. Item schemas for custom weapons now go into
/scripts/items/ instead of the maps folder. You also have
access to all Live TF2 item schema attributes for your custom
schemas.
mod_burstfire is now one attribute with 2 arguments: the
burst size, and fire delay.
Unused prefabs have been removed.
Many files were moved around. Most notably particles are completely re-organized.
Explosion particles have been reworked to reduce visual noise and now support several different radii. In addition, an addon system for explosions in item schemas has been implemented, allowing for extra effects, like shrapnel for example, to be added without creating many new particle systems.
Changing any setting no longer makes the game sound like it’s a skipping record. This is a classic Source engine bug that is not exclusive to TF2 Classic.
Filters should now work in the chat menu.
The previously cut-off heavy_jeers04.wav is now
fixed.
Two songs were added to the TF2C soundtrack: Magnum Opus, a new take on the music from the Meet the Sniper short and Full Steam Ahead, which can be heard in the Steam trailer and, in shortened form, during the intro animation to this video. Both pieces were composed by Ram99, who also made the Double Down Update trailer’s theme Friendly Competition.
And, of course, the localization files were updated.
Feel free plug your channel. Like “Hi, I’m MS, I voiced this video, check out my channel” something like that, you get the idea
Could you say “From (this) … to (this) …” and “Old (version) … (and) New (version) …” a few times, so I can insert them where applicable? Maybe one or two takes with and one or two without the parentheses. Thanks!