User:Brandished/Sandbox 1: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
mNo edit summary
m (Unicodifying, replaced: [[Image: → [[File: (22))
 
(14 intermediate revisions by one other user not shown)
Line 1: Line 1:
[[Image:1st_l4d_map_1.gif|frame|right|The map layout.]]
Thumbnails and image scaling.
For this tutorial we will be making a simple 2 level campaign that never ends.  Sounds fun, right?  Well, maybe not, but the purpose really isn't to have a full campaign, but to explain the basics of level construction in L4D.
<br>
First, lets cover what our L4D campaign will need to work right:
* A director
* A starting point
* 2 safe house doors
* Some weapons, ammo, and health
* A rescue closet
* A change-level
* A fog controller
<br>
The image on the right will be used for our map layout during this tutorial.{{clr}}


== The Spawn Room ==
== Pixel scaling, no thumb tags, no align ==
To start with will make the room on the far left the initial spawn room  by adding an <code>info_player_start</code> entity to it. Next, let's add an <code>info_director</code> and a <code>env_fog_controller</code>, make sure the fog_controller's "Fog Enable" property is set to "Yes".
[[File:nav_edit.jpg|200px|Before split]]
[[File:nav_split.jpg|200px|After split]]
[[File:nav_mark.jpg|200px|Marked first area]]
{{clr}}
== Thumb tags, default align ==
[[File:nav_edit.jpg|200px|thumb|Before split]]
[[File:nav_split.jpg|200px|thumb|After split]]
[[File:nav_mark.jpg|200px|thumb|Marked first area]]
{{clr}}
== Thumb tags, left align ==
[[File:nav_jump.jpg|200px|thumb|left|'''Jump areas''' (marked with green X's) tell bots that they must jump to reach the higher connected area, and that this area is not usable as a hiding/sniping spot.]]
[[File:nav_crouch.jpg|200px|thumb|left|'''Crouch areas''' (marked with a blue diagonal slash) force bots to crouch when moving through this area.]]
[[File:nav_end_area.jpg|200px|thumb|left|Area created]]
{{clr}}
== Thumb tags, right align ==
[[File:nav_begin_area.jpg|200px|thumb|right|Start dragging area at first corner]]
[[File:nav_drag_area.jpg|200px|thumb|right|Drag area extent]]
[[File:nav_end_area.jpg|200px|thumb|right|Area created]]
{{clr}}
== Thumb tags, center align ==
[[File:nav_edit.jpg|200px|thumb|center|Before split]]
[[File:nav_split.jpg|200px|thumb|center|After split]]
[[File:nav_mark.jpg|200px|thumb|center|Marked first area]]
{{clr}}
== Thumb tags, left, center, right align ==
[[File:nav_edit.jpg|200px|thumb|left|Before split]]
[[File:nav_split.jpg|200px|thumb|center|After split]]
[[File:nav_mark.jpg|200px|thumb|right|Marked first area]]
{{clr}}
== Gallery tags ==
<gallery>
Image:nav_edit.jpg|Before split
Image:nav_split.jpg|After split
Image:nav_mark.jpg|Marked first area
</gallery>
{{clr}}
== Table enclosure ==
=== Model Description ===


For a supplies area create a small brush to act as a table and add these entities on top:
'''Skins'''
* health kits, 4 <code>weapon_first_aid_kit_spawn</code> entities
{|
* 2 weapons; <code>weapon_smg_spawn</code> and <code>weapon_pumpshotgun_spawn</code>.
| [[File:Doormain01 handle1 skin1.jpg|none|thumb|50px|Skin 1]]
* an ammunition resupply, <code>weapon_ammo_spawn</code>
| [[File:Doormain01 handle1 skin2.jpg|none|thumb|50px|Skin 2]]
 
| [[File:Doormain01 handle1 skin3.jpg|none|thumb|50px|Skin 3]]
Now for an exit add a "<code>prop_door_rotating_checkpoint</code>" entity. For it's properties, name it "checkpoint_exit", set its "body" property to "1", the "Spawn Position" to "Closed" (spawnpos keyvalue 0), the "world model" to "models/props_doors/checkpoint_door_01.mdl", and the make sure the "Starts Open" flag is unchecked.  Make sure the side of the door with the EXIT sign in the center is facing the inside of the room.
| [[File:Doormain01 handle1 skin4.jpg|none|thumb|50px|Skin 4]]
{{note|If the prop_door_rotating_checkpoint set in anymore then 8 units from the wall outside the safehouse, the infected may try to climb over it.}}
|}
 
That should finish the starting point, but before we move on, lets add a <code>info_landmark</code> to the room as well, name it "landmark_a". Well go more into detail on this later.
 
== Rescue closets ==
Next well make this room into a place for dead players to respawn (referred to as a rescue closets). Rescue closets are fairly basic and only consist of 4 entities, 3 <code>info_survivor_rescue</code> entities and a <code>prop_door_rotating</code>.  Add the 3 <code>info_survivor_rescue</code> entities to the inside of the room, next up is the door. You will want a space with the dimensions of 56 width and a height of 104 for the door to sit in. Add the <code>prop_door_rotating</code> and set it's world model to "models/props_doors/doormainmain01.mdl".
 
== The safe house and changing levels ==
Now to connect this map to another inside the campaign with a safe room.  To start with, well add another "<code>prop_door_rotating_checkpoint</code>" entity for the safe houses entrance.  This one is set up a bit different then the last one.  Open its properties and set the name to "checkpoint_entrance", the "body" property to "0", the "Spawn Position" to "Open Forward" (spawnpos keyvalue 1), the "world model" to "models/props_doors/checkpoint_door_02.mdl", and the make sure the "Starts Open" flag is checked. You want the side of the door with the picture of the house facing outside.
 
To finish setting up the transition from one map to the next we still need to add an <code>info_landmark</code> and a <code>trigger_changelevel</code>. First add the <code>info_landmark</code> to the center of the room near the ceiling, then open it's properties and name it "landmark_2".  Now create a large brush to cover the floorspace inside the safehouse and tie it to the <code>trigger_changelevel</code> entity, make sure the brush comes in contact with the floorspace inside the room (doesn't necessarily have to overlap the floor space, but it does have to at least touch it). Open the changelevel's properties and set the landmark name to the one we just created, "landmark_b" and for the "next map" property, enter "lst_l4dmap_b".
 
== Building a navigation mesh ==
For survivor bots and infected to be able to move, you will need to create a navigation mesh ("mapname.nav" file) for your map. To build a basic mesh you need to have the map already compiled and loaded.  Once the map is running, aim your crosshairs at the floor space, open up the console in game, and then type the following:
: <code>sv_cheats 1</code>
: <code>nav_edit 1</code>
: <code>nav_mark_walkable</code>
: <code>nav_generate</code>
 
The map will be reloaded after you type nav_generate, and if all goes well, we should no longer have the "NAV ERRORS - Map is unplayable!" message on the screen when the map loads.  With "nav_edit 1" still set, lets take a look at what nav_generate did.  We will do this using the "select_with_attribute A" command.  What this console command does is select all nav areas that have been marked with the attribute "A". For instance, by using "select_with_attribute CHECKPOINT", all the nav areas that have been marked with the "CHECKPOINT" attribute would be highlighted.  
 
Open the console and type:
: select_with_attribute DOOR
:: Notice the 4 nav squares that were highlighted, this tells the bot AI there is a door in this location.
 
Now type:
: select_with_attribute CHECKPOINT
 
Now type:
: select_with_attribute RESCUE_CLOSET
 
Now type:
: select_with_attribute ESCAPE_ROUTE
 
== Making the second chapter ==
With the first map out of the way, the second map can be made quite easily.
 
== See Also ==
* -
* -

Latest revision as of 02:38, 7 January 2024

Thumbnails and image scaling.

Pixel scaling, no thumb tags, no align

Before split After split Marked first area

Thumb tags, default align

Before split
After split
Marked first area

Thumb tags, left align

Jump areas (marked with green X's) tell bots that they must jump to reach the higher connected area, and that this area is not usable as a hiding/sniping spot.
Crouch areas (marked with a blue diagonal slash) force bots to crouch when moving through this area.
Area created

Thumb tags, right align

Start dragging area at first corner
Drag area extent
Area created

Thumb tags, center align

Before split
After split
Marked first area

Thumb tags, left, center, right align

Before split
After split
Marked first area

Gallery tags

Table enclosure

Model Description

Skins

Skin 1
Skin 2
Skin 3
Skin 4