Left 4 Dead 2

Left 4 Dead 2

97 ratings
Third Person in L4D2 (No mods)
By WhiteZet
L4D2 has third person by default, just hidden behind console commands.
This guide is more for personal use, but if you want to try 3rd person for yourself this can help.
   
Award
Favorite
Favorited
Unfavorite
About third person in L4D2
You can't make third person aiming perfect with normal sized models, since the bullets always shoot from first person camera. There are some mods you can use to improve the third person experience outside of the config file, but most don't work in dedicated servers & require localhost/singleplayer/sv_cheats 1.

Warning: Shotgun sounds are bugged for third person, there's no 'proper' fix I found. They all came with other unwanted baggage or didn't work.
How to enable third person
Make a file called autoexec.cfg in '.../Steam/steamapps/common/Left 4 Dead/left4dead2/cfg/' and apply your preferred third person commands. I provide code you can copy and paste at the end of this guide.

The autoexec.cfg is a file that should run by default when you launch the game. It basically types in the config to the game console.

I personally never had to execute the autoexec.cfg file in console or using the game launch options, so it should work automatically. If it's not executed by default do the following:

Right click on Left 4 Dead 2 -> Properties -> You should be in general options & there is a "Launch Options" section. Type: +exec autoexec.cfg , then save it & launch game.
How to get the best configuration
Not all animations & models are created equal.
Since L4D2 always shoots from 1st person camera, you want your "c_thirdpersonshoulderoffset" & "c_thirdpersonshoulderheight" to be as close to 0 as possible.

Some models also move differently & are larger than others, meaning some characters are more obstructive when playing in 3rd person.

Comparing shoulder height vs offset values:
  • If your camera is centered above model, when you aim aim at head level, bullets will likely still hit the body.
  • If your camera is centered to the side, you will need a lot more guesswork since you have to aim at air.
  • The lower the values, the closer to the point your bullets come from are

Why some character models are better than others:

In third person some models stutter around more than others, their model is larger or their animations are terrible. Issues usually start to pop up once you start crouching and moving to the sides.

If you play vanilla (no mods) and use similar camera distances as I do, c_thirdpersonshoulderoffset 25 is probably the MINIMUM you want to do.

Alternative is to have c_thirdpersonshoulderheight 10 minimum and shoulder offset can be whatever.
If you have smaller character models than default, your offsets can be toned down, but it heavily depends.

I can recommend Instant Worldmodel Turnrate if you play on localhost / singleplayer.
https://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=2863006488 Biggest benefit of this mod is it makes moving & crouching animation less obstructive. If the mod is fully functional on the server, it will however also completely remove the ability to look at your character from the front/sides by gluing the camera to your back.

With some testing here's my opinion on what characters obstruct your crosshair the least using this mod: Rochelle > Ellis > Coach > Zoey > Bill, Louis, Francis > Nick
High Shoulder Switch config
F3 to enable or disable third person.
Alt to switch shoulder camera.
Mouse5 to use centered camera.
bind "f3" "thirdpersonshoulder" c_thirdpersonshoulderaimdist "1200" c_thirdpersonshoulderheight "0" c_thirdpersonshoulderdist "37" c_thirdpersonshoulderoffset "17" c_thirdpersonshouldersnapto "1" c_mindistance "37" c_maxdistance "37" cam_ideallag "0" cam_idealpitch "0" cam_idealyaw "0" cam_collision "1" bind "alt" "switchviewHigh" alias switchviewHigh "c_thirdpersonshoulderoffset -25; c_thirdpersonshoulderheight 0; c_thirdpersonshoulderdist 37; c_mindistance 37; c_maxdistance 37; bind alt normalviewHigh" alias normalviewHigh "c_thirdpersonshoulderoffset 25; c_thirdpersonshoulderheight 0; c_thirdpersonshoulderdist 37; c_mindistance 37; c_maxdistance 37; bind alt switchviewHigh" bind "mouse5" "middleviewHigh" alias middleviewHigh "c_thirdpersonshoulderoffset 0; c_thirdpersonshoulderheight 15; c_thirdpersonshoulderdist 46; c_mindistance 46; c_maxdistance 46"
Low & High centered config
Alt to change between First Person and Third Person.
X to change between Low & high camera.

bind "alt" "thirdpersonshoulder" c_thirdpersonshoulderaimdist "1200" c_thirdpersonshoulderheight "15" c_thirdpersonshoulderdist "50" c_thirdpersonshoulderoffset "0" c_thirdpersonshouldersnapto "1" c_mindistance "50" c_maxdistance "50" cam_ideallag "0" cam_idealpitch "0" cam_idealyaw "0" cam_collision "1" bind "x" "switchviews" alias switchviews "c_thirdpersonshoulderoffset 0; c_thirdpersonshoulderheight 0; c_thirdpersonshoulderdist 50; c_mindistance 50; c_maxdistance 50; bind x switchviews1" alias switchviews1 "c_thirdpersonshoulderoffset 0; c_thirdpersonshoulderheight 15; c_thirdpersonshoulderdist 37; c_mindistance 55; c_maxdistance 55; bind x switchviews"
Low & High Shoulder Switch config
F3 to enable or disable third person.
Alt to switch shoulder camera.
Mouse5 to use centered camera.
X to change between low & high camera angles.

bind "f3" "thirdpersonshoulder" c_thirdpersonshoulderaimdist "1200" c_thirdpersonshoulderheight "0" c_thirdpersonshoulderdist "37" c_thirdpersonshoulderoffset "25" c_thirdpersonshouldersnapto "1" c_mindistance "37" c_maxdistance "37" cam_ideallag "0" cam_idealpitch "0" cam_idealyaw "0" cam_collision "1" bind "alt" "switchviewHigh" alias switchviewHigh "c_thirdpersonshoulderoffset -25; c_thirdpersonshoulderheight 0; c_thirdpersonshoulderdist 37; c_mindistance 37; c_maxdistance 37; bind alt normalviewHigh" alias normalviewHigh "c_thirdpersonshoulderoffset 25; c_thirdpersonshoulderheight 0; c_thirdpersonshoulderdist 37; c_mindistance 37; c_maxdistance 37; bind alt switchviewHigh" bind "mouse5" "middleviewHigh" alias middleviewHigh "c_thirdpersonshoulderoffset 0; c_thirdpersonshoulderheight 15; c_thirdpersonshoulderdist 46; c_mindistance 46; c_maxdistance 46" alias switchviewLow "c_thirdpersonshoulderoffset -25; c_thirdpersonshoulderheight -15; c_thirdpersonshoulderdist 33; c_mindistance 33; c_maxdistance 33; bind alt normalviewLow" alias normalviewLow "c_thirdpersonshoulderoffset 25; c_thirdpersonshoulderheight -15; c_thirdpersonshoulderdist 33; c_mindistance 33; c_maxdistance 33; bind alt switchviewLow" alias middleviewLow "c_thirdpersonshoulderoffset 0; c_thirdpersonshoulderheight 0; c_thirdpersonshoulderdist 55; c_mindistance 55; c_maxdistance 55" bind "x" "switchviews" alias switchviews "bind mouse5 middleviewLow; bind alt switchviewLow; bind x switchviews1; c_thirdpersonshoulderoffset 25; c_thirdpersonshoulderheight -15; c_thirdpersonshoulderdist 30; c_mindistance 30; c_maxdistance 30" alias switchviews1 "bind mouse5 middleviewHigh; bind alt switchviewHigh; bind x switchviews; c_thirdpersonshoulderoffset 25; c_thirdpersonshoulderheight 0; c_thirdpersonshoulderdist 37; c_mindistance 37; c_maxdistance 37"
Low & High Right Shoulder config
F3 to enable or disable third person.
Alt to switch between shoulder & center views
X to change between low & high camera angles.

bind "f3" "thirdpersonshoulder" c_thirdpersonshoulderaimdist "1200" c_thirdpersonshoulderheight "0" c_thirdpersonshoulderdist "37" c_thirdpersonshoulderoffset "25" c_thirdpersonshouldersnapto "1" c_mindistance "37" c_maxdistance "37" cam_ideallag "0" cam_idealpitch "0" cam_idealyaw "0" cam_collision "1" bind "alt" "middleviewHigh" alias normalviewHigh "c_thirdpersonshoulderoffset 25; c_thirdpersonshoulderheight 0; c_thirdpersonshoulderdist 37; c_mindistance 37; c_maxdistance 37; bind alt middleviewHigh" alias middleviewHigh "c_thirdpersonshoulderoffset 0; c_thirdpersonshoulderheight 15; c_thirdpersonshoulderdist 50; c_mindistance 50; c_maxdistance 50; bind alt normalviewHigh" alias normalviewLow "c_thirdpersonshoulderoffset 25; c_thirdpersonshoulderheight -15; c_thirdpersonshoulderdist 33; c_mindistance 33; c_maxdistance 33; bind alt middleviewLow" alias middleviewLow "c_thirdpersonshoulderoffset 0; c_thirdpersonshoulderheight 0; c_thirdpersonshoulderdist 55; c_mindistance 55; c_maxdistance 55; bind alt normalviewLow" bind "x" "switchviews" alias switchviews "c_thirdpersonshoulderoffset 25; c_thirdpersonshoulderheight -15; c_thirdpersonshoulderdist 33; c_mindistance 33; c_maxdistance 33; bind alt middleviewLow; bind x switchviews1" alias switchviews1 "c_thirdpersonshoulderoffset 25; c_thirdpersonshoulderheight 0; c_thirdpersonshoulderdist 37; c_mindistance 37; c_maxdistance 37; bind alt middleviewHigh; bind x switchviews"
Reverse camera
This is an example of how you can make camera appear in front of your model.

The code snippet here basically has 2 separate aliases "reverseview" & "returnview".
Upon pressing mouse5, it will first change camera angle, then rebind your key.
They alternate like this: reverseview -> returnview -> reverseview -> returnview...

It should work pretty well for all the configs above, but may require tweaking.

Make sure keybind isn't already used & to tweak the code yourself if the values here don't work for you
bind "mouse5" "reverseview" alias reverseview "c_thirdpersonshoulderoffset 30; cam_idealyaw 140; c_thirdpersonshoulderaimdist 0; bind mouse5 returnview" alias returnview "c_thirdpersonshoulderoffset 25; cam_idealyaw 0; c_thirdpersonshoulderaimdist 1200; bind mouse5 reverseview"
Images
Here's how the configs should look, left shoulder views excluded.
Changes
27.06.2023: Cleaned & altered code, added pictures at the end so people know what to expect.
28.06.2023: Added centered only config with low & high camera.
17.02.2025: Rewrote some sections to be easier to read & understand.
20.06.2025: Updated the section on autoexec.cfg to explain how to run it if it doesn't work manually.
21 Comments
Sascha raccoon 18 Jul @ 11:29am 
one is the best one for big avator lol
Cocodin® 21 Jun @ 12:02pm 
Its working thanks you guys
WhiteZet  [author] 21 Jun @ 11:37am 
Yeah, the one you want
Cocodin® 20 Jun @ 12:20pm 
So should I put the thirdperson codes in the autoexec ?
WhiteZet  [author] 20 Jun @ 10:41am 
The autoexec.cfg is a file that should run by default when you launch the game. It basically types in the config to the game console. If it's not executed by default:

Right click on Left 4 Dead 2 -> Properties -> You should be in general options & there is a "Launch Options" section. Type: +exec autoexec.cfg, then close it & launch game.
Cocodin® 17 Jun @ 1:25pm 
Could you explain a bit more, because I’m not sure if it needs to be executed with the autoexec, and also I don’t really understand how the autoexec works."
Hope Soda 23 Feb @ 5:44pm 
That fixed it thanks
WhiteZet  [author] 23 Feb @ 6:18am 
The screenshots represent how my configs look for me ingame. Whatever that is, it's probably not related to the configs.

But perhaps make sure you don't have any crosshair settings also in your config, and if you don't but it's still hidden, then maybe try typing crosshair commands like "crosshair 1" or "cl_crosshair_alpha 255" in. Hopefully you get it fixed.
Hope Soda 23 Feb @ 3:00am 
this removes my crosshair is that supposed to happen?
Minako kotone 14 Feb @ 10:17pm 
I just mostly need my camera to go a full 360 without it moving the character