Contents
Setup
This guide assumes that you have installed Narbacular Drop on your computer and have played the game through at least once, to get an understanding of the portal mechanic. This ensures that you have a relative idea of how a Narbacular Drop level works, to assist you in designing your own levels.
You must also have downloaded and unzipped the Narbacular Drop Level Creation Kit and have downloaded and installed the Valve Hammer Editor version 3.4 (WorldCraft). You do not need prior experience with the Hammer Editor.
Before you begin editing, you should arrange your file structure for quick testing of maps. Unzip the Level Creation Kit into the Narbacular Drop directory. Create a new folder under Narbacular Drop called Levels. This is where Narbacular Drop looks for levels to load, so all levels you make will ultimately be saved here. Next, open the Map Parser folder in the Level Creation Kit and copy csg.exe into Levels. This will make testing of your levels quicker and simpler. I also recommend putting a shortcut to Narbacular Drop in the folder.
The first time you open the Hammer Editor, a prompt will pop up asking if you want help with setting up the game configuration. Hit 'No.' Click on the Game Configuration tab, and to the right of the Configuration drop-down menu click Edit. Add a new configuration called 'Narbacular Drop'. To the right of the Game Data Files box, click Add. Browse to the Level Creation Kit, open the 'FGDs' folder, and open 'NarbacularDrop.fgd' . Switch to the Textures tab and click 'Add WAD.' In the Level Creation Kit, open 'WADs' and select 'narbaculardrop.wad.' Click 'Ok' and you are ready to begin creating levels.
Introduction to Hammer
In the center of the screen you will see four windows. These are different views of the level you are currently working on. By default the upper-left one is set to a 3D wireframe view of the level and the other three windows are set to 2D views from the three axes. I recommend clicking in 3D view and selecting View->3D Textured Polygons. This provides the best view of your level during development. Slower computers may have a problem with this, so you can always change back to wireframe by selecting View->3D Wireframe.
This 3D window gives you the ability to fly around your level as you are designing it, but there is nothing to see yet. In this explanation of the left toolbar, you will create a block and give it a texture.
Creating Objects: Shape and Texture
By default, the Selection Tool (Shift+S) will be selected. It is the red arrow at the top of the toolbar. This tool is used to select and move all objects that you create. To create an object, you must select the Block Tool (Shift+B), which has a picture of a grey box on it. In one of the 2D view windows (I prefer the top view), click and drag to create a box. The other 2D windows will provide different viewing angles of the block, but nothing will appear in the 3D window yet. To make the object solid, right click inside the box you have just drawn and click Create Object (simply pressing enter also works). The 3D view will still be blank, but you can fix that by clicking in the 3D window and pressing the S key until you see a block. The WASD keys are used to navigate the 3D view of your level. To change your viewing angle, hold the space bar and click and drag around with your mouse in the 3D window (the Z key also toggles this mode when the 3D window has focus) . These two controls can be used to get anywhere in the level. The block will be purple with a pattern of circles and lambda symbols (the Half-Life logo). Select the block by clicking on it (any view will work) and the 3D view should show it highlighted in red. To change the texture of the block, find the Current Texture drop-down box on the right side of the screen. Use it to select a dirt texture, then click the 'Apply Current Texture' button on the left side of the screen (it has a block made of bricks on it). Voila! Click somewhere not on the block to deselect it, and you will see that the block is now covered in the texture that you selected.
Note: You can make different objects with the block tool. Several libraries are included, and can be selected in the Object Bar on the right side of the screen. Only the Primitives library contains objects recognized by Narbacular Drop, although you may create your own libraries of objects by selecting an object and clicking Tools->Create Prefab (Ctrl-R). Use this feature to keep your levels consistent.
Making Objects: Entities
The next step is to make the block an entity, so that it will be solid when the game loads it. To do this, click Tools->Tie to Entity (Ctrl-T). The Object Properties window will pop up in the middle of your screen. I recommend moving it to a corner so that it can stay open, as you will use it all the time. By default, the object will now be tied to the area_trigger entity. Change the Class to collidable_geometry, and select an SFX Type of Dirt. This makes the wall capable of supporting a portal . Metal will not allow portals to be made on it, nor will Chainlink. Chainlink, however, is transparent in some spots. Note that the texture of the object does not determine its properties.
Note: There are four other types of entities available: area_trigger, func_lava, func_wall, and func_door. The first two of these are supported and will be discussed later, while the last one was not fully implemented by the final release of the game.
Making a Simple Room
Now that you have a solid block, you can duplicate it and make a room. Make the current block the floor by flattening it out. You can do this by clicking on the block in the 3D view or clicking on the center or edges of the block in one of the 2D views. Once this is done, you can drag the corners of block to change its shape and size.
Copy the block by clicking Edit->Copy (Ctrl-C), then click View->Center Views on Selection (Ctrl-E). Paste the copy into the map by clicking Edit->Paste (Ctrl-V). Nothing will change in your views, because the block has been pasted exactly where the old one is. By clicking and dragging inside the block (in one of the 2D views), you can move it around to a new location. For now, though, you should leave the block in the same spot, so click Edit->Undo Translation (Ctrl-Z) until the block is back in place. To make a room, you need four walls, a ceiling, and a floor. Since you already have a floor, make a wall by selecting the block, then clicking on it a second time. The corners will turn into dots which you can click and drag to rotate the block. Holding Shift will force the block to rotate in increments of 15 degrees. Rotate the block 90 degrees in the front (y/z) view to make it perpendicular to the original block.
Remember: Rotation will always be around the axis not shown in the view window.
Move the block in the front (y/z) view so that it does not overlap the original block, but is still touching the corner of the original block with its corner.
Repeat the above steps, but this time rotate and move the block in the side (x/z) view.
You now have three sides of the room! To finish the room, select all three walls by holding Ctrl while clicking on them. You can do this in any view. Center the views on your selection, and duplicate (copy and paste) them. Rotate the selection 90 degrees clockwise in the top (x/y) view, and 180 degrees in the side (x/z) view. Move the selection so that the corners of the blocks are touching, but none of them overlap. The room is finished.
Entities: player_respawn
Only one thing is needed to make this a working level: a character respawn. To make one, select the Entity tool (looks like a light bulb) on the left side of the screen, then click somewhere in the middle of the room (2D view). Right-click on the object and click Create Object. A purple box should appear in the middle of the room. If you cannot see the box, fly around in the 3D view until you find it, then move it to the center of the room using the 2D views. Select the box, then (in its properties window) change its Class to player_respawn.
Note: Point entities differ from brush geometry (blocks) in that their size and shape are not determined by you, the level creator. Each type of point entity has preset characteristics coded into the Narbacular Drop game engine. Some entities do allow you to change their size through the Scale property (such as the crate).
Testing Levels
To test your map, click File->Export to Map. Save the map as Level1.map in Levels, the folder you created earlier. Here, the program csg.exe must be used to convert your map into a file loadable by Narbacular Drop. To do this, run csg.exe. The first prompt will ask you for the name of the .map file you want to convert. This time, you want to convert Level1.map. Do not forget the .map suffix, or the conversion won’t work. The second prompt will ask you where to save the converted file. You may save the file as whatever you like, as long as it ends in .cmf. This time, use the name 'polishingup.cmf'. This filename will cause Narbacular Drop to load the file as the first level. Because of the way you constructed Level1, it can only be loaded correctly as the first level. Hit enter again the file will appear in Levels. Run Narbacular Drop and it will load your level as the first level. You will not be able to do much but run around and put portals in the walls. Notice that the first portal you place will show empty space and a graphical glitch behind it . This is because it is linking to a non-existent portal. Remember what this looks like, because anytime you leave an opening in your level, this glitch will show up.
Note: You can also load your level by pressing ~ on the main menu of Narbacular Drop. Type 'LoadLevel Levels\levelname.cmf' and your level will load. Press ~ again to play the level.
Entities: Portals
Every level should have two initial portals defined to avoid the graphical glitch mentioned above. Use the entity tool to create an entity of class blue_portal. Until you deselect the entity, it will not change its shape. Select the blue portal again and set its Axis Choice to 'X.' This tells the portal which way it should face .
X = East
-X = West
Y = North
-Y = South
Z = Up
-Z = Down
Place the blue portal against the west wall of your room, so that its center (the X) is touching the face of the wall
Entrances
The first level in any set of levels should have no entrance. Many will have the player starting in a cage of some sort, from which they can escape by placing a portal in a wall or floor. Any entrance to the level would cause the graphical glitch I mentioned at the end of the last tutorial, as would any other 'holes' in the level. Any levels following the first level will need an entrance, which is basically a hole in a south wall of the level. I say this because all entrances and exits must face north, due to the programming of the game. To demonstrate how entrances and exits work, you will need to make a second level to move into from the first level. Save Level1 as Level2, then open Level1. To connect these two levels, you will need to cut a hole in the north wall of Level1. Copy and paste the player_respawn entity, and change its Class to level_end. NextLevel should be set to Levels\Level2.cmf, and Name should be set to Level1End. NextLevel, obviously, determines which level will be loaded when the level_end door is opened. The Name of the door gives the object something to be targeted with. This may be anything you want, but take care that you don’t duplicate this name in other levels, as all objects with a certain name are opened when a trigger or button targets that name. This can be useful for setting off several events at once, but can cause problems if you are not careful. Move the level_end entity to the northern wall of the level, and place it just above the floor, and just inside of the wall.