Copyright: Worldcraft is a trademark of Valve, LLC.  Copyright 1996-98, All rights reserved.
Citation: { Worldcraft is a trademark of Valve, LLC.  Copyright 1996-98, All rights reserved. }


Welcome to Worldcraft 2.0

Worldcraft is a trademark of Valve, LLC.  Copyright 1996-98, All rights reserved.

Introduction to Worldcraft 2.0

Welcome to Worldcraft 2.0, a graphical level editor originally designed for id Software's Quake.  This release of Worldcraft has been specifically tailored to work with Half-Life.

Go direct!

   •  What's New in 2.0?

   •  User's Guide

   •  Half-Life Tutorial

   •  Troubleshooting

   •  WWW Reference Pages

   •  Half-Life Entity Guide

Note: Microsoft's DirectX must be installed to run Worldcraft.  DirectX drivers can be found at either the Worldcraft web site or any Microsoft source.

This help file was updated to meet the Worldcraft 2.0 specs by autolycus, October 1998.  Please send comments or questions regarding this help file to autolycus@planetquake.com


What's New in 2.0?

Worldcraft 2.0 represents the largest jump in feature enhancements and additions to date.  Below is a list of the new features, along with links to more information about them.

On the MapTools toolbar...

   •  The Block tool gives you access to a new "primitive," the Arch tool.  Not strictly a primitive shape, it allows you to make n-sided arches with a number of customizable features.

   •  The Decal tool lets you lay a bitmapped image on top of a texture.

   •  The Path tool lets you easily and quickly create paths for objects and monsters to follow.

   •  The Vertex tool has been enhanced; it now allows you to merge vertices by dragging one on top of another, and to scale a group of vertices around a point.

On the MapOperations toolbar...

   •  The Ignore Groups button allows you to edit an object independent of whatever group it might be a part of.  This is useful if you want to edit a single piece of a multi-brush entity, or if you'd rather not ungroup a set of structural brushes to work on a single part of it.

   •  The Cordoning tools allow you to cordon off an area of your map and do quick test compiling without having to wait for the whole level to compile.

On the MapViews toolbar...

   •  A set of buttons control the loading and saving of independent window configurations.  Independent window configurations allow you to customize the views of Worldcraft to your liking.

There are several new options available to you through the menus as well.

   •  (File) export again:  Selecting this, or pressing its hotkey (Alt+B) makes Worldcraft export the current map as a .MAP file to the location it was last exported to.

   •  (File) export to dxf:  This allows you to export a 3D scene to a 3DS-compatible format to assist in creating area-specific scripted sequences.

   •  (Map) entity report:  This can be used to manage your entities and do quick searches for specific entities, providing an easy alternative to searching through your map manually.

   •  (View) hide paths:  This acts much like the hide items command.  It will hide any path made with the Path map tool.

   •  (Tools) options:  Man of options dialogs have been modified.  There are also two totally new dialogs, Game Configurations and Build Programs.

   •  General options

   •  2D Views options

   •  3D View options

   •  Textures options

   •  Game Configurations options

   •  Build Programs options

The Game Configurations dialog allows you to setup game profiles, each of which contain a number of modifiable elements, including entity file and defaults, and location information.

The Build Programs dialog allows you to specify which compile tools to use with which game configuration.  As well, all values entered here are easily referenced in the expert compile dialog by a series of static variables ($game_exe, $bsp_exe, etc).

The compile tools included for Half-Life are somewhat different than previous games, but operate in a very similar manner.  The tools are as follows:

   •  QCSG analyzes all the geometry, textures, and entities in your map.

   •  QBSP2 divides that map up into VIS-able areas.

   •  VIS determines more rigorously which polygons are visible and which ones aren't.

   •  QRAD performs all the lighting calculations.  This can easily take as long as VIS, depending on the complexity of the lighting calculations it must perform.

Related Topics:

   •  Introduction to Editing

   •  Tutorial Overview

   •  Troubleshooting


popup New Objects (Entity)


popup New Objects (Prefab)


popup New Objects Dialog


MapTools bar

next

 Selection Tool

The selection tool allows you to accomplish a number of things.  To simply select an object, click once. Continue clicking on the selected area to cycle through the three basic transformation modes (resize, rotate, and shear).

   •  Resize mode allows you to grab any corner or edge of the selected object and resize it by pulling it to the desired size.

   •  In rotate mode, you can grab any corner of a selected object and pull it around to rotate the object into any position you wish.  If you have the rotations set to 15 degrees by default (this is set in the 2D Views options), this can be overridden by holding shift while you rotate the object.

   •  Shear mode lets drag the edges of an object parallel to its surface.  For example, if you grab the top edge of a selected object while in shear mode, you would be able to drag that edge right or left.

You can click-drag the selected object it to a new position, regardless of which mode it is in.

Tip: You can clone a selected object by holding down the shift button and click-dragging the object. This can be done regardless of what selection mode the object is in (resize, rotate, or shear).  See Creating Solids for more information.

Note: While in selection mode, you can select multiple objects by dragging a selection box around them and pressing Enter.  If Auto-Selection is toggled on, pressing Enter is not necessary.

 Magnify

This tool allows you to increase the magnification factor of the 2D views. Zoom back out again by clicking the right mouse button.  you can also zoom in and out by pressing the number keys while the mouse cursor is in a 2D view.

 Camera

This tool allows you to place and modify cameras within your level.  While in camera mode, hold shift and left-click and drag a line to create the camera.  A line with a dot (the view point) will be drawn in the 2D views, where you can adjust it until it is pointing in the direction you'd like.  To place more than one camera in a level, just repeat the above steps.

Cameras are good for helping you visualize the creation of your level. They are especially useful when using the Vertex Manipulation tool as they allow you to see exactly what you are doing to a brush.  You will find multiple cameras especially useful if you are working on several areas of a level at once.  Placing a new camera in an area negates the need to search for that area when you want to work on it again.

When you're in camera mode, you can cycle through all available cameras by pressing the PageUp/PageDn keys.  To delete the current camera, press Delete.  More information can be found in The Worldcraft Interface.

 Entity Tool

This tool allows you to place point-based entities in a map.  (Point-based entities are those entities which exist only at a point, and do not rely on a brush for their effect)  Once selected, the New Object dialog will contain a list of entities from which to choose. Click on one of the 2D views and press Enter to place the entity.  If Snap To Grid is enabled, the new entities will be snapped to the grid.

Note: In order to place a brush-based entity (a func_door for example) you must first create the brush with the Block Tool (see below), then select it, and press the ToEntity button on the New Object dialog.  (The dialog itself is not a separate dialog by default; it is usually embedded on the right side of the screen).  You will be given a list of entities to choose from which will be different than those shown with the Entity Tool.

 Block Tool

This is the basic creation tool available to you. It allows you to create any of the different types of primitive shapes.  For more information, see Creating Solids.

 Apply Current Texture

When pressed, the current texture is applied to every face of the selected brushes. For more information, see Texturing.

 Apply Decals

A decal is a texture that can be placed on top of another texture. Common examples include scorch marks or bullet holes. Use the Apply Decals button to place a decal in the 3D window.  Decal textures can be viewed and selected in the Textures window.  Half-Life's decal textures are designated by the use of a { as the first character in the texture name.

 Toggle Texture Application

This toggles the Face Properties dialog on and off.  This dialog allows you to edit the texture properties of individual brush faces.  For more information, see Texturing.

 Clipping Tool

Clipping allows you to slice the currently selected brush.  You have the option of only splitting the brush, or actually slicing a piece right off.  For more info, see Clip Planes.

 Vertex Tool

Vertex manipulation gives you complete control over the shape of a  brush.  You can reshape the brush by manipulating individual vertices and brush edges.  For more information, see Vertex Manipulation.

 Path Tool

This tool greatly simplifies the creation of paths for trains and monsters.  It allows you to create dynamic paths that you can add and delete nodes to.

With the Path Tool selected...

1.  Hold Shift and the left mouse button, and drag a line in a 2D view.  This creates the first two path points.

2.  A dialog box will pop up where you can set the name of the path, the path direction (one way, circular, or ping-pong), and the entity type (typically path_corner or path_track).

3.  To add new points to the path, click on one of the existing path points, hold Ctrl and drag with the left mouse button.  Do this as needed until you have your path complete.

note: The start of the path is denoted by the point with the green circle around it.

Related Topics:

   •  Creating Solids

   •  The Worldcraft Interface

   •  Face Properties dialog

   •  Entity Properties

   •  Clip Planes

   •  Vertex Manipulation

   •  Troubleshooting


MapOperations bar

last

 Carve

When the Carve button is pressed, the selected brush will subtract its shape from the non-selected brushes around it.

 Group/Ungroup

Group/Ungroup binds two or more objects together so they may be acted upon simultaneously.  This is not the same as VisGrouping.  The two functions differ in that grouping provides a way of physically binding a group of objects together, while VisGrouping enables you to organize objects into a group that may still be worked upon as separate objects.  For more information, see Grouping and VisGrouping.

 Ignore Groups

Ignore Groups allows you to modify individual brushes that are part of a group or entity by temporarily disabling "groups."

 Hide Selected/Unselect, Show All

Along with the Filter Control dialog, these buttons are used to control what does and doesn't appear in the 2D and 3D space of Worldcraft.  Hide Selected and Hide Unselected both create new VisGroups with the newly hidden objects, and Show All will make visible any hidden VisGroup.  For more information on VisGroups, see Grouping and VisGrouping.

 Cut/Copy/Paste

These buttons follow the standard windows interface for cut/copy/paste.

 Toggle Cordon State/Edit Cordon Bounds

These buttons allow you to "cordon off" an area of your map.  When the cordon state is toggled on, a thick red line will appear around that area.  When you compile, only the inside of that red area will be compiled, and a box will be placed around the area to seal leaks.

This is extremely useful when you are working on a large level and want to look at changes made in only a small area.  Rather than wait a considerable amount of time for the entire map to compile, you can selectively compile only a small area by using the Cordon functions.

Note: Be sure to place a temporary player start within the bounds of the cordoned area before you test compile that section.

 Toggle Select-By-Handles

When this option is toggled on, you will only be able to select objects by their center handles in the 2D view. To select objects by their center handles in 3D view, you must also be in wireframe mode.  This is useful when there are several brushes overlapping in the 2D view, making the standard selection method (clicking on brush lines) awkward and inaccurate.

 Toggle Auto-selection

When Toggle Auto-selection is toggled on, you can select multiple objects by simply clicking your mouse button and dragging a selection box around the objects. When this option is toggled off, you can also select multiple objects by dragging a selection box around the objects and then pressing Enter.

 Texture Lock

This button toggles texture lock mode on and off.  Texture lock allows you to move a brush laterally without disturbing the texture alignments. Texture lock will not preserve texture alignment when you are rotating a brush.

 Run Map!

This button brings up the current compile dialog.  For more information on compiling you map, see Compile Dialogs.

Related Topics:

   •  Carving

   •  Groups and VisGrouping

   •  Filter Control dialog

   •  Compile Dialogs


MapView bar

last / next

 2D XY/YZ/XZ View

These buttons control which planes are viewed in the current 2D window.

   •  XY (top)

   •  YZ (side)

   •  XZ (front)

 3D Wireframe/Polygonal/Textured View

These buttons control the style of the 3D preview window.

 Toggle Smaller/Larger Grid

These buttons control grid usage.  You can toggle the grid on and off, or make it larger/smaller to suit your needs.

 Load/Save Window States

These buttons are used to save and restore window configurations when the independent window configuration is being used.  More information on window configurations can be found in General options.

Related Topics:

   •  General options


Texture dialog

The textures dialog shows the current texture that you are working with, and lets you select a new texture.  The Current texture lists the last eight textures used, then continues with a list of the remaining textures.  Use the Texture group text box to view a different subset of textures.  You will have a choice between viewing all textures, or viewing individual texture WAD3 files.  (A WAD3 file is a file that contains a group of Half-life textures). You can add or remove WAD3 files in the Textures Options dialog.

Texture Browser

The Browse... button opens the texture browser, where you can select from all available textures (as dictated by the Texture group selection).

The Size scroll box allows you to set the displayed size of the textures.   You can choose from 32x32, 64x64, 128x128, or 1:1 (full size).

The Filter box allows you to type in a string.  Any texture that has that string as a part of its name will be displayed.  You can specify more than one filter string.  For example, if you specify the search string "sign 7", any texture with "sign" and "7" in its name will be displayed.  Previous search strings can be accessed by clicking on the down arrow.

The Only used textures option will make the browser only display textures that have been used in your level.  This will allow you to narrow your texture usage down and avoid using different textures for the same purpose.  For games such as Half-Life, the textures are stored in the compiled maps.  Eliminating similar textures will decrease the compiled map size.  Less textures to load also means memory savings while playing the map in the game.

The Mark button will allow you to mark (select) all texture faces that contain the selected texture.  You can then adjust those faces (for instance, you can make a global change to the textures or surface attributes of the selected faces).  This is best used in conjunction with the Face Properties dialog which can be accessed by toggling the Texture Application mode on, either from the MapTools Toolbar, or through the Tools menu.  If the normal "Apply Textures" map tool is used, every face of a brush that has one face selected will have the new texture applied.

The Replace button (also accessible through the Tools menu) will bring up the Replace Textures dialog

Related Topics:

   •  Replace Texture dialog

   •  Textures options


Filter Control Dialog
Filter Control dialog (VisGroups)

VisGrouping is a powerful tool for limiting visible objects in the map. This allows for much easier editing on large levels but does required that you use the .rmf file type for saving your maps since the .map format doesn't include the VisGroup information.

For more information on creating and working with VisGroups, see Grouping and VisGrouping.

VisGroups are created using the Hide Selected and Hide Unselected buttons on the MapOperations toolbar.  When a VisGroup is created, it is inserted in the VisGroups portion of the Filter Control dialog with a name of "n objects", where n is the number of objects in the VisGroup.  The name can be changed by clicking on the group, then clicking on it again (but not double-clicking!).

There are a number of buttons that can be used in the Filter Control dialog:

Apply

Will cause unselected VisGroups to become invisible in the 2D and 3D views.  Select a group by clicking just to the left of its name.  A small hand will appear.

Edit

This allows you to edit the name and color of a VisGroup, as well as add and remove new groups.

Mark

This causes selected VisGroups to be highlighted in the 2D and 3D views.

Purge

This will remove any groups from the VisGroup window that no longer contain any objects.

Note: You can delete a VisGroup from the list by dragging it out of the filter control dialog window.

Another feature of the Filter Control window is the ability to merge two VisGroups.  This is done by dragging one group on top of a second.  Worldcraft will ask if you want to combine the two groups, and if you do, they will be merged and the first group will take on the VisGroup properties (name, color) of the second group.

Related Topics:

   •  Groups and VisGrouping

   •  MapOperations toolbar


Objects dialog

The New Objects dialog controls all the facets of creation within Worldcraft.  Entities, prefabs, brushes - the creation of all this can be controlled from here.

toWorld (Ctrl-T)

toWorld will remove any entity settings of the selected solid or group of solids. See Move To World in the Tools menu for further details.

toEntity (Ctrl-W)

This will attach the currently selected solid or group of solids to an entity.  See Tie To Entity in the Tools menu for further details.

Categories

When the Entity Tool is active, no categories are available.  With Block Tool selected, there will be at least one category available: the "Primitives", which contain Worldcraft's five basic solid shapes: block, cylinder, spike, wedge, and the arch tool.  If any Prefab libraries have been defined, then the library names will also be listed here.

Object

This list contains all objects that belong to the chosen category.  For entities, the list contains all entity classes available.  For solids, if the 'Primitives' category has been selected, then this list contains the five types of primitives.  If a Prefab library has been selected, then this list contains all objects in the library.

Faces

This text box becomes active if the Block Tool is active, and either 'cylinder' or 'spike' is the current solid type. The value (which can be changed by either the keyboard or clicking the LMB on the little arrows) represents the number of side faces the cylinder/spike will be created with.

Create Prefab (Ctrl-R)

This will let you turn a selected object into a prefab object which will be easily reusable.  When you press this button, a Create Prefab dialog will pop up.  Here you can enter the name and description of the prefab, as well as choose which library it will be placed in.

Related Topics:

   •  Creating Entities

   •  Creating Solids

   •  Creating Arches

   •  Creating Prefabs


File Menu

next

New

Select New to open a new blank map.

Open...

Open brings up a browse window from which you can load game maps.  The file type will default to .RMF (Worldcraft's proprietary map format), although you can also choose to load .MAP files.

Close

This closes the currently selected map.

Save

Select Save to  save the currently selected map.  It will be saved in its original format (.RMF or .MAP).

Save As...

Save As brings up a browse window which allows you to save the currently selected map using a different name and/or map format.

Export to .MAP

Export to .MAP allows you to save the current map as a .MAP file without changing the name or format of the current map.

Export Again

Quickly export the current map to a mapfile at the previous export location.  Most handily used through its hotkey (Alt+B).

Export to .DXF

Export to .DXF lets you save a special map to be used in a scripted sequence.

Run

Select Run to bring up the currently selected compile dialog (either the regular compile dialog, or the expert compile dialog).

Exit

Select Exit to quit the program.

Related Topics:

   •  Game Configuration options

   •  Compile Dialogs


Edit Menu

last / next

Undo <command>

Undo cancels your last command and lets you revert to your previous work.  You can set the Undo history (the number of levels of Undo) in Tools->Options->General Options.

Note: if you are getting low memory warnings, it may help to set the number of undo levels to a lower value.

Redo <command>

Redo allows you to reinstate a previous command that was canceled.  The Redo history is the same size as the Undo history.

Disable Undo/Redo

Use the Disable Undo/Redo function if you are doing something that will require a rather large memory footprint, like deleting a large portion of your map.  It is a good idea to save your map before you do this, just in case.

Cut/Copy/Paste

These all follow the Windows standards, and do exactly what their names imply.

Paste special...

Paste Special gives you more precise control over how and where you paste your selection.  See the Paste Special dialog for more information.

Delete

Selecting Delete removes the currently selected object from you map.

Clear selection

This cancels all selections.  This is useful when the object selected is not visible in the current 2D or 3D windows.

Select all

This selects everything visible in the current map.  This can be useful for VisGrouping.  See Grouping and VisGroups for more information.

Properties

Selecting Properties brings up the currently selected object's Properties dialog.

Related Topics:

   •  General options

   •  Paste Special dialog

   •  VisGroups

   •  Properties dialog


Map Menu

last / next

Snap to grid

Snap to grid forces objects and selection boxes to snap to the current grid. This is useful when you want to precisely align objects .

Show grid

Use Show Grid to toggle the grid display on and off.

Grid settings

Grid settings allows you to increase or decrease the current grid size.

Show Information

This simply gives you some statistics on the currently selected map.  This information is useful when working on a large map, since you will need to stay under certain limits.

Entity report

Entity report gives you extensive information on entity usage in the current map.  See the Entity Report dialog and Working with Entities for more information.

Check for problems

This will check the current map for errors.  These errors will include things like missing player starts, invalid brushes, and entities with unused keyvalues.  See Check For Problems for more information.

Map properties...

Selecting this option will bring up an entity properties dialog where you will have access to the worldspawn entity's properties.  This is the only place you will be able to edit the worldspawn.  A map's worldspawn entity controls such things as which CD track will play when the level loads, what text will pop up, and which skybox will be used.

The entity properties dialog defaults to SmartEdit mode, which gives you more information about the keyvalues (or variables) available to you. For more information on worldspawn properties and their keyvalues, see the Half-Life Entity Guide.

Related Topics:

   •  Entity Report dialog

   •  Check for Problems dialog

   •  Entity Properties


View Menu

last / next

Screen Elements

The Screen Elements menu gives you control over what is and isn't displayed on your Worldcraft desktop.

2D XY YZ XZ

Your working area is divided into 4 sections.  Three of these are used to show the three 2D views available to you in Worldcraft. The forth window contains a single 3D view.

Use this control to select which 2D view is displayed in which window.

   •  XY (top)

   •  YZ (side)

   •  XZ (front)

3D Wireframe/Filled Polygons/Textured Polygons

There are three 3D view options available. These buttons control which 3D preview window is shown.

Note: You may encounter problems with your 3D view, texture menu, or both if your system is set at 256 colors. This is the result of a limitation with DirectX. If you have this problem, set your system to at least a 16-bit display in Windows 95. (Start | Settings | Control Panel | Display | Settings).

Autosize 4 views

Auto-sizing the four views divides the available desktop space into 4 equal portions, one 3D and three 2D windows.

Center Views on Selection

This causes all of the 2D views to center on the currently selected object.

Show Connections

Selecting this option will toggle on and off visible connection between entities that are linked by matching target and targetname keyvalues.

For example, in the above picture, the trigger_once entity has a "target" key with a value of "beam1".  The env_beam entity has a "targetname" key with a value of "beam1".  A line will be drawn between the two, signifying that they are connected by their target and targetname.

Hide Items

Selecting Hide Items hides all entities from view and, when selected again, returns the entities to view.

Hide Paths

Paths made with the Path tool can be toggled on and off here.  However, paths are always visible when the Path tool is selected.

Hide selected objects

This command makes selected objects invisible.  You can also hide selected objects by pressing the Hide Selected Objects button on the MapOperations toolbar.  The hidden object's are placed into a new VisGroup named after the number of objects included.  For example, if you choose to hide a group of 5 brushes, the new VisGroup will be named "5 objects"  For more information on VisGroups, see Grouping and VisGrouping.

Show hidden objects

This command will make the all hidden objects visible, including VisGroups.

Related Topics:

   •  Grouping and VisGrouping


Tools Menu

last / next

Carve

Use the Carve tool to subtract the shape of the selected object from the surrounding area.  For more information, see carving in the Reshaping Solids section.

Make Hollow

Make Hollow turns a solid object into a hollow shell of the same shape. You must have a brush selected for this to work.  You will be asked to supply a value for wall thickness.  Positive numbers keep the hollowed brush the same size, and negative numbers will cause it to expand.

Group/Ungroup

Group/Ungroup binds two or more objects together so they may be acted upon simultaneously.  This is not the same as VisGrouping.  The two functions differ in that grouping provides a way of physically binding a group of objects together, while VisGrouping enables you to organize objects into a group that may still be worked upon as separate objects.  For more information, see Grouping and VisGrouping.

Tie to entity/Move to world

These two commands allow you to designate an object as part of the world (a structural piece, like a wall), or as an entity (a door, for example).  When you tie a brush to an entity, a dialog box pops up allowing you to choose which entity, and to modify the entity properties.  This dialog will contain brush based entities only (doors, plats, triggers, etc).

Texture application

This switches the current tool to the Texture Application tool which allows you to modify the properties of individual brush faces.  See Texturing Solids for more information.

Replace textures

Replace Textures brings up a the Replace Textures dialog box which lets you search for and either mark or replace all textures of a certain type.

Texture lock

This option toggles texture lock mode on and off.  Texture lock allows you to move a brush laterally without disturbing the texture alignments.  Currently, texture lock will not preserve texture alignment when you are rotating a brush.

Snap selected to grid

Not all objects will align perfectly to the grid.  Some objects, such as entities, are occasionally difficult to align with the grid.  This command will snap the bottom of the entity to the grid.

Transform

This brings up the Transform dialog which allows you to rotate, scale, and move an object a precise value in any of the X, Y, or Z planes.

Align objects

Align objects lets you align an object with the grid with more precision than Snap Selection to Grid.  You are presented with a small menu of choices on how to align the object.

Flip objects

Flip objects allows you to flip objects horizontally or vertically (or both, to create a mirror image of the object).  As with Align Objects, you are presented with a small menu of choices.

Prefab Factory...

Prefab Factory brings up a dialog box which allows for the creation and maintenance of Worldcraft's prefab (.OL) files.

Create Prefab

Use this Create Prefab dialog box to turn the currently selected object into a prefab. Enter a name and description, and choose which prefab library the prefab will belong to.

For more information on Prefabs, see Creating Prefab Libraries.

Options...

This will bring up the Options dialog group.  For more information, select one of the following:

   •  General - this dialog lets you specify whether you want to use independent windows, and also lets you set the number of undo levels.  Machines with low memory will benefit from a lower undo-level setting.

   •  2D Views - this dialog lets you customize how everything will be handled in your 2D views, including the color scheme, default grid size, grid intensity, and selection methods.

   •  3D Views - this lets you enable or disable hardware acceleration, enable revered mouse controls, and set the back clipping plane.  The back clipping plane controls the depth of the 3D window.

   •  Textures - here, you can tell Worldcraft where to find your textures, as well as setting the gamma level (texture brightness) for the textures.  The texture brightness only effects textures while in Worldcraft.

   •  Game Configuration - this dialog allows you to setup different game configurations, allowing you to easily customize the support for Half-Life and its mods.  You can change which game data files are used, as well as specify map directories and default entities.

   •  Build Programs - this allows you to specify the compile tools used with each game configuration, and also where to place the maps once they are compiled.

Related Topics:

   •  Carving

   •  Grouping and VisGrouping

   •  Texture Application tool

   •  Replace Textures dialog

   •  Transform dialog

   •  Prefab Factory


Window Menu

last / next

This is a standard Windows menu.  The only thing out of place is the Messages option, which will bring up Worldcraft's Messages window.  The message window will report any problems Worldcraft had while loading its game configuration files.  Typically, you will only see a message there if you have modified your FGD file in some way and made a mistake.

Common errors you will see...

error parsing halflife.fgd, line 1052: expected @

error parsing halflife.fgd, line 1052: unrecognized section in name base

These will occur when you neglect to put a '@' before you start to define an entity, starting a definition with SolidClass, as opposed to @SolidClass.

error parsing halflife.fgd, line 1052: expecting '(', but found ':'

This error will occur when you neglect to put an "=" character in the entity definition.  For instance, the following line in an FGD would cause the error:

@SolidClass base(Door) func_water : "Water" []

To correct this, simply insert the "=" before the entity name:

@SolidClass base(Door) = func_water : "Water" []

error parsing halflife.fgd, line 1054: expecting string

You will see this error message when you do not properly add the quotations around a string.  For instance, if you enter 4, rather than "4" as the default value for a string, this error will occur.


Help Menu

last

Help Topics

This option brings up the help file you're currently reading.

Entity Guide

This option will bring up the Half-Life entity guide which contains in-depth information on all of the Half-Life entities, including appropriate entity variables, spawnflags, and usage information.

Worldcraft Editing site

This will take you to http://www.planetquake.com/worldcraft/

About

This brings up the About dialog which contains version, copyright, and contact information.


Replace Textures dialog

Available from both the texture browser, or through the Tools menu, this dialog allows you to replace all textures of a certain type with a different texture.

Find/Replace

These text boxes and texture pictures show the texture to be found in the map, and the new, replacement texture. You can browse through the entire texture library to choose the "find" texture, the "replace" texture, or both.

Replace In

The Replace In section lets you specify what should and shouldn't get replaced.  You can replace everything, or only marked objects, and you can choose to include or exclude hidden objects.

Action

This lets you choose which search-and-replace method you would like to use...

   •  Replace exact matches

   •  Replace partial matches

   •  Substitute partial matches - when this is enabled, you can search for a specific part of an entity name, and substitute that part with something else.  For example, if you have a bunch of slime textures, ("slimedoor", "slimefloor", etc) and you want to change them to "rustdoor", "rustfloor", etc, you can enable this, search for "slime" and replace with "rust".

[  ] Do not replace textures (mark solids found)

Use this feature to simply mark (select) faces containing the same texture, instead of replacing them with another texture.  This is extremely useful if you would like to modify the texture attributes of every texture of a certain type, but don't want to select each one manually (while you are in the Face Properties dialog).

Related Topics:

   •  Texture dialog

   •  Textures options


Compile Dialogs

Worldcraft has two types of compile dialogs: the normal, and the expert.

Normal Compile

The normal compile dialog gives you some very basic control over the compiling process, enough for simple testing of levels.

The text in the Additional Game Parameters text box will be appended to the game execution command, allowing you to feed special commands to the engine.  The QBSP, VIS, and LIGHT processes are all dependent upon the Build Programs settings.

Expert Compile

Expert compile mode is extremely useful when you want more than the limited options available to you in the normal compile settings (from above).

Configurations

This is a pull down list with all the different compile profiles.  Using the Edit button, you can add, remove, and edit any of the various configurations you might have.

Compile/run commands

This is the list of commands specific to each Compile profile.  You can add and delete new commands using the New and Remove buttons.  Commands can be edited through the Command Properties section of the dialog.  Move Up and Move Down allow you to change the order of the commands.

Command Properties

Command

You can manually enter the command here (which is fine in the case of compile programs like qbsp.exe, etc), or choose from a list of commands by pressing the Cmds button.  You will be able to choose from:

   •  Executable

   •  Change Directory

   •  Copy File

   •  Delete File

   •  Rename File

   •  Game executable (with directory) ($game_exe)

   •  BSP program ($bsp_exe)

   •  VIS program  ($VIS_exe)

   •  LIGHT program ($light_exe)

Parameters

You can enter the command parameters here either manually, or by pressing the Params button.  Available to you through the Params button are:

   •  Map Filename (no extension) ($file) - Using $file as a parameter is the same as using the current map name.  Worldcraft will substitute the current map filename for $file during the compile process.

   •  Map Filename (with extension) ($file.$ext) - This is exactly the same as the above, except that .MAP is appended to the map name.

   •  Map Path (no filename) ($path) - $path can be substituted for the path to the current .MAP or .RMF file.

   •  BSP Path (no filename) ($bspdir) - $bspdir is the directory where the compiled map files (.BSPs) are to be placed.

   •  Game Directory ($gamedir) - this is the directory where the Half-Life executable is stored.

Note: all the $variables are setup in the Game Configurations and Build Programs dialogs, accessible from Tools menu.

Use Long filenames

This will allow a map to be output with its full name, in the case of a map with a name over 8 characters.

Ensure file post-exists

Enabling this option and entering a filename will cause you to be notified if the certain file does not exist after the compile process.

Use Process window

This will force the command to display its output in the Process window.

Related Topics:

   •  Game Configuration options

   •  Build Programs options


Introduction to Editing

Solids: the Foundation of 3D Design

Blocks.  Wedges.  Cylinders.  Spikes.  They may not sound like much, but these are the basic building blocks of all architecture created in Worldcraft.  You can carve 'em, clip 'em, and manipulate 'em.  You can combine these solids (also called brushes) to make any shape possible, real or imagined. This is known as constructive solid geometry (CSG) and this is the editing style Worldcraft uses.

Once you create a brush, you'll assign to it a texture, which is a pre-existing bitmap image created to make the brush resemble something in the real (or some imagined) world.  Examples of textures include bricks, rock faces, and water.

Entities

You say you want more in your game world than inanimate solids?  Well then, what you want are entities.  Where brushes are "world objects" used to form the basic inanimate structure of your level, entities are the objects that move, have sound, or are interactive.  An entity is anything that performs some type of operation or task within your level.

Tip: A complete list of Half-Life entities can be found in the Half-Life Entity Guide.

Entity Types

There are two types of entities: point-based and brush-based.

Point-based entities exist only at a certain exact point.  Examples include lights, monsters and players.  (Monsters do have an area, but this is defined by the game code and is not modifiable from within the map.) Some point entities are just that: points.  For example, the env_beam entity, which controls Half-Life's beam effects, uses two point entities as targets;  you place the two points and the beam of light runs between them.

Brush-based entities are entities that depend on a brush for their physical presence, like doors, trains, and other moving objects.  A trigger is another type of brush-base entity;  it requires that you indicate an area or activation field which controls the trigger's operation.

Putting it All Together

Using these simple components, you can create a virtually limitless variety of levels. Whether its a barren room or a vast, complex world, you'll do it by using solids and textures to create your architecture, then adding lights, monsters, buttons, moving platforms and a host of other entities to bring your creation to life.

Once everything is in place, you will need to compile your level. This is the process that turns your collection of solids and entities into a playable level that you can run in Half-Life. Although the compiling process happens when you think you've finished your level, knowing something about this process ahead of time can save you many headaches. Be sure you read the Compiling Tips before you start building a level.

Related Topics:

   •  Creating Solids

   •  Texturing

   •  Vertex Manipulation, Clip Planes, and Carving

   •  Creating Entities

   •  Half-Life Entity Guide


General Options

The General options dialog allows you to specify whether you want to use the independent windows setup or not.  You can also set the number of undo levels here.

Tip: if you are receiving low memory warnings, it may be a good idea to set the number of undo levels to something lower.

Independent window Configuration

Worldcraft's Independent Window Configuration is simple to use and extremely handy.  It lets you customize your windows setup virtually any way you'd like.  Below are some examples. Use the Load/Save buttons on the MapView toolbar to save and restore your Independent windows setups.

You can achieve virtually any windows setup that you'd like:

   •  classic

   •  super-size

   •  QE4 look-alike

Related Topics:

   •  2D Views options

   •  3D View options

   •  Textures options

   •  Game Configuration options

   •  Build Programs options


2D Views Options

Crosshair cursor

When this is enabled, the pointer will turn into a crosshair when it is over a brush.

Default to 15 degree rotations

When rotating a brush, the rotations will automatically be in 15 degree increments.

Display scrollbars

Display scrollbars works as a toggle, letting you turn scrollbars on and off in the 2D views.  When scrollbars are turned off, you can still scroll the views by using the arrow keys.

Draw Vertices

If this is enabled, brush vertices will be shown in the 3D views.

White on black color scheme

Brushes will appear as white lines drawn on a black background.  When this is not enabled, the reverse is in effect.

Keep grouping when clone dragging

Select this feature when clone dragging (selecting an object, holding down shift, and dragging the object), if you want the newly cloned object to retain grouping properties of the original object.

Center on camera after movement in 3D

Use this option if  while using the mouse to move around the 3D view  while in camera mode,  you want  the 2D views to automatically center on the new camera position.

Use Visgroup colors for object lines

When this is enabled, the object lines for any non-entity brush will be the color specified in its Visgroup when viewed in the 2D views.  Objects not associated with a visgroup will still appear white.

Arrow keys nudge selected object/vertex

When this is enabled, you can move a selected object or vertex by using the arrow keys.  Note that the mouse cursor's position in the 2D views will dictate which direction the object will move.

Reorient primitives on creation in the active 2D view

When this is enabled, primitives will be oriented with their "top" shown in whichever 2D view it was created in.  This is most easily shown when creating a cylinder.  With this option disabled, the cylinder will be oriented so that the round part shows up in the xy 2D view, regardless of which view you created it in.  This is mostly just a time saving feature.

Automatic infinite selection in 2D windows (no ENTER)

When this is enabled, dragging a selection box over an object or objects will immediately cause them to be selected (normally you would need to press Enter).  This option can be turned on and off from the MapOperations toolbar as well (see Toggle auto-selection).

Selection box selects by handles only

When using a selection box to select a number of objects, it defaults to selecting any object the box touches.  With this option enabled, it will only select those objects whose "handles" (the small "x" at the center of each object) are within the selection box.

Grid: Size

Grid: Size shows the initial grid size when you start a new map.  The options are 8, 16, 32, 64, 128, and 256 units.  You can change the grid size while editing by pressing "[" and "]".

Grid: Intensity

This is a slide bar from 0 to 100.  It sets the intensity (brightness) of the grid lines.

Grid: Highlight every 64 units

Grid: Highlight highlights the grid every 64 units.

Grid: Highlight every [nnn] grid lines

This will highlight a grid line once every [user specified] lines.

Grid: Hide grid smaller than 4 pixels

If the grid size is smaller than 4 pixels, it will generally appear as a gray background instead of a grid, unless zoomed in extremely close.  When enabled, this option turns off the grid when it gets that small.

Dotted Grid

Enabling this option causes the grid to be displayed as a series of dots, rather than lines.  This may help if you find that the grid lines blend into your map lines.

Related Topics:

   •  General options

   •  3D View options

   •  Textures options

   •  Game Configuration options

   •  Build Programs options


3D Views Options
3D View Options

Hardware Acceleration

This will enable Worldcraft to use hardware acceleration.  Worldcraft uses Direct3D acceleration.

Reverse mouse Y axis

This option only affects movement within the 3D window.  When it is enabled, the Y axis is reversed, resulting in the aircraft style movement (forward to look down, backward to look up).

Back clipping plane

This enables you to drastically improve your performance in the 3D view.  The default is set at 5000 which usually includes everything in your level.  Setting this to a lower number will clip off the back portion which, since levels are made up of solid walls, is usually not visible to the player anyway. This should noticeably speed up the 3D view.  The lowest value for this is 500, which is fine if you're doing a walk through of an area of the level.

Related Topics:

   •  General options

   •  2D Views options

   •  Textures options

   •  Game Configuration options

   •  Build Programs options


popup Tutorial 4.3 #2


popup Tutorial 4.3 #1


Textures Options

Add WAD

This will bring up a dialog box from which you can select a texture WAD file.

Remove

Remove will cause the selected texture WAD to be removed from the list.  This may be needed if you are running low on memory or using compile utilities that do not support multiple texture WADs.

Texture brightness

This affects the gamma of the textures.  If they appear light or dark in Worldcraft, you can adjust that here.

Related Topics:

   •  General options

   •  2D Views options

   •  3D View options

   •  Game Configuration options

   •  Build Programs options


Game Configurations Options

The Game Configurations dialog allows you to setup game profiles, each of which contain a number of modifiable elements, including entity file and defaults, and location information.  It is extremely important that the information you enter here is correct, as Worldcraft may behave quite unpredictably otherwise.

Configuration

Configuration allows you to setup new configurations profiles for Half-Life.  You can click on the edit button to add, remove, and copy the game profiles.

Game Data Files

You can specify here which data file Worldcraft will use for entity support for this game profile.  You have the options of adding, removing, or editing the game file.

Worldcraft uses FGD files for to store its entity information, including the entity names, the flags and keyvalues (variables) for each entity, and the default values of the flags and keyvalues.  For an advanced look at the FGD scripting language, see the FGD Guide.

Texture Format and Map Type

For Worldcraft 2.0, these options are locked onto Half-Life.

Default PointEntity class

This allows you to specify the default point-style entity when you begin a new map.

Default SolidEntity class

This allows you to specify the default solid-style entity.

Game Directory

Specify the game directory here (for use in the expert compile mode as $gamedir)

RMF Directory

Specify the default map directory here.

Palette file

You must specify the location of the palette file here.  The default wc.pal file (located in the Worldcraft directory) can be used.

Related Topics:

   •  General options

   •  2D Views options

   •  3D View options

   •  Textures options

   •  Build Programs options


Build Programs Options

The Build Programs Option dialog lets you specify all the executables for your game configurations.  Just choose a game configuration, and then browse to the game and build executables.  If you plan to do your compiling from within Worldcraft, it is important that these settings are correct.

Note: the default compile tools will work fine with Half-Life.  The main advantage here is that you can specify the place where compiled maps must be placed before running the game.  This allows you to separate maps made for mods (such as Team Fortress 2) from the standard Half-Life map files.

These executables can be referenced in the expert compile mode as follows:

     •  game executable = $game_exe

     •  BSP program = $bsp_exe

     •  LIGHTING program = $light_exe

     •  VIS program = $VIS_exe

     •  .BSP directory = $bspdir

Note: When using the regular compile mode, .BSP files (compiled game maps) will be copied to your specified .BSP directory.  When you use expert compile mode, make sure the maps get copied there yourself using the $bspdir variable.

Related Topics:

   •  General options

   •  2D Views options

   •  3D View options

   •  Textures options

   •  Game Configuration options


Paste Special dialog

This menu allows multiple pasting of the clipboard contents with offsets and rotations. This relieves the work in creating an object that contains many identical elements.  For instance, to create a picket fence you can make one rail, then copy it multiple times with on offset for each new rail.

Number of copies to paste

The number of new copies to paste.

Start at center of original

With this in it's default On position, offsets and rotations are relative to the location and rotation of the original item in the clipboard. With it off, the new objects will be created relative to the center of the two previously selected windows.

Group copies

The default for Group copies is Off.  Turning this on will group all resulting objects together.  See Grouping and VisGrouping for more information.

Offset (accumulative)

The three boxes here allow offset values for X, Y and Z.  With each additional paste, the next object will be offset from the previous one by these values which are given in map units.  The '<' buttons beside each box will automatically insert the current grid settings.

Rotation (accumulative)

These settings work in the same fashion as the Offset values, except that they apply rotation with each successive paste.

Related Topics:

   •  Grouping and VisGrouping


Properties dialog

The Properties dialog box is the primary method of modifying entity properties.  It also allows you to adjust VisGroup properties for one or many brushes.

Class Info

Modify entity properties in the Class Info dialog.  Class Info has two modes, a regular editing mode and SmartEdit (toggled by the button, circled).  When you use the SmartEdit mode, all of the entity's keyvalue (entity variable) descriptions are shown to you. If you are already familiar with the entity properties, you may find it more convenient to turn this mode off and manually insert the keyvalues. More information on specific entity keyvalues can be found in the Half-Life Entity Guide.

Flags

You will find listed here all the available flags for an entity.  This section is also only available when editing an entity's properties.  A flag allows you to toggle on or off specific features of an entity.

VisGroup

This section allows you to assign the selected object to a VisGroup or remove it from one.  You can also bring up the Object Groups dialog from here.  For more information, see Grouping and VisGrouping.

Related Topics:

   •  Creating Solids and Entities

   •  Groups and VisGroups

   •  Half-Life Entity Guide for more entity specific information


Prefab Factory

Much like the Entity Report dialog lets you manage entities, the Prefab Factory allows you to easily manage your collection of prefab libraries, including adding and deleting objects and editing existing prefab objects.

Select a Library

This allows you to select the library you want to work on at the moment. The three buttons to the right work directly on the selected library.  Add Library creates a new empty library.  Remove deletes the library from your harddrive.  Edit allows you to edit the name and description of the library.  The description of the currently selected library is displayed under the library selection box.

Note: Prefab libraries are stored in your worldcraft\prefabs directory.  You can manually add and delete them by adding or removing prefab files (.OL files) in this directory.

Objects in library

This displays the objects available in the currently selected library and allows you to work on them using the four buttons to the right.  Add object brings up a browse box and lets you pick from .MAP and .RMF files to add to the library as prefab objects.  Remove deletes the selected object from the library.  Edit allows you to edit the name, description and the map data of the currently selected object.  Export object will let you export the currently selected object as a .MAP file.

When you select an object, its description, if any, will be displayed in the Object Notes section.

Related Topics:

   •  Creating Prefabs


Check For Problems
Check for Problems dialog

Opening this dialog will cause Worldcraft to run through your map and notify you of any errors it finds.

When you select one of the errors, the entity/solid will be highlighted (if applicable) and three options become available to you.  'Go to error' will center the 2d windows on the selected error object, 'Fix' will fix that error, and 'Fix all (of type)' will fix all errors of the selected type.

Some common errors that may occur in your maps...

Invalid solid structure

The solid has invalid structure, probably as a result of vertex manipulation.  What this means is that the solid is not convex in every plane.

Solid Entity (entity_name) is empty.

This solid-entity contains no solids. Fixing the error deletes the entity.

Entity (entity_name) has unused keyvalues.

The entity contains keyvalues (variables) that are not used in its class. You can fix this error with the Fix button.  Note that this error will pop up if you are taking advantage of custom compile tools which add keyvalues to entities, but you are not using an FGD file that has these special keyvalues listed.

There is no player start.

There is no player start in the map. To add one, select the Entity (axe) tool, drag the crosshairs to the position you want the player to start at, and press Enter.

Related Topics:

   •  Troubleshooting

   •  FGD Guide


Transform dialog

The Transform dialog gives you precise control over a selected object.

You have the option to rotate, scale, or move the selected object in any of the x, y, or z planes.  Values entered are in units, except in the case of rotation, where degrees are used.

Related Topics:

   •  Creating Solids


c. Connecting Rooms
Tutorial: Connecting Rooms (tut2.rmf)

last / next

To practice connecting two rooms, you'll need to create a second room.  Do this by cloning. First, select the existing room. Then, while pressing the shift key, click and drag with the left mouse button. Place the second room 128 units away from the first room.  Your top view should look like this:

Delete the second player start (by the red arrow), so there's only the one in the first room.  Now, we need to make a hole in each room so we can connect them together.  Do this by carving a piece out of the two inner walls.

First, create a brush that displaces the area that you want to carve (the selected brush in the picture above).  Now, click the selected object with the right mouse button, and select Carve from the menu.  This will cut out a hole from each wall, leaving the carving object in place.  Press Delete to get rid of the carving piece.  You will be left with two rooms separated by a small area of the void.

Now we need to seal this level by making a small hallway area between the two rooms. The hallway is constructed of 4 separate brushes, making up the top, bottom and sides. Make sure the brushes are lined up correctly in each of the 2D windows.

Note: Checking your work is much easier in the 3D view.  In order to see what you're building in the 3D view, you need to place cameras in and around your level. Complete instructions on how to use cameras can be found in The Worldcraft Interface in the User's Guide.

For now, however, a quick explanation will do.  To place a camera, select the Camera tool and, while holding Shift, click in a 2D window with the left mouse button.  Drag the mouse to extend the "camera view," and release the mouse button.  You can now adjust either end of the camera in any of the 2D windows by clicking and dragging with the left mouse button.

Now, with the camera aimed at the space between the two openings, use the Block tool to construct the floor, ceiling, and two walls.

And the survey says...

Compile and run your map.  You should see something like the following...

Great.  Now, let's add some textures.

Related Topics:

   •  Carving

   •  Creating Solids

   •  Texturing


e. Using Light
Tutorial: Using Light (tut4.rmf)

last / next

While these rooms are starting to look much better, the lighting is rather bright and has no apparent source. We will fix this now by adding a textured light.  Textured lights are different from point-based lights in that they are simply represented by a texture.  There is no entity to place, and you don't have to configure them for brightness or color.  These values are controlled from within the lights.rad file which is found in the Valve directory.  The lights.rad file consists of lines that look like the following:

+0~TNNL_LGT1   240 230 100   10000

The first item is the texture name.  Next comes a set of three numbers.  This is the RGB (red/green/blue) value of the light's color.  The last value is the light's brightness.

You do not need to worry about RAD files for now.  The default color and brightness values will work fine.

First, here's our baseline picture...

Now, delete both of the point-based light entities. Create a rectangular solid of 32x48x16 units with the texture c1a1w1d.  Using the Texture Application tool, apply the +0~tnnl_lgt1 texture to the underside of the newly created solid.   Place this solid centered just above hallway between the rooms.  Do this in both rooms of your level.

As you can see, it looks much better like this.  Texture lighting tends to look more natural than point-based lighting.  Once you get the hang of using textures as lights, you will find them very convenient and easy to use.

Point Based Lights

That said, point based lights aren't totally useless.  They are much more customizable from within the map than a texture based light.

The Properties dialog (found under the Edit menu) allows you to customize the brightness, color, appearance (flickering, fading, etc), target, and name of the light.  Also, in the Flags section, you have the option of indicating that the light should be "off." In this case you'd also have to supply a name for the light so it could be triggered to turn on.

In this level, we've created a small light fixture in the middle of the hallway.  Underneath, we've placed a light entity.  To get an off-white color and a low level of brightness we've given the light an RGB color of "243 183 22" and an intensity of 100 (click on "Brightness" in the above picture).

Tip: Rather than calculating the RGB color value of a light yourself, you can use Worldcraft's built-in color picker.  If you click on "Brightness" in the above example, you will notice that below the "243 183 22 100" value, there is a button marked Pick Color.  This will bring up a dialog that will let you pick or create a custom color.  When you have picked a color, the value for Brightness will change.  Note that the color picker will only modify the first 3 numbers, and leave the fourth (the light intensity) unchanged.

Let's give the light a bit of a flicker.  This can be done by changing the light's Appearance value.  For this example, we've chosen the "Flicker B" style (click on "Appearance" in the above picture).

The difference is...?

Compile and run your map.  Adding these lights has had a dramatic effect on the level.

In the next tutorials, we'll be adding some brush- and entity-based details, which will make this level seem more like a real place.

Related Topics:

   •  Creating Entities

   •  Properties dialog

   •  Detailing Your Level


f. Detailing Yourr Level
Tutorial: Detailing Your Level (tut5.rmf)

last / next

Right now, the tutorial level is just a couple of boxes separated by a tube.  There really isn't anything in it to draw your attention besides a flickering light.  This must change!

Once again, here is our baseline picture...

If you know what type of room you're building, you'll have a better sense of the details to add. This could be some type of control room.  In that case, you would probably see some computer equipment.  Most buildings have some type of ventilation system; perhaps the system in this room is exposed, with pipes running to...who knows where?  Now is the time to add the details that will make the level "yours."

There are a number of ways to add detail to your level.

   •  Prefab Objects

One of the simplest ways to add details is through the use of Prefabs.  Prefabs are prefabricated objects that are stored in libraries.  Let's add a number of prefabs to this level from the Example Maps prefab library.

1.  In the New Objects dialog, select Example Maps from the categories list, and "metal shelves" from the objects list.

2.  On the lower part of the New Objects dialog is the Insert Original Prefab button.  Press this now.

3.  The prefab is now inserted in your level.  Move it around the 2D views until you have it in a position you like.

Note: The shelves prefab consists of a set of metal shelves with boxes on each shelf.  If you Ungroup the prefab (select it and press Ctrl-U), you can move the individual boxes around on the shelves to create a unique pattern.  This is useful when you are using more than one of the same prefab.

4.  Repeat the above steps for the trash can and computer prefabs, both located in the Example Maps library.

   •  Interactive Objects

Some objects, like buttons, doors, and levers, give players opportunities to interact with the environment.  By using interactive objects, you can tie the behavior of one object to another, making your world a richer and more complex place.

1.  Create a pipe (a simple 8-sided cylinder) that stretches from floor to ceiling.

2.  Insert the "wheel" prefab into your level from the Example Maps library (see above for directions).  Position it on the pipe so that its somewhere in the middle of the player height (48 units above the floor is fine).

3.  Select the wheel and press the To Entity button on the New Objects dialog.  The Object Properties dialog will pop up and let you select an entity type and entity settings.

4.  Choose "func_rot_button" from the entity list.

5.  Go into the Flags section of the Object Properties dialog.  There are a number of options you can enable or disable.  For now, all you need to concern yourself with is the Axis options.  The axis options tell the wheel which plane to rotate in.  The default axis is Z.  To figure out which axis you need checked, you can use this very simple method.  Select the 2D view in which the object is going to rotate.  It will be either XY, YZ, or XZ.  The plane that you want the object to rotate in will be the one left out of the two digit combination.  For example, if you want the wheel to rotate in the YZ window, you would enable the X-Axis option.

The player can now use this button but, since it is not "connected" to another entity, using it will have no effect. Here is an example of a button connected to another entity:

1.  Give the light in the hallway a Name of Light1

2.  Create a small brush for use as a button.  It should be on one of the walls around the hallway.

Note: Texture names that are preceded by +0 and +A are textures that have alternate states.  If you make a button with the +0CRETE_SWTCH1A, the texture will switch to +ACRETE_SWTCH1A when it is activated.  The same thing works in reverse as well (going from +A to +0).

3.  Once you have the button constructed, select it and press the To Entity button on the New Objects dialog.  The Object Properties dialog will pop up and let you select an entity type and entity settings.

4.  Choose "func_button" from the entity list.

5.  Give the button a Target value of Light1.

6.  Set the direction of the button's angle.  It should be pointing back at the wall.

7.  In the Flags section of the Object Properties dialog, enable the Toggle option.

The player can now turn the hallway light on and off.  This same technique can also be applied to most of the other triggerable entities, such as doors, trains, lasers, and a great many others.

   •  Brush Manipulation

Probably the most common way of detailing your level is placing and shaping brushes.  Placing brushes is covered in the User's Guide under Creating Solids.  Brush shaping can be done a few different ways.

Tip: Before going through these examples, you may want to familiarize yourself with Carving, Clip Planes, and Vertex Manipulation.

The easiest way to shape brushes is to carve them.  In this example, we'll carve a (non-functional) door into the walls.

1.  Open the texture browser, and select the LAB1_DOOR7 texture.

2.  Create a solid that is 64 units wide by 96 units high, and thick enough to extend through the wall.

3.  Place the door object in the location that you would like the door to be, and with the object selected, press Shift-Ctrl-C.

The door will remove a portion of the wall equal to its own area.  You can then manipulate the door any way you like.  For example, rather than have doors flush with the wall, try inserting the door 4 units into the wall.

Tip: It may be necessary to move the texture around the brush to achieve proper texture alignment.  For information on texture alignment, please refer to Texturing Solids and Face Properties dialog.

Another easy way to manipulate a brush is to use Clip Planes.  Clip Planes allow you to slice off chunks of an object.  Currently, the light fixtures on either side of the hallway are rather squared.  Let's clip off their corners.

1.  Select the light fixture.

2.  Select the Clipping tool from the MapTools toolbar.

3.  Press Ctrl-E to center the 2D views on the selected object.

4.  Click and drag the mouse pointer across the corners of the light fixture.  A portion of the highlighted object will be outlined in thick white lines. That is the part that will be kept when you press Enter to perfom the clip.

Note: If the incorrect portion is highlighted, as in the first picture below, you can press Shift-X (or click on the Clip Planes button) to cycle through the clip modes until the correct portion is selected.

5.  Follow the same steps in the other 2D views to clip off the other corners.

The last method of brush manipulation is Vertex Manipulation.  Vertex manipulation should only be used once you are comfortable with the other forms of brush manipulation.  It is quite easy to accidentally create an concave, invalid brush using vertex manipulation. (Remember, only convex brushes are valid.)  Here, we'll make an air duct that stretches across the ceiling of one room and use vertex manipulation to round off the corners.

1.  Open the texture browser, and select the DUCT_WALL04 texture.

2.  Create the air duct solid so the top of it is touching the ceiling.  It should be 48 units wide, 48 units high, and the length of the room.

3.  Zoom in (by placing the mouse pointer over the 2D view and pressing the + key) on the view shown in the first picture, above, and press Shift-V to go into vertex manipulation mode.

4.  In the above picture, the edges are marked E1 to E4.  Click on E1 and press Ctrl-F to split the face of the solid.  Repeat this for E2 through E4.

5.  With the face split, your brush should look like this. Vertices V1 to V8 are labeled here.

6.  To round off the corners of the objects, click on each vertex, and shift it over as shown in the picture above.

7.  Switch to the Selection tool, and deselect the air duct.  You will be left with a brush shaped like the one above.

Evolution

Your level has evolved into an interesting, realistic space.

In the next part of the Tutorial, we'll  add sounds to make your level seem more "alive."

Related Topics:

   •  Creating Solids

   •  Clipping, Carving, and Vertex Manipulation

   •  Creating Prefabs

   •  Monsters and NPCs


popup Tutorial 7


h. Using the Monster AI
Tutorial: Adding Monsters and AI (tut7a.rmf, tut7b.rmf)

last / next

Monster Placement

The placing of monsters is no different than the placing of any other point entity.

1.  Select the Entity tool on the MapTools toolbar.

2.  In the New Objects dialog, pick one of the monster_* entities.  For the following examples, we've used the monster_human_grunt entity.

3.  With the mouse, left-click in a 2D window and press enter.

4.  Choose the Selection tool on the MapTools toolbar and select the monster entity.

5.  Move the monster entity around each of the 2D windows until it is in the correct position.

6.  With the monster entity still selected, press Alt-Enter to bring up the Object Properties dialog (pictured below).  For now, the only thing we will modify is the direction of its Angle.  The Angle determines the direction the monster will initially be facing.

Artificial Intelligence (AI)

Now that you know how to place monsters, let's look at how you can set parameters for their behavior by using--or not using--info_node entities.  For this example, we've created the TUT7A and TUT7B maps.  Each map consist of two small warehouse-style rooms filled with crates and other obstacles.  In one room, three Grunts are barricaded in, waiting for your attack.  You are in the opposite room.  To your right is a shelving unit holding a machine gun and ammo.  To a player, the only noticeable difference between the two maps is the intelligence and maneuvering capabilities of the Grunts.

The following picture is the floor plan of the TUT7A map.  The light blue squares represent the three monster_grunts.  You are the green square.  The grunts in this map will generally stick to the area you see them in below.  They cannot maneuver through the map.

Below is a picture of the floor plan for the TUT7B map.  It is exactly the same as the above, TUT7A, except that 21 info_node entities were included that let the grunts maneuver around the map.  These info_nodes make it possible for the grunts to come looking for you.

click the above picture to see an expanded

view with the node paths drawn

Load up Half-Life bring up the console.  Type MAP TUT7A and press Enter.  Grab the gun and wander through the map. You should be able to defeat the grunts rather easily. Now, open up the console and type MAP TUT7B and press Enter  When the map loads, quickly grab your gun.  You won't have much time to wander as you'll immediately be put on the defensive.

The Info_node Entity

Info_node entities are a critical element of Half-Life's monster AI; specifically, navigation.  In order to get your monsters to pursue the player, your level must contain a graph consisting of several (sometimes a hundred or more) of these entitiesl.

It is quite simple to setup the info_node path AI.

1.  Select the Entity tool on the MapTools toolbar.

2.  In the New Objects dialog, pick the info_node entity.

3.  With the mouse, left-click in a 2D window and press enter.

4.  Choose the Selection tool on the MapTools toolbar and select the info_node entity.

5.  Move the info_node around each of the 2D windows until it is in the correct position.

When info_node entities are detected in a level, the Half-Life engine will automatically build a node graph for the level.  Building the graph may take a few seconds depending on the speed of your computer and the number of info_node entities in a level.  This will only need to be done once, as the game engine will save this graph for future use.  If the level itself is changed, the old node graph will be thrown out and a new one will be generated.

Info_node Placement Tips

The goal of node graphs is to give monsters the shortest, most efficient path to a goal–usually the player. However, since the player has the ability to move around the level in a variety of ways, you must place enough info_nodes so that the monster can reach the player under a variety of circumstances.  In other words, you need to guarantee that the monster can reach the player regardless of the path the player takes.  To do this, you must strike a balance between placing too few nodes, which will cause your monsters to get "stuck" and placing too many nodes, which will decrease the level's performance.

Here are a few guidelines for placing info_nodes.

  General

•	Monsters cannot navigate through architecture. To keep monsters from getting stuck, never place any info_node closer than 24 units to a wall, pillar, or other piece of architecture, as measured from the center of the info_node entity. When a monster is moving around using nodes, it will try to move the center of its body over each node in the path. Since the narrowest monster is 32 units wide, it needs an absolute minimum of 16 units of clearance on each side of its body; 24 units is better. When placing larger monsters (Bullsquid, Alien Grunt), provide a minimum of 40 units of clearance in each direction from the center of the node. As a general rule, never place an info_node in a place where any part of its yellow box representation overlaps architecture. The default bounding box for info_nodes is 48 x 48 x 8 units.

•	Info_nodes may overlap each other and may be placed very close to or under monsters.

•	Place each info_node as high off the ground as you like. The engine will automatically drop them down to 8 world units from the ground when it builds the node graph.

•	Do not place info_nodes on, under, or inside func_breakables, func_pushables or any other brush entity. The exception to this rule is func_wall entities which, when used as walls or floors, may have nodes placed on them..

• 	If you are planning a battle using monsters that have "take cover" behavior (grunts, houndeyes), place info_nodes on all sides of structures that make good cover, including pillars, low walls, crates, barrels, etc.

•	Be careful to leave enough vertical clearance for your monsters when placing info_nodes under structures like ducts and catwalks.

•	Assassins use a lot of info_nodes.  They need roughly two to three times the nodes that other monsters need to behave correctly.

•	The node graph will NOT write out successfully if a single node can see more than 128 other nodes.

Hallways

•	Always try to place info_nodes in the center of a hallway. Obvious exceptions are hallways with some type of obstacle (crates, pillars, etc.) in or very near the center. Again, you must leave enough side-to-side clearance for the monster to pass.

•	Place an info_node at the center of hallway intersections and corners.

•	If the hallway is very long, place several info_nodes in a straight line along the length of the hallway. A good rule of thumb is to place a node every 256 world units. This helps insure that your monster will be able to detect the next node in the graph.

•	At corners, place three nodes around the corner as illustrated below.This will allow human opponents to use the corner as cover and to jump out from time to time to take shots at the player.

Rooms

•	First, place an info_node at every important spot in the room. Important spots are those where a player may try to hide from a monster, places for a monster to run for cover, etc.

•	Next, place an info_node just inside the room near every exit. This will help monsters get into and out of the room.

•	Next, try to visualize the action that will unfold in this room.  Add info_nodes that will complete paths between the various important spots in the room, and from these spots to the exits. More nodes give monsters a better chance of finding a good path to a spot in a crowded room but too many nodes will erode your performance.

•	Add nodes slowly, and retest until the path works the way you'd like. You may receive the following error message in the console: "No path from X to Y" (where X is the number of the node nearest the monster and Y is the number of the node the monster is trying to find). The engine is telling you that it cannot build a path for the monster between these two nodes.  To adjust the placement of the nodes, check the .nrp file in valve/maps/graphs.  This file will tell you the location of the faulty nodes.  Remember that Worldcraft will automatically reposition the height of your nodes, so use the x and y coordinates only to locate the node in question.

Stairs/Ramps

•	In order for monsters to be able to walk up and down staircases, you must place a node on the center of the top and bottom stairs and on every other stair in the staircase.

•	If the steps in the staircase are particularly shallow or deep, you may need to move the nodes backward or forward accordingly. Remember, monsters can only find nodes they can see.

Doors

•	When you have two spaces connected by a door, place one node on each side of the door. If a monster needs to pass through a door, it will open the door when it is standing on the node just outside the door. The engine is able to discern which monsters have the ability to open doors (those with arms!) and which don't.

•	Be sure to place the nodes far enough from rotating and other moving doors so that the door doesn't hit the monster while the monster is waiting for it to open!

Thank you to Steve "Wedge" Bond for the above information on info_node entities.

Related Topics:

   •  Creating Entities

   •  The Final Word


Face Properties
Face Properties Dialogs

The Face Properties dialog allows you to manipulate the texture properties of selected brush faces.  There are a number of texture attributes available:

Note: while in Texture Application Mode, you can select multiple faces of a brush by ctrl-clicking them, or you can select the entire brush by shift-clicking one of the brush faces.

Scale (X/Y)

You can modify the scale of a texture to shrink or enlarge it.  Numbers less than 1 shrink, and numbers greater than 1 enlarge.  You can use negative values to mirror the texture in one or both planes.

Shift (X/Y)

This simply allows you to shift the texture around in the X and/or Y planes.

Note: The shift values are in relation to the grid settings.  It can be extremely helpful to align a brush first to the grid, then move the brush to its intended location with Texture Lock enabled.

Rotation

Rotation allows you to rotate the texture on a brush face.

Texture Group

Select the texture group you want to use.

Hide Mask

If this button is toggled on, the selected brush face(s) will not appear as selected (with a reddish hue).  This may make it easier to perform some texture manipulations.

Mode: Lift+Select

This lets you select what feature you want the left mouse button to be.  The available options are Lift+Select, Lift, Select, Apply (texture only), Apply (texture + values).

Related Topics:

   •  MapTools toolbar


Entity Report
Entity Report dialog

The Entity Report can be used to manage your entities and do quick searches for specific entities, providing an easy alternative to searching through your map manually.

Entities

This box lists the entities in your level based on what is specified in the Filter section.  You can select a single entity, or multiple entities by shift-clicking or ctrl-clicking.  With entities selected, you can use the four buttons to the right: Mark, Go to, Delete, and Properties.

Filter

Here you can specify filters so the only certain entities are displayed.  First, you can choose whether all types of entities will be displayed, or only brush or point based entities.  You can also decided whether currently hidden entities should be displayed.

When searching for a specific entity or group of entities, it will be convenient to use the search by key/value or search by class.  While searching by key/values, entities with partial matches will be shown unless the Exact checkbox is checked.

Related Topics:

   •  Creating Entities

   •  Entity Properties

   •  Interacting with Entities


Vertex Manipulation

Once you've created a simple, textured solid, you can use Worldcraft's tools for refining your work. These tools include vertex manipulation, face splitting, clip planes and carving. Each of these tools lets you customize your solids by modifying the basic shapes you started with.  You will find that you can achieve the same or similar effect using different tools; some are just faster and easier than others when it comes to making the precise change you are trying to make.

Vertex Manipulation

Vertex manipulation allows you to move individual vertices and edges of a solid, easily creating irregular shapes. This lets you make shapes that are impossible with plane clipping, and extremely difficult to do with carving.  Vertex manipulation is also is useful for modifying specific pieces of a group of objects, where resizing would interfere with other objects in the group.

Note: While Vertex Manipulation makes the creation of new complex shapes easy, it also make the creation of invalid shapes easy. Remember that concave shapes are not valid within Worldcraft.

Vertices and Edges

A vertex (or plural, vertices) is a corner of a solid.  Moving one vertex will not effect any other vertex, but it will change the position of any edges associated with it.  An edge is a point between two vertices which, when moved, will change the position of its two associated vertices, as well as their associated edges (no other vertices are effected besides the first two).

The usage is as follows:

1. Select the object(s) you would like to manipulate. (fig. 1)

2. Select the vertex manipulation (VM) tool from the MapTools toolbar.  The selected solid will turn into a wireframe-type solid with partial shading (fig. 2).  Vertices will be marked as white dots, and edges as yellow dots.

Note: You can keep pressing the VM button, or press Shift-V, to cycle through the 3 VM modes.  They are: vertices and edges (default), vertices only, and edges only.

3. Click on the vertices/edges you want to move.  They will be highlighted (fig. 3).  Note that you can move both vertices and edges.

4. You can either drag the selected vertices or edges with the mouse, or move them in the selected 2D view using the arrow keys.

Tip: To undo anything done in VM mode, you will have to first exit VM mode.

Face Splitting

Face splitting allows you to add additional faces to a brush. This is a useful tool when you want to add complexity to an object in your level. Simply select two opposing edges (fig. 3) and press Ctrl+F.  This will turn the two edges into vertices, and place a new edge between them (fig.4).

Vertex Scaling

Vertex scaling allows you to select a number of vertices and change their scale in relation to each other.  The process is quite simple.

1.  Select an object.

2.  Go into Vertex Manipulation mode.

3.  Select a number of vertices.  In the example picture below, all of the vertices on the top of a cylinder have been selected.

4.  Press Alt-E to bring up the Vertex Scaling box.  You can press the up or down arrows to move in 0.1 increments, or enter a scale value directly in the text area.  The scale changes will automatically be reflected on the selected object.

5.  When you are done with the scaling, press Escape to close the Scale box.

Related Topics:

   •  Creating Solids

   •  Clip Planes and Carving


Clip Planes

Clip Planes

Clip planes let you make a precise cut in a solid, dividing it into two pieces.  You then have the option of keeping one or both of the resulting two solids.  You may find using Clip Planes quicker and more efficient than carving or vertex manipulation.

1. Select the object to be clipped. (fig. 1)

2. Select the Clip Plane button on the MapTools toolbar.

3. Drag a line across the selected object. (fig. 2) This is the clip line.  The part of the object to be kept will be highlighted in thick white lines.

Note: You can cycle through the clip modes by clicking on the clip plane button, or by pressing Shift-X (fig.2, 3, 4).  You can move both points of the clip line by holding CTRL and dragging one point of it.

4. When you are satisfied with the resulting object, press Enter to perform the clip. (fig. 5, 6)

Related Topics:

   •  Vertex Manipulation and Carving

   •  Creating Solids


Carving

Carving a volume out of solids

In Worldcraft, any solid can be used to carve a volume out of other solids.  For example, you can place a solid within the room's wall and tell Worldcraft to subtract the solid from the wall -- effectively punching a hole right through the wall!  This feature is not limited to using cubic shapes as a carving tool:  any solid -- cylinders, cubes and wedges -- can be used to carve other solids.

While carving, especially with a cylinder, it is best to carve the smallest areas possible.  For example, if you attempt to create a hole in a large wall using the cylinder, Worldcraft will automatically break the wall face into several pieces, something you don't want.  Instead, a more efficient way to carve would be to first carve a square hole (the same size as the circle) and leave the square in place.  Then you can take the cylinder and carve a hole in the small square.   This will eliminate the splintering effect for the wall.

1.  In this step, you have the object you want to carve into (in blue), and the object you will be carving with (in red).  The red object should be selected.

2.  Position the carving object so that it is where you want the hole to be.

3.  Press Ctrl+Shift+C, or right click on the selected object and select Carve.  You can also press the Carve button on the MapOperations toolbar.

 4.  Either delete the object you used to make the carve, or use it to fill the hole. (For example, use the piece carved out of a doorway as the door.)

Note: In the picture above, you can see that the cube (which was previously one object) is now broken into 4 separate objects.  This is because the game engine cannot handle concave objects, and Worldcraft has broken it into convex pieces.

Related Topics:

   •  Creating Solids

   •  Clip Planes and Vertex Manipulation


Creating Solids

Creating Solids from Scratch

Creating solids is quite simple.  The process always follows the same four basic steps:

1. Select the Block tool.

2. In the New Objects dialog, select Primitives in the Categories box.  In the Objects selection box you will have 5 options.  Select any one of these objects:

   •  block

   •  wedge

   •  cylinder

   •  spike

   •  arch

Note: The arch primitive is a special case. It is not actually a primitive object, but an Arch tool which allows you to quickly and easily make multi-piece arches.  For more information on the Arch tool, see Using the Arch Tool.

3. Drag a box in a 2D view, making sure it is the correct size and in the correct position in each of the views.

4. Press Enter to create the solid.

Creating Solids by Cloning

Cloning provides a simple way to quickly duplicate an object or group of objects.  This includes both brushes and entities, and groups can contain a mixture of both.

1.  Select the Selection tool.

2.  Select the object (brush, entity, or group of brushes and/or entities) that you would like to clone.

3.  Hold shift, and click and drag the selected object to its new position with the left mouse button.

4.  While shift is still being held, release the mouse button.  The object has now been cloned.

Placing Prefabs

Once you have a prefab library created (see creating prefab libraries), it is a simple task to insert a prefab into your level.

There are two ways to put a prefab into your level.

The simple method is to select the prefab library from the Categories selection box, and the specific prefab from the Object selection box, and then press the Insert original prefab button.  This will insert the selected prefab in the center of the 2D views.  You can do this with either the Selection or Block tool selected.

The second way to insert a prefab is with the Block tool.

With the Block tool selected, create a box the same approximate size you want the prefab to be.  Then select the prefab library and prefab object.  Last, press enter to create the prefab.  This will create prefabs at any size you specify, rather than inserting them at original size then requiring you to resize them manually.  The object circled in the last picture is the prefab in its original size.

Related Topics:

   •  the Arch Tool

   •  Creating Entities

   •  Creating Prefab Libraries

   •  Texturing


Creating Prefabs
Creating Prefab Libraries

Prefab libraries allow you to easily store pieces from your levels that can be used over and over.  Examples of useful prefabs include hallways, light fixtures, unique objects (vehicles, etc), and furniture.

First, you need to create the library.

In the Prefab Factory dialog, click on the Add Library button.  The Edit Library dialog will appear.  Enter the name of the library and a brief description.  Press Enter to create the library.

Now, you have an empty library and a map with several objects you'd like to add as prefabs.

To add an object to the prefab library, find the object in your map and select all of it.  In the New Objects dialog, press the Create Prefab button.

The Create Prefab dialog will appear allowing you to define the name and description of the prefab, as well as which library it will be placed into.  Repeat this process for as many objects as you'd like.

Placing Prefabs

Placing the objects you make is just as simple.

Simply select the library from the Categories list, select the object from the Objects list, and press the Insert original prefab button.  The object will be inserted in your map, centered in the 2D views.  For more information on placing prefabs, see creating solids.

Related Topics:

   • Working with Solids and Entities

   •  Prefab Factory dialog

   •  New Objects dialog


Grouping and VisGrouping

Even relatively modest Worldcraft levels can contain hundreds--even thousands--of objects. Worldcraft offers two ways of keeping track of items in your level: normal grouping and visibility grouping (VisGroups).

Grouping

Normal grouping is used to literally "glue" things together.

The object shown above is made of eight brushes.  If you were to click on a single brush when the object is ungrouped, only that brush would be selected;  you'd have to ctrl-click each piece to select the whole thing (or drag a selection box over the whole thing).  When the object is grouped, however, you can click on any individual brush to select everything in entire group.

   •  brushes do not need to touch in order to be grouped together

   •  groups may contain any combination of brushes and entities

   •  you can work on an individual piece of a group of objects by enabling the ignore groups option

   •  grouped objects can be combined with VisGroups (see below)

VisGroups

VisGroups stands for visibility groups.  VisGroups make managing objects easy by letting you control what you see on your screen. With VisGroups, you can arbitrarily assign objects to a specific group; you can then turn the visibility of that group on and off. Let's say you have the following section in your map:

Now, you'd like to be able to make the furniture a group, but you still want to move each piece around independently from the others.  This is precisely what VisGroups are good for.

First, select the furniture pieces, then click on the hide selected objects button.  This will do two things: hide the objects in the 2D and 3D views, and create a new VisGroup with the selected objects.

The new VisGroup will appear in the Filter Control dialog named after the number of objects it contains.  To change the name of the VisGroup to something more suitable, select the VisGroup, then click on it again.  You will be able to change the name to whatever you like.  You can also click to the left of the name and a hand will appear next to the VisGroup.  This is how you set which VisGroups are visible and which are not.  You must press the Apply button for the changes to take effect.

Some things you can do with the mouse in the Filter Control dialog:

   •  drag one group onto another group  (this will cause the first group to be merged with the second group, and the resulting group will keep the name of the second)

   •  drag a group out of the Filter Control dialog (this will allow you to delete VisGroupings)

If you make the furniture group visible, then select it and press the Mark button, the group will be highlighted in the 2D and 3D views.

The other two options available to you are Purge and Edit.  Pressing the Purge button removes any VisGroups from the Filter Control dialog that do not actually contain any objects (which is possible if you have deleted objects or made one VisGroup part of another).

The Edit button brings up the Object Groups dialog.

This dialog allows you to change the name and color of existing VisGroups, or delete them.  Deleting the VisGroup does not actually delete the group's objects, it just eliminates the VisGroup, making them individual unlinked objects.  You also have the option of creating new (empty) VisGroups with the New Group button.

The last way you can use VisGroups is through an object's properties, in the VisGroup tab.

The above dialog will also be a part of an entity's Properties dialog.  To assign the object to a VisGroup, just select the appropriate group.  To remove the VisGrouping from this object, click on (no group).

Related Topics:

   •  Working with Solids and Entities

   •  MapOperations toolbar

   •  Filter Control dialog

   •  Properties dialog


Entity Properties

The Properties dialog box is the primary method of modifying entity properties, and also allows you to adjust VisGroup properties for one or many brushes.

Entity Properties

Entity properties can be divided into two groups: variables (or keyvalues) and spawnflags (or flags).

   •  keyvalues are the variables in an entity that define what it does or how it acts.  Typical values for these variables are strings or integers, or even combinations of both.  The keyvalues can be accessed and modified in the Class Info section of the entity properties.  Angle is also a keyvalue, but rather than making you enter it separately, you can modify it by using the Angle compass at the top right corner of the properties box (or you can enter a specific angle into the box beside it).

   •  flags are similar to keyvalues in that they define how an entity will act.  The major difference is that a flag has only two values: on and off.

Class Info

The Class Info section is where you modify entity properties.  As is apparent from the above picture, there are two editing modes: SmartEdit, and "not SmartEdit" (toggled by the button, circled).  When you use the SmartEdit mode, all of the entity's keyvalue descriptions are shown to you. If you are already familiar with the entity properties, you may find it more convenient to turn this mode off and manually insert the keyvalues.

Flags

This section is also only available when editing an entity's properties.  You will find listed here all the available flags for an entity.  They can be toggled on or off.  The number of spawnflags available has been increased over previous versions of Worldcraft to allow for future game developments.

Related Topics:

   •  Creating Solids and Entities

   •  Properties dialog


Creating Entities

Entities give life to your level.  They are the monsters, doors, switches and lights that turn your static architecture into an interactive environment. Careful use of entities is critical to creating an interesting, unique and fun level for others to play.

Unlike solids, entities are not created within Worldcraft.  Most users will simply choose from a pre-existing set of entities provided with Half-Life.  Once you have selected the appropriate entity, Worldcraft gives you control over its placement and other properties.  For a detailed description of individual entities, refer to the Half-Life Entity Guide (which can also be accessed from the Help menu selection).

There are two types of entities: point-based and brush-based.

Point-based entities exist only at a certain exact point.  Examples include lights, monsters, and player start points.  (Monsters do have an area, but it is defined by the game code and is not modifiable from within the map.)  Some point type entities are just that: points.  For example, the env_beam entity, which controls Half-Life's beam effects, uses two info_target entities as targets and the beam of light runs between these two points.

Brush-based entities are entities that depend on either a brush for their physical presence (like doors, trains, and other moving entities) or an "area" (like triggers, which require an activation field).

Point-based Entity Placement

1.  Select the entity tool on the MapTools Toolbar.

2.  From the New Objects dialog, select the entity you want.

Note: the entity list in the New Objects dialog is for point-based entities only.  For information on brush-based entities, please refer to the following section.

3.  Click in a 2D window, then position the entity cursor with the mouse.

4.  Pressing Enter will create the entity.

Tip: You will most likely need to edit the entity properties after you place a point-based entity. Select the entity and press Alt-Enter to view the entities properties dialog box. This dialog pops up automatically for brush-based entities.

Brush-based Entity Placement

Brush-based entities are a bit more complicated to place.

1.  Create the object where you would like it.  You can use as many brushes as you'd like when building a brush-based entity.  The example at top right uses 6 brushes to build a door.

2.  Select the entire object.

3.  On the New Objects dialog, press the toEntity key, which will turn the selected objects into a brush based entity and...

4.  ...bring up the entity properties dialog.  Select the appropriate entity from the Class list box, in this case func_door.  Once the entity type is selected, you can modify the entity properties as needed.

Tip: Bring up the entity properties for a brush-based entity the same way you do for a point-based entity: select, and press Alt-Enter.

5.  Notice that brush-based entities appear as a different color in the 2D windows, typically the purplish color shown here.

Related Topics:

   •  Creating Solids

   •  Entity Properties

   •  Interacting with Entities


Texturing Solids

Textures are the designs applied to the surfaces of solids.  These textures show what material a given solid is made of (brick, steel, sand, etc.). So, while solids give your level form, textures indicate function, create atmosphere and bring your level to life. Skilled application of textures is one of the most important aspects of creating a good level.  Worldcraft's tools give you easy access to all of the texture properties.

Half-Life's textures are stored in WAD files.  A WAD file is a collection (a wad) of textures that the compile tools use to put textures into the compiled map.  Texture WADs can be added and removed from the Texture Options.

Note: the WAD file dates all the way back to Doom.  Doom uses the WAD format to store complete level information, including map, textures, monsters, etc.

When Quake came along, the WAD format changed into the WAD2 format.  WAD2 is less of an essential game file than it is a design file.  It is used to store 8-bit single-palette textures.  During the compile process, the compile tools take textures from a WAD2 and place them directly into the compiled map files.

Half-Life uses the WAD3 format.  It is essentially the same as the WAD2 format, except that each texture stored includes its own palette.  This allows for a much richer color depth than previous texture systems.

Your first encounter with textures will most likely be through the Textures dialog.

The Textures dialog shows the current texture, and lets you select a new texture.  The Current texture drop-down list shows the last eight textures used, then continues with a list of the remaining textures.  Use the Texture group scrollbox to view a different subset of textures.  You will have a choice between viewing all textures, or viewing individual texture WAD3 files.  (A WAD3 file is a file that contains a group of Half-Life textures). You can add or remove WAD3 files in the Textures Options dialog.

Texture Browser

The Browse... button opens the texture browser, where you can select from all available textures (as dictated by the Texture Group selection).

The Size scroll box allows you to set the displayed size of the textures.   You can choose from 32x32, 64x64, 128x128, or 1:1 (full size).

The Filter dialog box allows you to type in a search string.  Any texture that includes that string as part of its name will be displayed.  You can specify more than one filter string.  For example, if you specify the search string "sign 7," any texture with "sign" and "7" in its name will be displayed.  Previous search strings can be accessed by clicking on the down arrow.

The Only used textures option tells the browser to display only those textures that have been used in your level.  This helps you limit your use of different textures, and avoid using different textures for the same purpose.  For games such as Half-Life, textures are stored in the compiled maps.  Reducing the number of textures will decrease the compiled map size.  Fewer textures to load also means memory savings while playing the map in the game.

The Mark button allows you to mark (select) all texture faces that contain the selected texture.  You can then adjust those faces as required (textures, surface attributes, etc).  This is best used in conjunction with the Face Properties dialog.  If the normal Apply Textures map tool is used, any brush with one face selected will have the new texture applied to every face of the brush.

The Replace button (also accessible through the Tools menu) will bring up the Replace Textures dialog.

Texture Application Mode

You will eventually need to modify a texture in some way.  The Face Properties dialog (Texture Application mode) lets you manipulate the texture properties of selected brush faces.  There are a number of texture attributes available:

Note: while in Texture Application mode, you can select multiple faces of a brush by ctrl-clicking them, or you can select the entire brush by shift-clicking one of the brush faces.

Scale (X/Y)

You can modify the scale of a texture to shrink or enlarge it.  Numbers less than 1 shrink, and more than 1 enlarge.  You can use negative values to mirror the texture in one or both planes.

Shift (X/Y)

This allows you to shift the texture around in the X and/or Y planes.

Note: The shift values are in relation to the grid settings.  It can be extremely helpful to align a brush to the grid first, then move the brush to its intended location with Texture Lock enabled.

Rotation

Rotation allows you to rotate the texture on the brush face.

Texture Group

Choose the texture group you want to work with.  A texture group can either be "all textures" or textures from individual texture WADs.  For information on adding new texture WADs, see Texture Options.

Related Topics:

   •  Textures dialog

   •  Replace Textures dialog

   •  Face Properties dialog

   •  Texture Options dialog


Interacting with Entities

There are as many ways for the player to interact with entities as there are entities.  The purpose of this section is to give you an idea of what some of the common entities are, and what you can do with them.

Doors, Platforms, and Buttons

These are probably the most common physical entities in a level.

These entities can be activated in a number of ways.  By themselves, they can be activated by "using" them, or by simply by walking up to them.

Note: You can make a "use" key by binding +use to a key of your choice.  For example, to make Enter the "use" key, at the console, you would type bind Enter +use.

These entities can also be triggered by other entities.  For example, doors are often triggered by the use of a button or switch. "func_button" "trigger_once" and  "trigger_multiple" are examples of this type of entity.

In the above picture, when the player runs into the trigger (circled), the door (dotted-outline) will open.

You may also want to use a trigger when you have two objects that must act in concert.  The two pictures above show the same scene in the game (top) and in the editor.  In the game picture, notice that the window in the door is translucent.  Because of the way entities and transparency work, the window must be a separate entity from the door, though both must be activated at the same time.  To make this work, both the door and window (which is also a func_door entity) are given the same "targetname" keyvalue, and the trigger (circled) targets that keyvalue.

As with entities in general, triggers can be brush-based or entity-based.  Brush-based entities can be triggered by an activation field which the player must walk through.  Point-based entities must be activated by some other trigger, like a button or switch.

For more detailed information, please refer to the Tutorial and the Half-Life Entity Guide.

Related Topics:

   •  Creating Entities

   •  Half-Life Entity Guide


b. The First Room
Tutorial: The First Room (tut1.rmf)

overview / next

The first obstacle most people encounter when learning to build in 3D is how to make that first room.

A basic room is a floor, walls and ceiling.  This requires 6 brushes (solids).  The exploded view of a room should make that quite clear.  Note that a room must be sealed in order for it to be compiled properly.

Creating a New Map

First, you need to create a new map.  This can be done by selecting New from the File menu, or by pressing Ctrl-N.

Selecting a Texture

Before you create a brush, Worldcraft asks you to choose a texture for that brush. (You can always change the texture later.)

1.  On the Textures dialog, click on the Browse button.  This will bring up the texture browser.

2.  In the texture browser, in the Filter box, enter crete3_wall01.  The texture filter reduces the list of textures to only those with the filter string in their name.  You should see only one available texture.  Select that.

Note: You don't need to use the filter to select a texture; you can, instead, use the scroll bars and search through the complete texture list.

Creating the Room

Now, construct the room itself.

1.  Select the Block tool by clicking on the icon on the MapTools toolbar, or by pressing Shift-B.

2.  In one of the 2D views, click-drag (with the left mouse button) a box that is 256 x 256 units. Then, adjust the box so that it is 256 x 256 units in the other two 2D windows.  This is how you create a perfect cube.  Press Enter to create the box.

Tips: The status bar at the bottom of the screen contains useful information .  The numbers in the third box from the left hold the width, length, and height of the current object.  The dimensions of the brush can be adjusted by manipulating the object in the 2D windows.

Second from the left is the zoom factor for the currently active 2D window.  Adjust the zoom factor by placing the mouse cursor in one of the 2D windows and pressing the plus and minus keys, by pressing the numbers 1 through 0 for preset zoom settings, or by switching to the Magnify tool and pressing the left mouse button to zoom in or the right mouse button to zoom out.

The last section of the status bar holds the grid setting for the 2D windows.  This can be adjusted up or down by pressing the left square bracket and right square bracket ([ and ]), or through the grid settings option in the Map menu.

Now, you have a single, solid cube.  Turn this cube into a room by making it hollow:

3.  Switch to the Selection tool, and click on the "x" in the middle of the newly created object. You can tell an object is selected by its red outline.

4.  Click on the object with the right mouse button, and select Hollow from the menu.  You will be prompted for a value for the wall thickness.  Enter 16 and press Enter.

The Player Starting Point

Every playable level needs a player start point.  This is done by placing an info_player_start entity in your level.

1.  Select the Entity tool from the MapTools toolbar

2.  In the New Objects dialog (to the right of your screen), select info_player_start from Objects list box.

3.  With the left mouse button, select one of the 2D views.  The entity placement cursor will appear (in green).  Use this to position the entity in each of the 2D views.  When you have it approximately where you'd like it, press Enter to create the entity.

Let There Be Light!

If you have no lights in your level, everything will appear black.  For now, lets remedy the situation by placing a point light in the level.

1.  Select the Entity tool from the MapTools toolbar

2.  In the New Objects dialog, select light from Objects list box.

3.  As above, place the entity in the level.  This time, center it in the middle of the room.  Press Enter to create it.

Your level will now look like this:

Run this puppy

Compile and run your map.  The level certainly isn't very exciting yet, just a square room with concrete walls, floor, and ceiling.

Related Topics:

   •  Compile Dialogs

   •  Connecting Rooms


The Worldcraft Interface

Before you can begin creating and placing solids and entities, you need to familiarize yourself with the Worldcraft interface.

Your working area is divided into 4 sections.  The first three windows contain the 2D views available to you in Worldcraft. The forth window contains a single 3D view.

The 3D window is a dynamic 3D space where you can view your level from any angle.  This is critical for checking textures and texture alignment, spotting leaks and just getting a sense of what your finished level will look like.  To take advantage of the 3D view, you need to be able to place cameras. Cameras determine your vantage point(s) in the 3D view.

For information on how to customize the Worldcraft Interface, see View Menu.

Using Cameras

Worldcraft provides you with precise control over the camera movements in your map.

A camera in Worldcraft consists of two parts: the eye, and the viewing angle, which is represented by a line extending out from the eye.  The length of the line that represents the viewing angle is not important, though it can help you aim the camera exactly at an object.

While it is possible to move a single camera all over the map each time you need to look at something new in the 3D window, it is more convenient to have easy access to multiple cameras placed throughout the map.  Worldcraft allows you to easily cycle through multiple cameras by pressing PageUp and PageDown.

Camera Placement

Placing cameras in Worldcraft is extremely simple.

1.  Click on the Camera tool on the MapTools toolbar.

2.  Hold Shift and with the left mouse button, click-drag a line.  This will create a thin red line with a large dot at one end.  The dot is the camera's position, and this is where the 3D camera view will originate. The red line is the camera's viewing angle.  You can adjust either end of the line to change the view. Follow the above steps to create as many cameras in your level as you need.

Note: There are a number of options available to you when using multiple cameras.  You must have the Camera tool selected to take advantage of these:

PageUp:  cycle up to the next camera position

PageDn:  cycle down to the last camera position

Delete:  delete the current camera position

Shift:  hold shift and click-drag with the left mouse button to create a new camera.

Tip:  While in camera mode, you can adjust the camera position by moving the eye or viewing angle in any of the 2d windows.

Keyboard Shortcuts

There are a number of keyboard shortcuts that you can use to quickly maneuver through the 3D view without switching to the Camera tool.

While holding the spacebar:

   •  holding the left mouse button allows you to rotate your angle of view in any direction, while the viewing

      point remains stationary.

   •  holding the right mouse button will allow you to move left, right, up, and down while keeping the viewing angle constant.

While holding the spacebar and Shift:

   •  the left mouse button acts the same as above.

   •  the right mouse button allows you to move forward and backward, as well as from side to side.

Related Topics:

   •  MapTools toolbar


d. Texturing
Tutorial: Texturing (tut3.rmf)

last / next

Now that you've created some basic architecture, it's time to think about textures. You'll want to use the 3D textured preview for this work.

Choosing the Textures

First, you need to decide the "theme" of your level.  Is it an office building?  A network of caves?  A concrete bunker of some kind? Once you have a general idea of the type of environment you're creating, choosing textures becomes much easier.

This tutorial level is a general-purpose, man-made environment. After a quick scan of the textures, we've decided to use con1_bord04 for the floor, and c2a4_h2g for the walls.  We'll leave the ceiling as-is for now.

To change textures on multiple faces at one time, open the Texture Application dialog box (from the Tools menu or by clicking on the Toggle Texture Application icon on your toolbar). This assures that you are selecting faces of a brush rather than the entire brush. With the Selection tool selected, ctrl-click the floor brushes until they're all highlighted. Then, when you have the con1_bord04 texture selected as the current texture, press the Apply button.

To do the walls, we'll do it a bit differently.

Toggle texture application mode on, and when the Texture Application dialog comes up, make sure that the Current texture is c2a4_h2g and the button at the bottom says Mode: Lift+Select.  Now, in the 3D view, click on all of the walls with the right mouse button.  This will apply the current texture to the wall.  Move around the level as described in using the camera, and apply the texture to all of the walls.

What's behind door number one...

Compile and run your map.

This is a tad better.  In the next tutorials, we're going to make the lighting a bit more realistic, and add some details to the rooms.

Related Topics:

   •  The Worldcraft Interface

   •  Texture dialog

   •  Face Properties dialog

   •  Using Light


i. The Final Word
The Final Word

last

What makes a good level?

The answer to that question can both fill volumes, and be answered in a single line: A good level is a fun level.  Victor Hugo wrote "If a writer wrote merely for his time, I would have to break my pen and throw it away."  That is to say, don't design just for the simple sake of designing a level.  Rather, design a level to be used.  Give the level purpose, motion, and character, and it will be a good level.  All aspects of design will contribute to that, and must be balanced against each other.  In the end, people are going to judge the level on whether or not they liked playing it.

Purpose

A level with purpose draws the player in.  It both gives the player a goal, and creates the sense that something is being accomplished above and beyond what the player is doing in that moment.

Motion

Give motion and momentum to your level in both a physical and temporal sense.  I'm referring less to doors, trains and buttons, and more to the motion of consequences.  By looking at a level, you should be able to guess what has happened before you arrived, and at least have an inkling of what will happen in the immediate future.  Give the player a sense that he is running through a living area, where things happen.

Character

This can be used to describe the lighting, the structure, the relative ambiance of a level.  The character of a level can determine, and is partly determined by, its purpose and motion.

Know thy enemy

The one thing holding you back from making "the perfect level" is the limitation placed upon you by both the engine and by current technology.  While designing levels, always be sure to keep track of your levels performance data, and stay within the range you set at the start of your project.

"A building is alive, like a man.  Its integrity is to follow its own truth, its one single theme, and to serve its own single purpose.  A man doesn't borrow pieces of his body.  A building doesn't borrow hunks of its soul.  Its maker gives it the soul, and every wall, window and stairway to express it."

- (Roark) Ayn Rand, The Fountainhead


a. Tutorial Overview
Tutorial Overview

next

This tutorial will take you through the steps needed to construct your first level. While it does not cover everything you need to know to become an expert level designer, you will learn enough here to build a good basic level that can be played in Half-Life. For each stage, there are maps included for you to examine.  Stages 1 through 6 step you through the development of a basic map.  Stage 7 introduces monsters and monster AI.  It includes two maps, one with AI implemented, and one without.

Stage 1 - The First Room

Creating your first room is probably easier than you think. We'll cover a bit of background material and show you how to construct a basic room with a player start point and a light source. It's definitely not a room with a view, however!

Stage 2 - Connecting Rooms

Here you'll see how to join two rooms with a short section of hallway.

Stage 3 - Texturing

We'll explore some methods of placing textures in your levels.

Stage 4 - Using Light

Light is one of the most important elements in a map.  Some lighting methods are discussed here.

Stage 5 - Detailing Your Level

Here you'll see how to add detail to your level using prefabs, entities, and brush manipulation.

Stage 6 - Adding Sounds to Your Level

We'll add a little ambiance to the level in the form of sound.

Stage 7 - Adding Monsters and AI

Ah, the spice of life: populating your levels with Nasties.  The implementation of AI is also discussed here.

Stage 8 - The Final Word

This is a small essay on the philosophy of map design.  It is in reference to single player/coop levels.

Related Topics:

   •  Introduction to Editing

   •  Creating Solids

   •  Creating Entities

   •  Using the Camera


popup Show Information


popup Screen Elements


popup View Planes


popup Create Prefab


popup About Dialog


popup Independant Windows #1

classic


popup Independant Windows #2

super-size


popup Independant Windows #3

QE4 look-alike


WWW Reference
WWW Reference Pages

The World Wide Web offers an abundance of Half-Life information.  Below are some of the main hosting sites where you can find ample information.

There is no official technical support provided for this version of Worldcraft.

Official Half-Life site

www.sierrastudios.com

Half-Life fan sites (not affiliated with Valve or Sierra Studios)

www.halflife.net (stomped affiliate)

www.half-life.net (Frag.com affiliate)

www.contaminated.net (PlanetQuake affiliate)

www.valveworld.com (Telefragged affiliate)

www.halflife.org (hosted by GameStats)

www.planethalflife.com (Mission Yard Gaming Network affiliate)

Editing

www.worldcraft.com

Half-Life Editing Resource Center (Hosted by Gamedesign.net)

The Forge (hosted by PlanetQuake)

www.gamedesign.net (Alterverse affiliate)

Wavelength (hosted by PlanetQuake)

Company

www.valvesoftware.com

Note: You need to have an Internet browser properly installed on your machine, and be currently connected to the Internet to use the above links.


popup Align Objects


popup Flip Objects


popup Path Tool #1


popup Path Tool #2


popup Path Tool #3


popup Selection Box


FGD Guide

Working with FGD files.

The FGD file is what Worldcraft uses to define its entities. It is a scripting language that sets up what entities will be available to you, what flags and keyvalues (variables) will be present in each entity, and what default values the flags and keyvalues will have.

Note: Most people will never need to know any of the information presented in this section.  It is included here for those advanced users who are either customizing their FGD file or are creating a new FGD to add support for a new game or mod.

FGD Format

The FGD file follows a fairly basic format.  Everything between [ ... ] is optional

//

// descriptive comments

//

// The worldspawn entity is present in every FGD.

// Normally it is the first thing defined.

@SolidClass = worldspawn : "World entity"

[

variable1(variable_type) : "Description" [: default_value]

variable2(variable_type) : "Description" [: default_value]

...

]

// comments

@BaseClass [base( )] [color( )] [size( )] = base_name

[

variable1(variable_type) : "Description" [: default_value]

variable2(variable_type) : "Description" [: default_value]

...

]

// comments

@PointClass [base( )] [color( )] [size( )] = entity_name : "Description"

[

variable1(variable_type) : "Description" [: default_value]

variable2(variable_type) : "Description" [: default_value]

...

]

// comments

@SolidClass [base( )] [color( )] = entity_name : "Description"

[

variable1(variable_type) : "Description" [: default_value]

variable2(variable_type) : "Description" [: default_value]

...

]

...

...

...

Base Inheritance, Color, Size

These determine how entities will appear in Worldcraft.

base ( ) = base(base_1[, base_2 ... base_n])

   •  This allows you to use inheritance when you define your entities. For example, if you define the following BaseClass...

@BaseClass color(128 255 128) = Door

[

targetname(target_source) : "Name"

target(target_destination) : "Target"

wait(integer) : "Wait" : 0

delay(integer) : "Delay" : 0

]

...and define the following entity...

@SolidClass base(Door) = func_door : "normal door"

[

message(string) : "Message"

]

...it will be equivalent to defining the following...

@SolidClass color(128 255 128) = func_door : "normal door"

[

targetname(target_source) : "Name"

target(target_destination) : "Target"

wait(integer) : "Wait" : 0

delay(integer) : "Delay" : 0

message(string) : "Message"

]

...the advantage being that you can now use the BaseClass reference to define a number of entities with the same basic characteristics.

   •  Any part of the BaseClass can be overridden in the new entity simply by redefining the specific part. In the above example, if you wanted to use the Door BaseClass for func_slowdoor, but the func_slowdoor is supposed to have a default delay of "4", you would define it like this...

@SolidClass base(Door) = func_slowdoor : "slow door"

[

delay(string) : "Delay" : 4

]

...the same can be done for color( ) and size( ) as well.

color( ) = color(r{0 .. 255} g{0 .. 255} b{0 .. 255})

   •  This sets the color of the entity as it appears in Worldcraft's 2D views.

   •  This has no effect in the game.

size( ) = size(x y z[, x y z])

   •  This sets the size of the entity as it appears in Worldcraft's 3D and 2D views.

   •  The size is based on the actual model size of the entity (in cases where the entity is associated with a model).

   •  If this value is incorrect, it is difficult to accurately place the entity in the level.

   •  If you only specify the first set of values, it will be assumed that the entity origin is in the center. For example, "(-8 -8 -8, 8 8 8)" is equal to "(16 16 16)".

   •  In the case of non-model entities, a size of (-8 -8 -8, 8 8 8) is fine.

Variable Types

Following is a list of entity variable types.

flags

Flags let you enable or disable a certain feature of an entity. Flags always follow a fairly strict setup, they are always defined like this...

spawnflags(flags) =

[

flag_value : "description" : on_off_value

...

]

   •  The only variation from the above will be in the flag_value, description, and on_off_value.

   •  flag_value must be one in the range of {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}

   •  {256, 512, 1024, 2056} are usually reserved for the Appearflag flags, which determine whether or not an entity will appear at a given skill level.

   •  on_off_value is either 1 or 0.

target_source

target_destination

These two variable types denote a relationship between one entity and another. This type is most often associated with the target and targetname variables...

targetname(target_source) : "Name"

target(target_destination) : "Target"

...where typically there will be an entity with a target value, and an entity that has a matching targetname value.

integer

The integer type is used for variables that hold a number...

delay(integer) : "Delay before activation" : 0

   •  The value is not limited to integers only, any number can be used. For example, "4" and "4.5" are both valid values for an integer type variable.

string

The string can be used where an alphanumeric value is needed, or where a compound value is needed.

message(string) : "Message when triggered"

mangle(string) : "mAngle (x y z)" : "0 0 0"

   •  The string type is fairly multipurpose...it can be used as a substitute for target_source, target_destination, and integer.

choices

The choices type allows you to setup a list of integer choices for a variable that can have a number of different values. Like flags, the choices type follows a fairly standard formula, but its nowhere near as strict.

variable_name(choices) : "Description" : default_value =

[

choice_value : "Description"

...

]

   •  The variations from the above will be variable_name, default_value, choice_value, and the descriptions.

   •  the default_value is typically the same as one of the choice_values, the default choice_value. it must be an integer value.

   •  the choice_value is an integer value, and should be accompanied by a description.

gravity(choices) : "Gravity Level" : 800 =

[

400 : "Low"

800 : "Normal"

1000 : "High"

]

color1

This variable type is mostly a time saving utility. When a color value is needed in the format of...

"{0.000 .. 0.100} {0.000 .. 0.100} {0.000 .. 0.100}"

...like "0.000 0.500 1.000" (which results in this color), it is much easier to calculate the color value when using this type, as it brings up a color dialog which allows you to pick the actual color.

color255

This is technically the same as the color1 variable type, except that the RGB values are in the range of {0 .. 255}.  For example, the above RGB value of "0.000 0.500 1.000" would be represented as "0 128 255".  A fourth number can be appended to this set of numbers, and the color picker will not modify this last value.  This is used for when the value of a variable holds both the RGB values, and a brightness value, in the case of lights.

Comments
You can place comments anywhere throughout the FGD file. They are useful for keeping track of where you've made changes to the FGD, and for things like contact and support information. Comments have no effect on how the FGD is used within Worldcraft. I like to follow the following format with comments...

At the top of the file...

//

// game / mod identification

// for what version of Worldcraft?

// date last updated?

//

// contact info for author

// support information (email, web sites, etc)

//

// credits

//

...and throughout the file...

// comments on entity usage

//

// mmdd (month / day) - revision information - this is useful for

// keeping track of what changes you've made and when you've

// made them

// 0421 - i did something today.

// 0422 - i changed something again.

   •  This is most useful when you are developing for a mod or porting another game's information into an FGD where you may have to make many changes before it is finished.

Related Topics:

   •  for more information on entities, see the Half-Life Entity Guide


Design and Compiling Tips

Introduction

There are a number of guidelines you can follow to achieve faster compile times and gameplay for your maps.  One of the most important things to be aware of while designing a map is its polygon counts.  A polygon is a shape made up of 3 or more edges.  The polygon count is somewhat equivalent to the number of brush faces.

The more polygons visible on-screen at one time, the more time it will take to render that scene, and the lower your framerate will be.  The currently accepted limits for polygon counts are 450 - 500 in areas that are likely to see heated combat, and 500 - 600 in other areas.  Sustained high (700+) polygon counts can cause slowdowns in gameplay and should generally be avoided.

As processors get faster and 3D hardware acceleration becomes increasingly common, these polygon limitations become increasingly less stringent.  Even so, there will always be upper limits that you should be aware of.

There are a number of other guidelines that should be observed:

   •  Seal the level - This is one of the most important rules.  Your level should have an inside and outside. There should be no holes, not even the tiniest crack, in the "outer walls" of your level.  If you do have a leak, it will cause problems during the compiling process, and the Half-Life engine will have trouble running it. This will produce slower game play and may cause some objects in your level to flash in and out of existence.

 Note: It may seem sensible to enclose the entire level in a large box, thereby "sealing" the entire level.  However, this is the worst possible way to seal a leak.  Since the true outside of the level will now be considered as inside the level, the bsp will contain roughly twice as much information as needed.

  If the compile tools report that there is a leak in your map, they will also produce a Pointfile which you can load into Worldcraft.  A thick red line will be drawn in the 2D views that will lead you to the source of your leak.  This option can be accessed from the Map Menu.  See the Troubleshooting in the Reference section for more information on fixing leaks in your level.

   •  Optimize - Optimizing a level will improve the compile times of your maps as well as potentially speed up gameplay.  The Half-Life engine provides you with a number of tools to optimize your map.

r_speeds (gl and software modes)  This is the first scale of measurement most people turn to. It provides a fairly good estimate of how fast your level will run on other people's machines.  At the game console, type "r_speeds 1" to turn on this feature, and "r_speeds 0" to turn it off.  As mentioned above, the polygon count is an important factor in the speed of gameplay in a map.  This is the command you will use to find that count.

When you examine the r_speeds output, you will get one of two things, depending what rendering mode you are in.

rendering: Software

output: n1 ms  n2 / n3 / n4 poly  n5 surfs

n1 - the number of milliseconds it took to complete a game cycle.  1000 ms / n0 gives you your frames per second.

n2 - the number of polygons the engine thinks it can see

n3 - the number of polygons that had to be drawn

n4 - the number of polygons that weren't drawn

n5 - the number of dynamically lit surfaces

rendering: Open GL

output: n1 fps  n2 ms  n3 wpoly  n4 epoly

n1 - framerate (frames per second)

n2 - the number of milliseconds it took to complete a game cycle

n3 - the number of world polygons.  this is any polygon that is not part of an entity, ie.: walls, floors, and ceilings

n4 - the number of entity polygons - doors, trains, platforms, etc

In either case, n3, the number of world-based polygons drawn, is the number you want to look at.

If these numbers indicate high polygon counts, you may have to go into the trouble areas and simplify some of the structures to cut down on the number of visible faces.

click above to see normal picture

r_drawflat (software mode only)   Although this doesn't give you any hard numbers, it does show you how your brushes have been cut up by the compile tools.  Instead of texturing the level, it is drawn flat-shaded, much like Worldcraft's flat-shaded 3D view, except each polygon face is drawn in a different color.  This can help you identify problem areas in your level where the polygon count may be reduced.  To use this feature, type "r_drawflat 1" in the game console to enable, and "r_drawflat 0" to disable.

click above to see r_draworder enabled

The above picture is of a relatively simple area,

yet the r_speeds approach 700.  Turning on the

r_draworder feature shows that the engine is

seeing more than you think.

r_draworder (software mode only)  This feature makes the engine render the game scene in reverse order (front to back).  This allows you to see exactly what the engine is seeing and lets you identify trouble areas where the engine is seeing more than you intended it to (thereby increasing the polygon count and decreasing the framerate).

When you have the trouble areas identified, you can go about optimizing them.  Generally this means lengthening (or adding a bend to) hallways, or setting up a solid (non-entity) piece of architecture to block the engine's view.

   •  Miscellaneous

"Too much of a good thing..." ...is a good thing no more.  Things like colored lights and beam effects are extremely cool, but excessive use tends to detract from the level as a whole.  When adding things to your level, ask yourself "What is the purpose of this? Why is it here?"

"Know your environment" This isn't strictly related to level design, but it will help you immeasurably if you know the game, the tools, and the editor inside out.  Taking the time to familiarize with all the game entities will ensure that you use everything to its full advantage. Since almost everything in Half-Life is new, it is strongly recommended that you read over the Half-Life Entity Guide to familiarize yourself with the new entities and their capabilities.

Related Topics:

   •  Half-Life Entity Guide


popup r_drawflat 0


popup draworder 1


popup Arch Tool Angles


The Arch Tool
Using the Arch Tool

The Arch tool allows you to make complicated curved arches or circular staircases simply and quickly.

There are a number of options you can modify here:

   •  Wall width:  this is the width of the individual pieces of the arch.  You can extend the arch walls outward by using a negative value here.

   •  Number of sides: enter a value between 3 and 100.

   •  Arc:  this is the number of degrees the arch will span.  You can enter a value here that is between 8 and 360.

   •  Start Angle:  this lets you adjust the angle of the pieces, as illustrated by this picture.

   •  Add Height:  this allows you to make a stepped arched (like a circular stairway), as illustrated by this picture.

Related Topics:

   •  Creating Solids

   •  the Block Tool


popup Arch Tool Height


Compiling and Running You Map

Cordoning

When you want to check your work by running your map in Half-Life, you have the option of compiling either the entire map or only a portion of it.  Using the cordon tools on the MapOperations toolbar, you can cordon off a small section of your level for compiling. Compiling can be time consuming: using the cordon tools can be extremely useful when you are working on a large level and want to look at changes made in only a small area.

 Toggle Cordon State/Edit Cordon Bounds

These buttons allow you to "cordon off" an area of your map.  When the cordon state is toggled on, a thick red line will appear around that area.  When you compile, only the inside of that red area will be compiled, and a box will be placed around the area to seal leaks.

Note: Be sure to place a temporary player start within the bounds of the cordoned area before you test compile that section.

Compiling In Worldcraft

Worldcraft offers two compiling modes: Normal and Expert. You can tailor the amount of control you have over the compile processes to suit your skill level.

Normal Compile

With the Normal Compile mode, compiling your level is as simple as selecting the appropriate options and pressing OK.  Saving your map and compiling are all handled internally, and Worldcraft will even load Half-Life with your map if you choose.

The text in the Additional Game Parameters text box will be appended to the game execution command, allowing you to feed special commands to the engine.  Three of the most useful parameters for level developers are:

-console - this parameter activates the console while running Half-Life.  A button labeled "console" will appear in the upper left-hand corner of the game main menu.  The console can also be accessed (by default) by pressing the tilde key (~).

-toconsole - this parameter bypasses the launcher menu in Half-Life and starts the game at the console.  Use it in combination with the -console parameter to go back and forth between the console and game main menu.

-dev - this parameter allows you to access special console variables such as cheat and debugging commands (like nodegraph and pointfile commands).

A complete list of console commands can be found on the web at The Forge.

Expert Compile

Expert Compile mode gives you complete control over the compile process.  If you're working with mods or anything out of the ordinary, this compile mode will make your life easier.

Information on both compile modes can be found in the Compile Dialogs section.

Manual (Batch) Compiling

Sometimes it may be necessary or more convenient to compile your level outside of Worldcraft, either at a command prompt or from a batch file.  The following is the standard format used for a batch compiler.

copy \<mapdir>\<mapname>.map \<bspdir>\<mapname>.map

cd\<bspdir>

QCSG <parameters> <mapname>

QBSP2 <parameters> <mapname>

VIS <parameters> <mapname>

QRAD <parameters> <mapname>

Note: When compiling a level outside of Worldcraft, you must first save the .MAP file somewhere.  The compile tools cannot read Worldcraft's default proprietary map format (.RMF).  This can be done either by using the File->Save As command, or the File->Export to .MAP command.

Running The Game

Once the level is compiled, you'll probably want to run it in Half-Life to see what it looks like.  This is quite easy.  You have two options.  At a DOS prompt, you can type...

hl +map <mapname>

...and Half-Life will load and immediately take you to your map.  Alternatively, you can type...

hl -console

...and Half-Life will start on the menu screen, with a small Console button also available.  Clicking on this button will take you to the game console where you can type...

map <mapname>

...and the engine will proceed to load the level.

Related Topics:

   •  Troubleshooting

   •  Compile Dialogs


g. Adding Sounds
Tutorial: Adding Sounds (tut6.rmf)

last / next

Sounds like fun...

Sound is another important aspect of a level.  If you do not add any sounds, the only thing you'll hear in your level is your own footsteps and weapon sounds  Let's add some other sounds now.  The computer and pipes are candidates for sounds.

To give an object a sound, you need to place an ambient_generic entity near it. The only thing you need to do in the entity properties is specify which .WAV file to play.

1.  Select the Entity tool from the MapTools toolbar.

2.  From the New Objects dialog, select ambient_generic from the Objects list.

3.  Place an ambient_generic entity in front of the computer.

4.  With the entity still selected, press Alt-Enter to bring up the Object Properties dialog.  The first field, "Path/filename.wav of WAV" is the only thing you have to worry about for now.  Use "Ambience/computalk1.wav" (without the quotes).

Note: When entering the path/filename for the sound file, the value is case sensitive.  In the above example, "ambience/Computalk1.wav" would not work.

This .WAV file creates a sound that will be heard near the computers and will play constantly.  Now, we'll do something for the pipe.  To make it a bit more interesting, we'll activated this sound with the rotating wheel button on the pipe.

1.  Follow the steps listed above to place an entity near the pipe.  For the "Path/filename.wav of WAV" value, use "Ambience/flameburst1.wav"

2.  Give the ambient_generic's Name field a value of "burst".

3.  In the Flags section of the Object Properties dialog, enable the Start Silent and Is NOT Looped options.

4.  Select the rotating wheel button and access its Object Properties.

5.  In the Targeted Object field, enter a value of "burst".

Now, when the wheel button on the pipe is activated, the flameburst1.wav sound will play.

Sounds and the Environment

Half-Life's environments effect the sounds you hear, just like in the real world. The engine creates some of this variability automatically, determining footstep and weapon ricochet sounds by the material type of the textures used.  However, this still leaves room for additional sound manipulation.  Using DSP sound, you can control how all sounds (including monsters sounds and other .WAV files) are perceived by the player. For instance, the same sound should sound different within a large silo, a room filled with water, and a metal ventilation duct.

Sounding Off

DSP sound is used by placing env_sound entities in your map.

The Radius determines how far away from the entity sounds will be triggered.  Room Type defines how the sound will be processed.  You have a number of options, ranging from Metal, Tunnel, Chamber, Water, Concrete, and many more.  Let's throw some of this in our example level.

1.  Select the Entity tool from the MapTools toolbar.

2.  In the center of each room, place an env_sound entity.

3.  The default radius of 128 units is fine for this example.  For room type, select whatever you'd like.  For the example map, I've selected Small Concrete and Water 3.  Ideally, you'd like to specify something that fits the environment, but this is just an example.

4.  Place a crowbar (the weapon_crowbar entity) somewhere in the example map so you can make some noise with it and listen to the results.

Note:  You will get better results if the different env_sound entities in your level are not placed within "sight" of each other. For instance, place the room env_sound entity around the corner from the hallway env_sound entity.

That Sounds Like A Buncha....

Compile and run you map.  Pick up the crowbar and start banging things with it.  You'll notice that the sounds it makes are quite different when you go from one room to the next.

In the next tutorial, we'll discuss how to add monsters to your level, and how to make use of the AI.

Related Topics:

   •  Creating Entities


Hot-key Reference

Tools

Shift+S - Pointer Tool

Shift+G - Magnify Tool

Shift+C - Camera Tool

Shift+E - Entity Tool

Shift+B - Block Tool

Shift+A - Texture App Tool

Shift+D - Decal Tool

Shift+X - Clipping Tool

Shift+V - Morph Tool

Shift+P - Path Tool

Clipboard/Selection

Ctrl+C - copy objects to clipboard (also ctrl+insert)

Ctrl+V - paste objects from clipboard (also shift+insert)

Ctrl+X - cut objects to clipboard (also shift+del)

Ctrl+E - center on selection (vertex/object) in all views

Shift+Q - clear selections

PgUp - previous selection in "hit" list

PgDn - next selection in "hit" list

Grid

[ - grid lower

] - grid higher

Shift+R - toggle grid on/off

Shift+W - toggle snap to grid

Grouping

Ctrl+G - group objects

Ctrl+U - ungroup objects

Carving/Hollowing

Ctrl+Shift+C - carve

Ctrl+H - hollow

Creating Objects

Enter - create object drawn with block/entity tool

Alt+Shift+C - insert original prefab

Ctrl+R - create prefab with selected objects

Ctrl+T - create entity with selected objects; to add objects to an existing entity, select it and the objects and hit Ctrl+T (you will be prompted)

Other Object Operations

Ctrl+B - snap selected objects to grid (based on bounding box)

Alt+Enter - selected object's properties

File Stuff

Ctrl+N - new file

Ctrl+O - open file

Ctrl+S - save file

Miscellaneous

Alt+B - export again

Ctrl+A - auto-size 4 views to center

Shift - (while in Texture Application mode) select entire object

Shift+L - texture lock

Shift+Z - maximize/restore view

Ctrl+M - transform dialog

Alt+P - check map for errors

F9 - run map

Escape - abort current tool/mouse operation (drag/drop)

Undo/Redo

Ctrl+Z - undo

Ctrl+Y - redo

2D Views

Ctrl+I - flip vertical

Cltr+L - flip horizontal

Tab - switch view types (top/side/front)

+/- - zoom in/out (hold Ctrl to synchronize all 2D views)

1 to 9 - preset zoom levels

Space - hold space and LMB to drag view

Alt - disable snap to grid while dragging with the mouse

Morph Tool

Ctrl+F - split faces (vertex manipulation)

Ctrl-E - vertex scaling

Select Tool

Ctrl - hold Ctrl and click to keep current selections

Shift - hold Shift when rotating to constrain rotation to 15 degrees; hold Shift when moving an object to create a copy (clone) of that object

(drag) - hold LMB and drag to select with a box; press Enter to select objects hitting the box, or press Shift+Enter to select objects only entirely within the box.

Camera Tool

Shift - create a new camera by holding Shift and dragging with the LMB.

PgUp - cycle to the previous camera position

PgDn - cycle to the next camera position

Delete - delete the current camera position

Clipper Tool

Enter - perform clip

Ctrl - hold Ctrl and drag with the LMB to move both handles of the clipper

Shift - hold Shift and drag with the LMB to create a new clip plane without performing the previous clip.


User's Guide Overview

Ready to jump into the exciting world of level editing?  You've come to the right place.  This User's Guide is designed to familiarize you with Worldcraft basics.  It will introduce you to the essential elements that go into every level, and help you understand how all the pieces fit together.  Once you're familiar with level editing concepts, you may want to try your hand at the Tutorial, which walks you through the individual steps needed to build your own first level.

If you get confused by a term, or if you're just looking to brush up on individual Worldcraft features, use the Reference section.  Terms are hyperlinked throughout all three sections of the Help file, so you can easily find more information on your topic. The Reference section also contains a Troubleshooting guide:  if you experience a problem and are not sure how to solve it, check Troubleshooting for important tips.  Have fun!

General

Introduction to Editing

The Worldcraft Interface

Working with Solids

Creating Solids

Using the Arch Tool

Texturing Solids

   •  Reshaping Solids

Vertex Manipulation

Clip Planes

Carving

Working with Entities

Creating Entities

Entity Properties

Interacting with Entities

Advanced

Grouping and Visgrouping

Creating Prefab Libraries

Design and Compiling Tips

Compiling and Running Your level

Related Topics:

   •  Troubleshooting


Troubleshooting

If you're having trouble with your level, check the answers to these commonly asked questions.

Leaks

   •  Help! QBSP2 tells me I have a leak in my level!

   •  How do I find and fix a leak (hole) in my level?

   •  The compiler says I have a leak, but there are no holes in my level...what's going on?!

Design

   •  I think I made an invalid brush!!

   •  I want to make big areas!!

   •  I looked in my entity list, and there are no brush based entities!?

Compiling

   •  Are there any special parameters for QCSG?

   •  Are there any special parameters for QBSP2?

   •  Are there any special parameters for VIS?

   •  Are there any special parameters for QRAD?

   •  What order am I supposed to use the compile tools in?

   •  QRAD complains that it can't load a texlight file!

   •  Argh, it takes forever to compile this level!

Game

   •  My level has areas grayed out or is missing brushes!

   •  Mod_LoadBrushModel: maps/map.bsp has wrong version number??

Miscellaneous

   •  When all else fails, is Worldcraft setup correct?

Related Topics:

   •  Introduction to Editing

   •  Compiling and Running Your Level


popup Leaks #1

Finding Leaks

If QBSP2 reports a leak, then VIS will not run. QRAD will light the level, but the light will not bounce, so shadowed areas will be black.  Sometimes, if you haven't been paying attention to your compile messages, this really dark lighting is your first clue that something went wrong. Bad framerate, "short xxx surfaces" error messages or func_doors and func_walls flickering in and out of visibility will be the other clues. This is after the map is loaded in the engine, of course.

QBSP2 will have generated a file called levelname.pts, in the same directory as the map. With the map loaded in the game, type "pointfile" at the console to load the pointfile into the map.  There are two causes for leaks: a gap in your brushwork that opens into empty space, or an entity sitting in empty space, outside the bounds of the level.


popup Leaks #2

Finding Holes in Your Level

Load the map in the engine by either typing "hl +map levelname" at the command prompt, or by bringing the console down after the level is loaded and typing "map levelname." (To enable cheats within the engine that allow you to debug your map, an additional command line parameter must be used, "+sv_cheats 1".  Your command line argument for launching Half-Life to debug your map should therefore be, at a minimum, "hl -console +sv_cheats 1.)

When the map is loaded in the engine, you bring down the console and type "pointfile". It will tell you that it loaded the pointfile and read x number of points. The default engine limit is 2k points, which may not be enough to trace a line to the leak in your map. If this is the case, start Half-Life at the command prompt with "hl -particles 10000" (or some higher number) to allow the engine to display more particles, and thus trace a longer line to help you find your leak.

When you've loaded the pointfile, type "noclip" to allow you to walk through walls and "r_fullbright 1" to make the map bright so you can see everything. If there are monsters placed in the level, typing 'god' and 'notarget' at the console make debugging easier as well.  The former causes monsters not to become hostile to your presence, and the latter makes you immune to damage of any sort. Then dismiss the console.

The pointfile will be represented by a line of dots that grades from white to black over and over again. If you don't see this line right away, point yourself up or down and "walk" outside the level. Look at the level from the outside, and see if you see the line from there. Walk around looking for it. If you can't see it from close up, then back away from the level, far enough that the polygons start to disappear because there are too many of them visible. The particles will not disappear, and you may find them this way.

Once you find the line, follow it. It bounces all over the place, goes in screwy directions, both inside and outside the level. At some point, it will pass through a hole in the walls of your level. There's your leak.


popup Leaks #3

Finding an Entity Outside Your Map

A less common cause of leaks is an entity that was placed outside your map (in the void).  Find the entity in your map. Delete it, or move it inside the world.  Recompile.

In addition, be sure that none of your exterior walls are brush entities like func_walls or func_buttons.  Brush entities are invisible to VIS, and brush entities that touch the vacuum outside the map are treated like holes in the map.


popup Invalid Brush

Invalid Brush

Invalid (concave) brushes are easy to create, particularly using vertex manipulation. If you have an invalid brush, try using face splitting; by creating more faces, you may be able create a valid (convex) brush.

 If you are not sure if a solid is legal, draw a clipping plane to the side of the brush; this will cause Worldcraft to evaluate the solid.  If it is not a legal solid, Worldcraft will automatically move whatever vertices it deems necessary to make the brush legal. Drawing a clip plane that doesn't intersect with the brush, and then accepting that "clip" will also force a correction on to the brush. You can also visually determine the legality of a brush by selecting the brush, going into vertex mode, and then sighting along the various edges of the brush, and across faces. A careful observer should be able to determine which faces are illegal.


popup Compile Order

Compile Tool Order

The compile tools must be run in the following order: QCSG, QBSP2, VIS, and QRAD.  Each tool creates support files which the next tool will use.


popup No Texlight File

QRAD: can't load texlight file

This happens when you compile a map anywhere but in the default Half-Life maps directory.  This can be easily resolved by doing one of the following things.

You can specify the "-proj" parameter, followed by the location of your Half-Life directory.  For example, if your Half-Life directory was in d:\games\halflife, the command line for QRAD would look like this:

>QRAD -proj d:\games\halflife mapname

Alternatively, you could set  the QPROJECT environment variable to point at your Half-Life directory by typing:

>set qproject=d:\games\halflife

When you want to use QRAD, all you need to type is:

>QRAD mapname

This should only be applicable to when you're using a batch file to compile your maps, rather than compiling from within Worldcraft.


popup QCSG Parameters

Important QCSG parameters

-onlyents - This allows you to add or modify point-based entities to an already compiled map.  This is extremely useful if the map is complete and you are adding or tweaking monster and item placement.  Rather than wait to recompile the level, you just need to run QCSG with the "-onlyents" parameter, and it will quickly put the new entities into the BSP file.

It is imperative that you do not run QBSP2 or VIS on the level if you use the above parameter.  QBSP2 will completely rewrite the .bsp, removing all previous VIS info.  If, for example, you use -onlyents to change the values of a light, QRAD is the only other tool you should use, otherwise a full compile will be required.


popup QBSP2 Parameters

Important QBSP2 parameters

-leakonly - This lets you run a very quick leak test on your level.  Doing this often ensures you won't have to backtrack through hours and hours of work to find a leak once you're ready to do a full compile.


popup VIS Parameters

Important VIS parameters

-fast - This makes VIS run quickly, but much less efficiently. This parameter should only be used for testing purposes, never for the final compile.


popup QRAD Parameters

Important QRAD parameters

-bounce n - This controls the number of times a light will bounce.

-chop n - This parameter allows you to increase or decrease the size of the light patches, which results in an increase or decrease in the lighting quality and processing time.

-extra - This makes QRAD's lighting process more intensive, providing higher quality lighting but also increasing the processing time.

-smooth n - Specify -smooth followed by an angle, and QRAD will smooth the lighting around surfaces that meet at or under this angle.  This allows for the illusion of smooth curved surfaces while using blocky polygons.

Tip: When doing quick compiles to test levels, specifying "-bounce 1" and "-chop 1024" will usually speed up your compile time a great deal.


popup Compile Times

Shortening Compile Times

Compiling a level can be very time consuming.  When you are compiling in order to test only a small portion of a level, remember that it's is not necessary to compile the whole level.  Using the Cordon tool on the MapOperations toolbar, you can compile only a small section of the map.


popup Configuring Worldcraft

Configuring Worldcraft

This should be done the first time you load Worldcraft.  It is not done for you.  Properly configuring Worldcraft is essential for the program to function correctly.

The first thing to setup is the Game Configuration.  Check and double-check that everything here is correct.  This is the most important part.  If you plan to use Worldcraft to compile your maps, the next thing you should setup is the Build Programs.  This lets you specify what compile tools to use and where to place the compiled level.  Next, you will want to add textures.  The textures are stored in the halflife/Valve directory.  You can move them, but be aware that having spaces in the path of the texture may lead to problems with the compile tools.

You will also want to configure the 2D View and 3D View options to your liking, but the above options are the essentials which must be done.


popup Brush Based Entities

Brush based entities

To make a brush based entity, you mst first make the brush.  Once that is done, select it and and press the ToEntity button on the New Object dialog.  You will be given a list of brush based entities to choose from.


popup Large Areas

Large Areas

Large areas can be made with Half-Life but, as always, you must remain sensitive to size restrictions: polygon counts must be kept under control.  For tips on reducing polygon counts, refer to Design and Compiling Tips.


popup Wrong BSP Version

Mod_LoadBrushModel: maps/map.bsp has wrong version number

This usually means you're using the wrong compile tools, or you're trying to load a level that wasn't made for Half-Life.  When you compile your level, be sure to use QCSG, QBSP2, VIS, and QRAD.

Quake2 uses QBSP3, QVIS3, and QRAD3.  Quake uses QBSP, VIS, adn LIGHT.  Don't use any of these for Half-Life.


popup Gray Areas

Gray outs / Missing brushes

There is a limit to the number of polygons the game engine will display at one time.  When this limit is passed, the engine stops drawing brushes, leading to gray areas (where you can see into the void) or brushes (commonly brush entities) that go in and out of view.

Gray areas can also be the result of a leak in your level.  If this is the case, VIS to be unable to run, and your map will not be optimized.

For tips on keeping your polys under control, refer to Design and Compiling Tips.