I've been running Team Fortress 2 just fine for some time now on my Ubuntu 12.10 system. Today when I started Steam, an update was downloaded for TF2. Now whenever I start TF2, I get a black screen with an error message (see attached screen shot). If I click "Okay", TF2 exits.
Oops, forgot to mention the actual error:
"Shader 'Bik' for material 'fullscreenvideomaterial' not found."
Do you have any symlinked directories in your tf2 path?
And what happens if you start with "-novid"?
Oh. Yes, I had a symlink from .local/share/Steam/SteamApps to a larger volume. My home directory does not have enough space to store the TF2 files. I deleted the symlink and replaced it with a bind mount, which fixed the startup crash. Strangely, the symlink had been working for a while previously.
There really should be a way to install in an alternate location. Unfortunately my (small) SSD has become nearly full.
I just got this error today too. Is there a fix in the works to allow it to work over a symlink? My SSD is way too small to support putting all the games in my home directory either. (...and BTW, why the hell does any application consider that a good idea -- shouldn't the permanent game data go in /usr/local/games or something? By putting them in my home directory, it also distorts the size and efficiency of my nightly data backups: /home/user/, I care about; /usr/ I do not. /rant=off :)
Disclaimer: this is a hackish workaround
The only way I've figured out to fix this problem is to store the entire contents of the SteamApps directory on another disk. Create an empty SteamApps directory where the original data was. That way, Steam will start up properly no matter what (albeit with no games if you don't fix it after each boot). Then you create a bind mount on the SteamApps directory pointing to the other disk's SteamApps data. This has worked flawlessly for me.