Archive | Tutorials RSS feed for this section

Beta’ Late Than Never

25 May

L4D_Tools_installLast week sometime, the beta for Valve’s answer to an official L4D SDK (Software Development Kit) was released as the Left4Dead Authoring Tools. With each announcement Valve made about the release, we grew confident that we’d not see the SDK before the Spring 09′ semester had already ended. Turns out we were correct, but at the least it’s finally here and some much needed clarity is brought to the standards of developing for this game. There’s more or less significance in the distinction between this and Source SDK itself as well (which is used for every other Valve title), because it’s left us pondering, “Why not just add a new engine version/category within the plain-old Source?”. The simpler answer is in being a beta, but I feel going into some of the bullet points helpful towards what we need to do from here.

Continue reading


Generating the NAV File

9 Apr

UPDATE 04/2010 by cr0ybot:  Abandon all hope, ye who enter here!


This “tutorial” was written back in April of ’09, before Left4Dead’s SourceSDK update became publicly available in June ’09! Yes, that’s right, the first Left4Dead. Now, Valve has Left4Dead Authoring tools, and probably lots of documentation at the developer wiki. Therefore, everything I wrote here, trying to get a mod to work without official support, is probably wrong.

Proceed with caution.


Pre-NAV-generation checklist:

Starting Saferoom:

  • info_player_start
  • 4 info_survivor_position
  • info_director
  • env_fog_controller (Fog Enable = yes)
  • info_landmark
  • prop_door_rotating_checkpoint (“checkpoint_exit”; body = 1; Spawn Position = Closed)
  • 4 weapon_first_aid_kit_spawn
  • weapon_smg_spawn
  • weapon_pumpshotgun_spawn
  • weapon_ammo_spawn

Rescue Closets:

  • 3 info_survivor_rescue
  • prop_door_rotating

Ending Saferoom:

  • prop_door_rotating_checkpoint (“checkpoint_entrance”; body = 0; Spawn Position = Open)
  • info_landmark
  • trigger_changelevel (must touch floor)

In-game NAV Generation:

NOTE: If your map has an “event” that opens a crucial path, open the path in-game before you generate the NAV

sv_cheats 1
nav_edit 1
nav_mark_walkable (mark all levels, including rooftops)

After inevitable errors, check crucial NAV markers:

select_with_attribute CHECKPOINT
select_with_attribute RESCUE_CLOSET
select_with_attribute ESCAPE_ROUTE

Manually assign NAV markers by pointing at NAVS or using nav_gui to select:

mark CHECKPOINT (start and end room)

If you suspect disconnected NAVs, especially with stairs/ladders:

NOTE: using the flood select option in the nav_gui will allow you to easily find disconnected NAVs

General disconnections:

nav_trouble_report orphan
nav_mark (1st NAV)
nav_connect (2nd NAV)
nav_mark (2st NAV)
nav_connect (1nd NAV)


nav_mark (at base of ladder)
nav_connect (on ladder)
nav_mark (on ladder)
nav_connect (at top of ladder)


nav_mark (top or bottom)
nav_splice (other side)

If all else fails:

director_debug 1
nav_recompile_flow (untested)

Helping the NAV along:

mark OBSCURED (areas that zombies should spawn, like behind props)
mark EMPTY (areas that should be clear always; mobs will still spawn during panic events)
mark NO_MOBS (areas that will not spawn mobs)
mark BATTLEFIELD (apparently good for spawning zombies in wide-open areas)
mark PRECISE (AI should be careful to walk exactly where the NAV is located; good for tight ledges with a chance of falling)

Experimentation : This will sting a little…

7 Apr

I’d like to introduce myself to the blog! I’m the English guy…

Experimentation was the best term we could come up with that suited the role of figuring out the Source SDK and it’s capabilities when creating a new Left 4 Dead campaign. I have accepted this role despite having the least experience in mapping for source games, the idea being that I can get up to speed and move ahead into the ‘backdoor’ territory of mapping for L4Din a pre-official L4D SDK world, for the projects sake and my own. So far this process has been successful and I’ve really got the tools under control.

As a result of these investigations I’m creating a simple text document with details on how to work with L4D specific controls in the SDK, such as appropriate names for entities and how they work.

My most recent How To is available right here for all to see, and in the end, I hope it provides simple enough access to the information not only for the team, but also for the source modding community as a whole.