Team Fortress 2

Team Fortress 2

238 ratings
Close Captions in TF2 and what they can do for you
By clovervidia
Although TF2 didn't come with captions, you can make your own following this guide and unlock the hidden potential that not many people know about.
3
   
Award
Favorite
Favorited
Unfavorite
Introduction
To those who have my captions installed from before
If you want to know if it's time to update, open TF2 and cc_emit #About.CC and check the version number. I will keep that updated so you will know when it's time to update. It should be at v2.5.4 right now.

Don't like the class-specific colors? No problem! Use "clovervidiaw" instead! Instructions are in "Installing my pre-made captions" and the differences between the versions are in "What have I already captioned?".

If you're having problems...
Please check the aptly named "If you're having problems..." section below. Odds are good someone else already asked and I already resolved the issue. If it isn't there, or isn't working, contact me.

The actual introduction
Unlike other Source-powered games, like Half-Life 2 and Portal, Team Fortress 2 does not come with ready-to-use captions.

Being a multiplayer game, the captions would have to be different than those for HL2 and Portal. In those games, basically every sound effect had a caption. Sure, it was annoying, but you could see text tied to every action, so even if you couldn't see it, as long as you could hear it ingame, you would know what was going on.

However, having captions for every sound effect would probably drive anyone insane if they were incorporated into TF2. I mean, imagine a caption showing up every time a nearby Heavy started filling some poor bloke on the other team full of bullets.

Crazy.

The Left 4 Dead approach is a good one. It only captions the survivors speaking as well as incoming special zombies. When a Tank is appear to show up and wreck your day, someone is bound to say "TAAAAAAAAAAAAAAANK!", and that is captioned.

That is the route I decided to take when I made my captions.
So what can I do with these "captions"?
Good question.

Like I said before, captioning every sound effect is out of the question.

Instead, why don't we have captions for important actions in the game?

For example, a Medic getting full Ubercharge. That's pretty important. Or an Ubercharge being deployed. That's pretty important too.

So that's just what I did. I made some captions that are linked to certain events in-game that I thought were important enough to have a caption.

In addition, they are also pretty damn useful in scripts.

When you toggle something on and off, be it a rocket-jump script or a sentry-jumping script, most of the time you would use
echo something was turned on
to print a message to the console.

Well, that's nice and all, but you're not going to open the console while you're playing a game in the middle of a firefight now, are you?

And I can hear you in the back with your cute little
developer 1
shenanigans going on to print the console text to the top-left corner of the screen.

That's nice, but it looks like garbage.

Let's make some captions.




Pictured: foil
More importantly, what CAN'T I do?
Please take the time to read this section before you ask why I didn't add such and such caption by default.

As I said earlier, these captions work off sound effects, though mostly voice lines. You can think of them as a speech bubble that's stationary. Things that the classes say can have a line of text assigned to them to show up in this speech bubble.

With that said, lets get to the meat of things here.

Things like classes walking/jumping/shooting X weapon can NOT be captioned.

So, like a Spy walking up to you? Bad luck, watch your back better.

Somebody shooting someone in a nearby corridor? Sneak around and get a better look. No hallway in a decent TF2 map is only accessible by one doorway.

And classes dying? Not gonna happen. Don't ask why - TF2 just doesn't want me to be able to do that. I've tried.

Team-specific captions are unreasonable. Think about it, it's the same voice line for both teams.

Really, it's just voice lines. If I find a sound effect that happens to work, I'll add it after some testing, but until then, just assume only voice lines are possible.

With that in mind, if you have a voice line that might be useful to have, let me know and I'll see if I can make it happen.
Branching paths
Now, there are two ways we can do this:

You can either:

  • Download my pre-made captions and use them

or, you could:

  • Do it your damn self, like a Mann

Honestly, either way works fine.

The captions I've made have all the voice lines I found useful, as well as some script-related captions you might find useful to use like for toggling rocket-jumping, or competitive scripts, or whatever.
Installing my pre-made captions
If you want to use the captions I made, read on. Otherwise, skip down to "The "Do-It-Your-Damn-Self" Kit" for instructions on how to edit them yourself.

Here's an installation video, courtesy of Casperr:


Using my pre-made captions means you don't have to get any additional programs to compile or anything, it's all ready to go out of the box.

Google Code is shutting down, so here's the download link:[pastebin.com]

Once it's downloaded, extract it.

You should get a folder named "clovervidia's captions", and inside it should be "resource" and two text files: "readme.txt" and "readme_also.txt". I'll be walking you through the process, so you won't need to read the readme files.

Hopefully, you know where your "tf" folder is. If not, have a look:

OS
Path
Windows
%PROGRAMFILES%/Steam/steamapps/common/Team Fortress 2/tf
Windows (64-bit)
%PROGRAMFILES(x86)%/Steam/steamapps/common/Team Fortress 2/tf
Mac
~/Library/Application Support/Steam/SteamApps/common/Team Fortress 2/tf
Linux
~/.steam/root/SteamApps/common/Team Fortress 2/tf

Once you're in your "tf" folder, head into "custom".

Move the "clovervidia's captions" folder into "custom". Once you're done, the the basic layout from "custom" should be:

┌══════┐ ║custom║ <--- this is your custom folder inside 'tf' ╞══════┘ │ ┌══════════════════════┐ └───╢clovervidia's captions║ <--- this is the folder you extracted from my dropbox ╞══════════════════════┘ │ ┌════════┐ ├───╢resource║ <--- this contains the caption files │ └════════┘ │ ┌──────────┐ ├───┤readme.txt│ <--- this contains the version number and the changelog │ └──────────┘ │ ┌───────────────┐ └───┤readme_also.txt│ <--- this contains reasons why I haven't captioned certain sounds └───────────────┘

Boxes with a thicker border are folders, and boxes with a thin border are files. Be sure to take a look at both readme files for some helpful information and answers to frequently asked questions.

Once all the files are in place, now we have to do the scripting portion. Don't worry, it's quick and pretty easy.

If you've used scripts before, you likely already have an "autoexec.cfg". If not, just make a file named "autoexec.cfg" in your "cfg" folder.

Within it, add the following:

closecaption 1 cc_subtitles 1 cc_lang "clovervidiar" cc_predisplay_time 0

This enables captions in the game.

Note: If you're using closecaption_clovervidiar, make sure you use:
cc_lang clovervidiar
If you're using closecaption_clovervidiac, use:
cc_lang clovervidiac
If you're using closecaption_clovervidiaw, use:
cc_lang clovervidiaw

If you're using or want to use the competitive captions, make the second line:

cc_subtitles 0

This enables the extra captions for competitive use. See the next section for the captions that are enabled with this.

By the way, if you're using clovervidiar, you do have access to the competitive captions found in clovervidiac and clovervidiaw, I just suggested you turn them off by default as they are very spammy captions that will block your caption box a lot. If you want to try them though, go to your audio settings and set the "Captioning" to "Closed Captions." Set them to "Subtitles (dialog only) to revert back to non-competitive captions.
What have I already captioned?
Color Coding

Before we get into what sound effects have already captioned, here is a guide to the class-specific colors for some captions.

The colors on the left are the "hurt" colors, and are exclusively used for the "<class_name> hurt" captions.

The colors on the right are the "hurt a bit" colors, which are used for lower-priority captions like a class getting buffed or teleporting nearby, as well as the Medic calling out that he is fully charged, and the Engineer calling out a building being sapper/destroyed.


Scout

Soldier

Pyro

Demoman

Heavy

Engineer

Medic

Sniper

Spy

Übercharge

Kritzkrieg/Quick-Fix

If you don't want color coding, that's fine, just replace the
cc_lang clovervidiac
with
cc_lang clovervidiaw
It's the same as clovervidiac, but without the colors except for certain events:
  • All "hurt" and "hurt a bit" captions are in white, except for Medic, who uses the two Kritzkrieg/Quick-Fix colors from above for "hurt" and "hurt a bit", respectively.
  • The pink Übercharge colors is still used for Übercharge-related events, and the blue Kritzkrieg/Quick-Fix colors are used for Kritzkrieg/Quick-fix-related events.
  • Jarate events are still in yellow, and Engineer building events are still in Engineer's orange.

Here's a list of the things that are captioned:

General Captions

The captions that aren't very spammy and will always be enabled:

  • Class teleported nearby (in their class color)

  • Class on fire (in red)

  • Engineer's buildings being built (in Engineer's orange)
  • Engineer's buildings getting sapped (in Engineer's orange)

  • Medic has full Über (in Medic's spring green)
  • Medic activated Über (in pink or blue depending on the Medi Gun used)

  • Sniper threw jarate (in yellow)
  • Spy is hit with Jarate/Mad Milk (in yellow)

  • Scout drinking BONK! (in Scout's purple)
  • Scout dodging with BONK! (in Scout's purple)

Competitive Captions

Some captions are just too damn spammy, so I made them optional for competitive use:

  • Class took heavy damage
  • Class took light damage
  • Class was buffed
  • Class identified as a disguised Spy

MvM Captions

Certain events from Mann vs. Machine are captioned as well (all are in gray):

  • A class is down
  • A class was just resurrected

  • A gate is under attack (Mannhattan)

  • A giant robot is about to enter
  • A giant robot is destroyed
  • A giant robot picked up the bomb

  • A robot is being sapped

  • A sentry buster is about to enter
  • A sentry buster is destroyed

  • A sniper is about to enter

  • A tank is about to deploy the bomb
  • A tank is destroyed
  • A tank is about to enter

  • The bomb carrier gets upgraded
  • The bomb is dropped
  • The bomb is picked up
The "Do-It-Your-Damn-Self" Kit
Unfortunately, the editor makes it rather difficult to make new captions manually.

However, you can edit the captions I already made instead if that's more your speed.

First you'll need to grab the Launcher from here[timepath.github.io]. By the way, the author, TimePath, is a pretty cool guy, so you should take a minute to say thanks if you could. Tell him I sent you.

Just open the "Source caption editor" from the Launcher, and "File>Import" and navigate to my .txt file, "closecaption_clovervidia.txt".

Now, you can select any existing caption and double-click to edit it.

When you're finished, do "File>Save as" and select "closecaption_clovervidia.dat" and overwrite it.

For those Mannly enough to put in the effort...

If you really want to add your own captions, I'll show you how.

However, be warned, this requires manual effort. The Launcher is involved, but most of the work will be done by you.

Now that we got that out of the way, lets get started.

Make sure you have the Launcher from before, as we'll need it later on.

Open the .txt file you downloaded from my Google Code project in a text editor, preferably Notepad++.

For simplicity, scroll all the way down to the bottom and add a couple newlines after the "#Comp.OFF" caption.

Now we are ready to begin.

To make a caption, first you must make a good tag. To make one, first line up the cursor with the opening quote " in front of "#Comp.OFF".



Next, type two quotes. ""



Between them, put a number sign #, followed by the name of your caption, using periods as spaces.

For example, "#Aimbot.ON".



Hit TAB until you are lined up with the actual caption from "#Comp.OFF".

Two more quotes "".



Now, type the actual caption that you want to show up.

Use <B> for bold and <I> for italics. For color, use <clr:R,G,B>, with RGB representing the separated digits from an RGB color.

Here is an example caption.

"Competitive script is <B><clr:225,64,64>OFF."

Basically, "Competitive script is" will show up in normal white text.

"OFF." will show up in bold reddish text. The color is 225,64,64.

Rinse and repeat to add more captions.

Once you're done, save it, but make sure it's in "UCS-2 Little Endian".
Captions and scripting
As I said before, you can use captions in scripting.

If you installed the captions I made, there are already some captions that are ready to use for scripts.

The first thing you'll want to do is open each of your class .cfg's. If you don't have class .cfg's yet, you don't need to do the following.

Inside each, paste the following at the top:

cc_emit #<Class>.Loaded

Replace <Class> with the name of each class with the first letter capitalized. Note that Heavy is just "Heavy" and not "HeavyWeapons" or anything.

Now, whenever you switch class, a caption will show up letting you know that the classes' .cfg has loaded successfully. If not, add me on Steam and we'll fix it.

Next thing to do is to get captions into scripts that toggle. Lets take a look at an example rocket-jumping script:

Rocket Jump alias +rocketjump "+jump;+duck;+attack" alias -rocketjump "-jump;-duck;-attack" echo "Rocket Jump toggle is ready!" alias rockjump "bind MOUSE2 +rocketjump; echo "Rocket Jump is on!"" Rocket Jump Toggle cc_emit #RJ.Disabled alias "rjToggle" "rj1" alias "rj1" "rockjump; alias rjToggle rj2; cc_emit #RJ.Enabled; play common/wpn_moveselect; " alias "rj2" "bind MOUSE2 +attack2; alias rjToggle rj1; cc_emit #RJ.Disabled; play common/wpn_denyselect; " bind MOUSE3 rjToggle bind "R" rjToggle

Basically, whenever you middle-click or hit "R", it rebinds MOUSE2 to do a standard rocket-jump.

However, it also shows a caption, using "cc_emit".

Using this technique, you can show captions whenever you toggle something on or off.

Hell, if you play without viewmodels, you could probably make some captions that tell you which weapon you have out, but I'll leave that for you to figure out yourself.

Here is a list of some of the common captions that people might want to use:

Some examples:

#Reload.ON/#Reload.OFF
"Auto-reload turned <B>ON." "Auto-reload turned <B>OFF."

#RJ.Disabled/#RJ.Enabled
"Rocket-jumping <B>DISABLED." "Rocket-jumping <B>ENABLED."

#Engi.SJ.OFF/#Engi.SJ.ON
"Sentry-jumping <B>DISABLED." "Sentry-jumping <B>ENABLED."

#Demo.Chargeturn.ON/#Demo.Chargeturn.OFF
"Charge-turn set to <B>ON." "Charge-turn set to <B>OFF."

#Autofire.R.OFF/#Autofire.R.ON/#Autofire.G.OFF/#Autofire.G.ON/#Autofire.B.OFF/#Autofire.B.ON

The letter between Autofire and ON/OFF represents which color it is: Red, Green or Blue
"<B>[+=●●] Turbo B OFF" "<B>[+=●●] Turbo B ON"

Weapon Switchers

For those of you with weapon switchers, I added some captions which will help you keep track of your weapons if you play without viewmodels.

For class-specific captions, use "#<CLASS>.<SLOT#>". So #Engineer.1 would be
"Switched to <B>Shotgun"

There are also three general ones which just say Primary, Secondary, and Melee. #Weapon.2 is
"Switched to <B>Secondary"
Compiling the captions
Using the Launcher

There are two methods of compiling. If you have the Launcher from before, you can use that.

Open the Launcher and head into the Caption Editor.

"File>Import" and navigate to "closecaption_clovervidia.txt".

"File>Save as" and overwrite "closecaption_clovervidia.dat".

Once that's all done, head back into TF2 and make sure that:
cc_lang clovervidiar
for regular captions or
cc_lang clovervidiac
for competitive captions. For more details, see this page[code.google.com].

You're just about done. To test a caption, open the console and type:
with <CAPTION.NAME.HERE> being the name of the caption.

Quickly hit ESC and you should see your handiwork on screen. Head to the next section to see how to use your newly-made captions in scripts.

Using the Batch File

If you don't want to, or are unable to use the Launcher, you can use a quick batch file I made provided you're using Windows. OS X and Linux users, you'll have to rely on the Launcher, or you can probably make your own compiler, you guys are smart enough.

"C:\Program Files (x86)\Steam\SteamApps\common\Team Fortress 2\bin\captioncompiler.exe" %1 pause

That's it. Put this into a file ending in .bat, like captioncompiler.bat, into your "resource" folder and then drop your .txt file on top of it. Once it's finished, it will prompt you to press a key to close the window.

Don't forget to modify the path to TF2's folder if you have it on a different hard drive.

If it crashes, SteamPipe probably broke something. You'll have to go to your "bin" folder in command prompt and run "captioncompiler.exe" from there and see what the problem is. It'll likely complain about a "gameinfo.txt" file and not being able to find it, which means you'll have to set the path for it using "-game <path to the folder that contains gameinfo.txt>" after "captioncompiler.exe". I believe that file is in "teamfortress/tf" so check in there first.

If that runs without crashing, then you're good to go. Now you have to tell it where your captions are, so your full command should be "captioncompiler.exe -game <path to that file> <path to caption .txt file>".
A note about clovervidiar and clovervidiac
clovervidiar and clovervidiac are very much the same. The only difference being clovervidiac puts all of the voiceline-based captions in bold and uppercase, so they would look like:

DEMOMAN TELEPORTED NEARBY.

as opposed to clovervidiar, which uses sentence case:

Demoman teleported nearby.

Supposedly it's easier to read and notice in a hurry when it's bolded and in uppercase, but you can make that decision yourself. Both versions have ALL the captions I've added, including the class is hurt, class is hurt a bit, class is buffed, etc. You just need to enable them when you want them following the instructions in the installation section.
To HUD makers
If you are the creator/updater of a HUD and you want to distribute my captions or a customized version of them with your HUD, add me and we can work something out.

And if you don't need any extra or want to distribute them modified, that's fine, but I'd appreciate some acknowledgement somewhere, like leaving the #About.CC caption in, which has my name and the version number, or just my name and a link to my Steam profile in an accompanying text file.

If you make modifications to them, you'll have to perform updates manually when new taunts and other assorted TF2 things come out that have additional captions. You can do that by just downloading my current captions and running a diff between them to see what I added.

KBNHud[github.com], ToonHUD[toonhud.com], and budhud[github.com] all come with Clovervidia's Captions, and there's probably more out there that do as well. The required files are already in the "resource" folder of the HUD, so if you want to use them, follow the installation instructions but skip downloading the files since the HUD comes with them. Some HUDs may have their own steps to follow to enable them, like folders to rename, so if my instructions don't work, check the page you downloaded the HUD from, and see there's special instructions there.
A few basic modifications
Making the caption box transparent

If you want to make the box around the caption text transparent, it's pretty simple.

You'll need your hudlayout.res file. If you have a custom HUD, check the "scripts" folder and it will be in there. If you use stock HUD, you'll need to extract it from the VPK.

Open the .res in a text editor and look for a HudCloseCaption near the middle.

There will be a "BgAlpha" a few lines down. Change the number next to it to "0" to make the box transparent.

Moving the caption box

Moving the caption box is a similar process, and it's also pretty simple.

Here is a guide, courtesy of Casperr once again:


You'll need to go into your hudlayout.res file from above, and look for HudCloseCaption again.

There will be an "xpos" and a "ypos" a few lines down. Adjust those as desired if you want to move the box to one side.

Adjusting the font size

If you want to change the size of the text itself, it's also a simple process.

You'll need your clientscheme.res file. If you have a custom HUD, check the "resource/ui" folder for your HUD (it might be in the "custom" folder and named after the HUD itself) and it will be in there. For example, for KBNHud, the "ui" folder would be under "custom/KBNHud/resource/ui".
If you use the stock HUD, you'll need to extract it from the VPK.

Open the .res in a text editor and look for "CloseCaption_Normal", "CloseCaption_Italic", "CloseCaption_Bold", and "CloseCaption_BoldItalic". There is a "CloseCaption_Small", but that's only used by the developer commentary captions.

Each of those fonts refers to a font used by captions. _Normal is the normal font, _Italic is for italicized text, _Bold for emboldened text, and _BoldItalic for emboldened and italicized text.

Change the "tall" value for each to change the size. The "weight" value adjusts the thickness, so you can adjust that to make the characters thicker or thinner.
If you're having problems...
If you're having problems with the Launcher...

You should probably contact the author of the Launcher, TimePath. If he isn't online, you can add me and I'll relay the message to him when I see him next.

If you're having problems with your HUD...

Currently, I am aware that rayshud and toonhud break the formatting on some of the captions by showing the formatting codes in the caption box instead of doing what they are meant to do (color the text, in this case) like this:


...then you have a problem. Both rayshud and toonhud, and possibly others, make the caption box too small and cause the caption box to break the captions within.

Fortunately, you can solve this easily by editing your hudlayout.res. Simply replace your existing "HudCloseCaption" area inside with this:

HudCloseCaption { "fieldName" "HudCloseCaption" "visible" "1" "enabled" "1" "xpos" "c200" "ypos" "302" [$WIN32] "wide" "200" "tall" "100" [$WIN32] "BgAlpha" "0" "GrowTime" "0.25" "ItemHiddenTime" "0.2" "ItemFadeInTime" "0.15" "ItemFadeOutTime" "0.3" "topoffset" "0" }

If you're having other problems...

You should probably contact me directly. Things like caption colors being weird, or a font is messed up, or something that doesn't look right. Sometimes it's my fault, other times your HUD might be interfering with my captions somehow, like I know rayshud manages to break my captions through some wizardry, so feel free to ask, and I'll do what I can.
Special Thanks
Let's cut the crap here, these people helped me quite a bit, and they deserve some mention.

TimePath, as mentioned above, made that awesome launcher tool with a caption compiler/editor. Makes it really easy to edit captions if you don't want to do it by hand in a text editor. Completely reasonable, so feel free to use it. He's a pretty cool guy.

SCAgamer helped me recently with getting some Medic captions to be more user-friendly, and since he plays Medic competitively, he's the perfect tester to make these captions even better than before.

Casperr made those helpful videos on installation and moving the caption box around, so props to him for doing that.

Rho_ helped me finally fix that issue with certain HUDs that caused the captions to break by dumping the formatting tags into the caption box instead of the formatted text itself. He provided the screenshot in the problems section, as well as the revised hudlayout.res code to resposition and resize the caption box to make it work properly.

Tueland is the idea guy.
Closing thoughts
Well, that's about all there is to it.

I am well aware that there are other close captions available on Google Code as well as bundled with some HUDs.

You're free to choose whichever ones you want to use.

My goal with making these captions was to let me know of important events going on, like a nearby sentry being sapped, or people on fire nearby.

Things like that are for everyday TF2 players.

Those other captions are built for competitive players. They have captions like "classes getting buffed" or "classes taking light damage". Things like that are useful, but they happen too often and will often crowd the caption box, blocking out more useful things.

If you want to try my own flavor of captions meant for competitive players, try this[github.com] out. It might not be as thorough as the others, but it's meant to get as much information across without spamming the caption box full of repeated actions.

And if you want some other modification made to the captions themselves, like changing the colors of a class to something else or anything, let me know and I'll see what I can do.

That's about all I have to say. Suggestions and comments can go down below.

Peace.
106 Comments
Bo9da Feb 3 @ 2:56pm 
so does it even work in 2024?
[RadioMann]Arsonare Sep 17, 2023 @ 8:41pm 
are there console commands in tf2 that let me resize and change the position of the captions?
theminer49er Feb 16, 2023 @ 2:50am 
@Niterux
Launcher download is dead, but from what I've gathered it was very situational. Fortunately, it's not hard to compile close captions.
The guide mentions it in the "Compiling the captions" section.

"Using the Batch File" is the segment you're looking for.
[SKVR] Clener74 Jan 4, 2023 @ 6:16pm 
It means that the file is missing, as you can see in your error message. That's on the server's end for losing the file; nothing you can do except find a different site that's hosting the file, if there are any.
Festive Niterux Jan 4, 2023 @ 2:39pm 
When I click the download button for Launcher I just get
{
"errors" : [ {
"status" : 404,
"message" : "File not found."
} ]
}
does anybody know how to fix this?
Dr.QuickFix Nov 30, 2021 @ 8:25am 
to make the text file a cfg file use these steps

open up the folder your autoexec is in.
on the top of that window, click 'view'
there should be an option 'file name extensions' with a check box next to it.
click said checkbox.
rename file autoexec.cfg.
profit.
[SKVR] Clener74 May 18, 2021 @ 6:05pm 
I've been using captions for years from a different source, however, there's a persistent problem that despite the captions displaying, the console keeps logging "no caption found for" error messages. Is there any way to avoid this besides muting it with con_filter_text_out ?
KneedTime Feb 12, 2021 @ 1:28pm 
can this get me banned? I hope not, bc these are just captions
Bored guy Jan 8, 2021 @ 5:56am 
I'm not sure if you would know, but when I put the autoexec.cfg using clovervidiaw, RAYShud makes it colored, but I found a notepad file with captions developed by you, that was added to RAYShud, and found a huge notepad file, you said it might do some wizardry, it doesn't, just overrides clovervidiaws, but how would you fix it?

If you want to "skim" through the notepad file, well here it is because idk how to hyperlink:
file:///C:/Program%20Files%20(x86)/Steam/steamapps/common/Team%20Fortress%202/tf/custom/rayshud/resource/closecaption_english.txt
Slad Dec 11, 2019 @ 10:07am 
I've installed the pre-made captions but I only get the "hurt" message and not "hurt a bit".