File paths TF2 reads from/writes to are defined in tf\gameinfo.txt . By editing that file you can redirect TF2's read/write paths (idea from here). This is handy for those who render demos with maxquality config/VDMs/extra mods, because it can keep those separate from your normal setup.
Works like this:
You make a new folder next to the tf folder (tf_movie for example) and put all your moviemaking stuff there. It will work just like the regular tf folder.
tf_movie
├ cfg
│ └ config.cfg < this is the file TF2 saves settings to
├ custom
│ ├ mastercomfig-ultra.vpk
│ └ HUD
│ └ ...
└ demos
└example_demo.vdm
Then you can change gameinfo.txt to load this folder when you want to record, and change it back when you're done. Stuff inside tf will be untouched.
Also nice thing: if you do this with your normal setup too, you can have a clean install just be deleting that folder.
Edited gameinfo.txt. Sets tf_movie as the top most read and the only write path, disables tf/custom .
"GameInfo"
{
game "Team Fortress 2"
type multiplayer_only
nomodels 1
nohimodel 1
nocrosshair 0
hidden_maps
{
"test_speakers" 1
"test_hardware" 1
}
nodegraph 0
GameData "tf.fgd"
InstancePath "maps/instances/"
advcrosshair 1
supportsvr 1
FileSystem
{
SteamAppId 440
// - - - - - - - - - - - - - - -
// Engine search paths
// - - - - - - - - - - - - - - -
// Paths relative to hl2.exe 's directory.
// You can use a full path if you need to point elsewhere.
// |gameinfo_path| ... where gameinfo.txt (this file) is.
// |all_source_engine_paths| ... directory containing HL2 shared content.
// Writes go to the first suitable path.
// Reads scan all suitable paths. Files from paths higher up the list override files from lower entries.
// * mounts every subfolder/VPK in the currect directory
// "_english" replaced if localization is different.
// "game_lv" mounted as "game" if low violence on, else ignored.
// To see the paths in game, type "path" at the console.
// Code that handles this:
// public\filesystem_init.cpp > FileSystem_AddLoadedSearchPath, FileSystem_LoadSearchPaths
SearchPaths
{
// Custom folder, subfolders mounted only when the game is booted.
game+mod+custom_mod tf_movie/custom/*
//game+mod+custom_mod tf/custom/*
// VPKs
game_lv tf/tf2_lv.vpk
game+mod tf/tf2_textures.vpk
game+mod tf/tf2_sound_vo_english.vpk
game+mod tf/tf2_sound_misc.vpk
game+mod+vgui tf/tf2_misc.vpk
game |all_source_engine_paths|hl2/hl2_textures.vpk
game |all_source_engine_paths|hl2/hl2_sound_vo_english.vpk
game |all_source_engine_paths|hl2/hl2_sound_misc.vpk
game+vgui |all_source_engine_paths|hl2/hl2_misc.vpk
platform+vgui |all_source_engine_paths|platform/platform_misc.vpk
// Now loose files.
mod+mod_write+default_write_path tf_movie
mod tf
// Add the TF directory as a game search path. This is also where where writes
// to the "game" path go.
game+game_write tf_movie
game tf
// Where the game's binaries are
gamebin tf/bin
// Last, mount in shared HL2 loose files
game |all_source_engine_paths|hl2
platform |all_source_engine_paths|platform
// Stuff you download when connecting to a server
game+download tf_movie/download
}
}
ToolsEnvironment
{
"Engine" "Source"
"UseVPLATFORM" "1"
"PythonVersion" "2.7"
"PythonHomeDisable" "1"
}
}
NOTE 1: If you have your configs in tf\cfg (why?), they will be loaded. Move them into your custom folder.
NOTE 2: SDR plugin still needs it's config.json in tf. Something similar can probably happen with other plugins too.