Level Creation - Part 1


The following section provides more detailed information on creating Multiplayer levels and environments and includes tutorials and examples.  Topics covered in the tutorials include the creation of a level directory, creation of a reference frame, sealed world rules and explanation, the creation of a simple level, the creation of material and shader groups, the usage and application of materials and shaders, material and shader naming conventions, texture mapping, and miscellaneous and general tips and suggestions.


Getting Started


Before editing or creating content for Halo please make sure to follow the set up and update information found in the section Creating a Development Environment.

It is also recommended that the end user read through all the information found in the associated Reference Sections under General.

A completed version or example version of the level created in the following tutorial sections can be found under the "Halo\data\levels\test\tutorial_examples" directory.  The source and related materials have been provided as a reference to aid in the learning process.


Setting Up 3ds Max


Make sure that the Blitzkrieg exporter plug-in for 3ds Max is installed, for more information see the Halo Editing Kit Installation topic under the Creating a Development Environment section.

Each individual has their own style and settings that they prefer for 3ds Max the following are some suggestions and guidelines that may help with Halo editing. For additional information, please see the documentation that came with 3ds Max (associated manuals and in program User Reference under Help).

The following are some tips and pointers for setting up 3ds Max for Halo content editing, specifically game environment creation.

NOTE: All the setup suggestions were done using 3ds Max 5.1.

 

Auto Backup

It is HIGHLY recommended to enable the auto file backup features inherent in 3ds Max. This can save a lot of headaches and wasted time in lost work. To access the auto file backup features do the following:

1) Click on Customize and select Preferences
2) Click on the Files tab
3) On the bottom left click on the Enable check box under Auto Backup
4) Set the number of backup files and time intervals for the files to be backed up.
5) Hit OK

It is also highly recommended that work be saved and saved often and that alternative backups be made of all relevant content

 

Key Configuration

Specific key configurations are not going to be listed here, but suffice it to say, if 3ds Max is being used as a level design tool it would be most beneficial to bind commonly used commands and operations for quick access. Some of the more commonly used commands that may not be as easily accessible with the default key configuration include Move Mode, Rotate, Backface Cull Toggle, Maximize Viewport Toggle, Rotate View Mode, and Zoom Mode.

 

Configure Modifier Sets

Just as there are several commonly used commands and operations that are used when creating and editing Halo game levels, there are also very commonly used modifiers. These modifiers include Edit Mesh, UVW Map, Unwrap UVW, and STL Check (used for checking if the level is a sealed volume and\or for finding open edges).

 

Units Setup

1) Click on the menu option Customize and select Units Setup
2) Select Generic Units at the bottom
3) Hit OK

The example levels, content, and other numerical information (measurements for various Halo related statistics such as player dimensions) were done using the Generic Units settings.

 

View Port Configuration

1) Click on the menu option Customize and select View Port Configuration
2) Select the Layout Tab
3) Select the layout that suits you best, the example levels and tutorials use a 3 window layout with a 3d Perspective View at the top (Smooth and Highlight and Edge Faces turned on), Top Down View on the lower left and a Right\Left\Front view for the lower right window depending on the configuration of the level.
4) Hit OK


Creating a Level


The following sections contain various information and examples that form one large tutorial that will go through the creation of a simple box level that will be used to demonstrate the construction of a Halo multiplayer level.

 

Creation of a Level Directory

The level directory will contain all the raw data or source files used in the creation of the level (.max, .tif, .psd, .jms, etc...).

This level directory will have subdirectories. The main directory as well as the subdirectories are specifically used by the tools to compile the exported data formats into something that can be compiled into a .map cache file that is used to run the level in Halo.

The name of the source directory must match the name of the exported .jms file (as will be explained later).  The compiled data tags such as the .scenario and .scenario_structure_bsp tags that will exist in the tags directory will also share this name, as well as the .bitmap light map file once it is created by running the radiosity process on the level.

The level directory name MUST BE UNIQUE, unless it exists under a totally different directory structure.

As will be seen and demonstrated later, the level can pull shader tag information as well as other tag information from other tags that exist in other game level directories.

The first step is to create a level directory under the level directory structure tree under the data directory in Halo. This level will be called "tutorial".  Follow the steps below:

1) Under the Halo game directory (e.g. c:\Halo) create a directory called "data".
2) Under the new "data" directory create a directory called "levels".
3) Under the "levels" directory create a directory called "test". 
4) Finally, under the "test" directory create the level working directory called "tutorial".

The directory structure should now be as follows (if using the above example (e.g. c:\Halo)):  c:\Halo\data\levels\test\tutorial

Now that the level directory has been created, three subdirectories will need to be created that will contain the content source for the level.  As mentioned previously, the tools recognize this directory structure during the compilation process of the level and of the .map cache file so it must be properly setup.

Under the "tutorial" level directory add the following directories:

1) bitmaps (Using the previous example the directory structure would look like this: c:\Halo\data\levels\test\tutorial\bitmaps)
2) models  (Using the previous example the directory structure would look like this: c:\Halo\data\levels\test\tutorial\models)
3) scenery (Using the previous example the directory structure would look like this: c:\Halo\data\levels\test\tutorial\scenery)  

The bitmaps directory is where .tif image files will be placed that can be compiled into .bitmap data tag files.  The .tif image files in this directory can also be used for the displaying of the image on a surface in a level in 3ds Max (the .tif gets set as a Diffuse Map in the Sub-Material of a Multi/Sub-Object).

The models directory is where the source files for the level mesh will be saved and where the .jms file used by tool to compile a level BSP data tag will be put.

The scenery directory is where custom scenery model sub-directories and the associated resources will be placed.

This is the level directory structure used by Bungie to develop Halo and is the directory structure that Gearbox adopted in order to keep the source tree consistent.  It is also the directory structure that the tutorial and examples will use.

NOTE: As will be seen later, when the data tags are created a directory and associated tags will be created or modified that mirrors the directory structure under data except this directory structure will be found under the "tags" directory under the root directory of Halo.  In addition, when a .map cache file is created, the name of the cache file will be that of the main level directory structure used and will be found under the "maps" directory under the main or root Halo game directory.

 

Creation of a Reference Frame

A Halo level MUST have a reference frame.  The reference frame is used as a reference point for the placement of objects in the level.  Therefore, once the reference frame is placed and objects are placed in the level using Sapien, do not individually move the reference frame (or its associated polygons or vertices) or the objects will move or shift in the level.

The reference frame is very useful during the construction of a Halo level.  Any models or geometry that are not linked to the reference frame (the reference frame is considered the "parent") do not get exported when exporting out the .jms file using the Blitzkrieg plug in.  This can make testing and debugging the level very easy.  It also means that reference models (such as for players or vehicles) can be placed in the level and they will never get accidentally exported.

It is also important to note that there must also be valid geometry attached or linked to the reference frame or the Blitzkrieg exporter will not export the .jms file and will give an error dialog "There was no geometry to export". 

Additional information on the Reference Frame and other technical rules or guidelines can be found under the Technical Rules discussion topic under the General Overview section under b>Multiplayer Level Design.

 

A reference frame is very simple to create, the following steps and example images will demonstrate the creation of a reference frame.

The reference frame is basically a box.  It can be any size (larger is preferred to help with its selection and to make sure it does not get confused with other world geometry) and can even be a sphere, cone, cylinder or pyramid.  As long as it is an object that is an enclosed volume.

The reference frame should be created such that it does not interfere with editing and will not obscure parts of the level.  For the example, the reference frame will be created such that it exists outside of the "northern" border of the example level.


To create a reference frame do the following:

1) In 3ds Max select the Create tab and have Standard Primitives selected.

2) Under Object Type click on the Box button.

3) In any of the 3ds Max windows use the mouse to drag and create a Box. 

4) The dimensions for the Box can be manually set under Parameters.

5) Under Name and Color type in the name "frame" and select a distinctive color for the Reference Frame.

The Reference Frame can now be moved to its final position, in this case it was moved such that its coordinates are X: 0.0 Y: 1800.0 Z: 0.0  

The image to the right further explains the above procedures.

NOTE: The box or Reference Frame does not have to have a specific Material applied to it.  The application of Materials and use of the Material editor in 3ds Max will be discussed later in this section.


Click to Open Larger Image in New Window




 

Creation of a Simple Level

The following steps and example images will demonstrate the creation of a box that will serve as the tutorial level and will be utilized for all the subsequent tutorials.

When creating or starting out a level try and keep the level centered at the origin.  This can make the creation process much easier, such as when mirroring level geometry (such as team bases and other symmetric elements of the level).

The level must be a sealed.  The level must be a contiguous structure that forms a sealed volume, the following rules are referred to as the Sealed World Rules:
  • There must not be any open edges, the component parts or geometry of the level must match (edges and verts).  There are some exceptions to the rule which will be covered in later tutorials and examples in Level Creation - Part 2, but basically, anything that is solid (has to have collision with the player and vehicles) cannot have any open edges.

  • The normals of the faces used to create the level geometry must face towards the playable area of the level or section of the level.  The normals of the faces or polygons determine not just the face that will be rendered or seen by the player but also the surface to be used for collision and physics.

Additional information on the Reference Frame and Sealed World Rules and other technical rules or guidelines can be found under the Technical Rules discussion topic under the General Overview section under Multiplayer Level Design.



Creation of a simple box room:

1) In 3ds Max select the Create tab and have Standard Primitives selected.

2) Under Object Type click on the Box button.

3) In any of the 3ds Max windows use the mouse to drag and create a Box.

4) The dimensions for the Box can be manually set under Parameters. The dimensions for the box that will be used are Length: 3200.0 Width: 2400.0 Height: 1600.0

5) Under Name and Color type in the name "level" and select a distinctive color for the box.

The first image further explains the above procedures.

 

The following steps will make the box satisfy the Sealed World Rules and will link it to the frame, in effect making it a simple Halo level in terms of geometry.

6) Move the box to the origin of the world, X: 0.0 Y: 0.0 Z: 0.0.

7) Turn the box into an Editable Mesh. There are several ways to do this including the following. Select the box, select the Modify tab and using the Modifier List pull-down menu select Edit Mesh.

8) Flip all the normals for the box inwards, the interior of the box will be the playable area of the level. This can be done by doing the following:

a) Click on Edit Mesh in the Modifier Stack.

b) In Selection, select Face mode. Select all the faces for the box.

c) Under Surface Properties, click on Flip. All the faces for the box should now have their normals facing inwards.

The second image further explains the above procedures.

 

9) Link the box to the Reference Frame (frame). The following demonstrates one method of doing this.

a) Select the Create tab. Select the box (level).

b) Click on Select and Link.

c) Click on Select by Name.

d) In the Select Parent window, select the reference frame (frame).

e) Click on Link.

The third image further explains the above procedures.



 

10) To see if "level" is now linked to the Reference Frame "frame" do the following:

a) Click on Select Object.

b) Click Select by Name.

c) In the Select Objects window, make sure that the Display Subtree box is checked.

d) "level" should now appear linked under "frame".

The bottom image or last image further explains the above procedures.


Click to Open Larger Image in New Window


 

 



Click to Open Larger Image in New Window


 

 



Click to Open Larger Image in New Window


 

 



Click to Open Larger Image in New Window




 

Application of Materials

Before discussing and demonstrating materials and the application of materials to surfaces in the level, it is HIGHLY recommended that the Materials Overview section under the General Reference section be reviewed.  The information contained in the Material Naming Conventions and Rules as well as the names of Special Materials and special Shader Symbols of this section will be referenced in the following examples.

 

The following procedures and example images will demonstrate the creation of a Multi/Sub-Object material group and the creation, setup, and naming of the Sub-Materials under the Multi/Sub-Object material groups. 

The set up examples for Sub-Materials will include the linking of images that will be displayed in 3ds Max on the faces for the assigned material.  These images are not absolutely necessary and no information related to these images are exported to the .jms file which is used by Tool to compile the level data tags.  As previously mentioned, the Sub-Material name is important and is part of the data exported to the .jms file.  This is the name that Halo will reference when assigning a shader to a particular surface. 

The referenced image in the Sub-Material can be any image, but it is usually the base map or base image (in the form of a .bitmap) that is referenced by the shader data tag.  It is common for images to be used that are helpful in certain creation processes, such as displaying a grid texture to aid in the UVW Mapping process. 

Special Materials typically do not have images associated with them since they are primarily utility materials.  Typically, just a material color or Diffuse color is associated with these Special Materials.

Every face for the game level must have a material assigned to it (except for the Reference Frame as previously mentioned).


Creation of a Multi/Sub-Object material group:

1) In 3ds Max select the level.  Open the Material Editor.

2) Select the first Material Group.  This Material Group is currently set to a Standard Material.

3) Click on the Standard button to bring up the Material/Map Browser.

4) In the Material/Map Browser click on Multi/Sub-Object.

5) Click on OK.

The first image further explains the above procedures.

 



 

6) This Multi\Sub-Object is going to be called "tutorial terrain\sky".  Type this name into the Multi\Sub-Object description window. 

The name does not matter since it is not exported, the Multi\Sub-Objects are being used to organize and apply like groups of materials to objects being created for the level.  This will be demonstrated later in the tutorials and examples.

7) Now apply the Multi\Sub-Object to the level.  Since "level" is selected, click on Assign Material to Selection.  This Multi\Sub-Object has now been assigned to "level".  The Sub-Materials for this Multi\Sub-Object can now be applied to the object using the materials associated ID numbers.

8) Just for organization, the extra Sub-Materials were deleted by selecting the Sub-Material to delete and clicking on Delete until the desired number of Sub-Materials remained, in this case, 2 Sub-Materials.

 



 

The 2 Sub-Materials are now going to be named the names of the shaders which will be applied to the surfaces and appear in the game.

9) To name or label Sub-Material ID 1 do the following:

a) Click on the Sub-Material button to go from displaying the Multi/Sub-Object Basic Parameters window in the Material Editor to displaying the Shader Basic Parameters, Blinn Basic Parameters, Extended Parameters, SuperSampling, Maps, Dynamic Properties and Viewport Manager.

The second image further explains the above procedures.

 



b) Enter the name "+sky" into the name or label field.

 

c) Under Blinn Basic Parameters, double click on the Diffuse color setting. 

d) The Color Selector: Diffuse Color window will be available. Set a color to be displayed for this material.  In this case a light blue was chosen. 

e) Click on Close.  The color chosen should now appear as the Diffuse color setting.

The third image further explains the above procedures.

 



 

10) In the Material Editor, enable the display of the material by clicking on the Show Map in Viewport button.

11) To return to the Multi/Sub-Object Basic Parameters click on the Go to Parent button.

The fourth image further explains the above procedures.

 



 

12) To name or label Sub-Material ID 2 do the following:

Click on the Sub-Material button to go from displaying the Multi/Sub-Object Basic Parameters window in the Material Editor to displaying the Shader Basic Parameters, Blinn Basic Parameters, Extended Parameters, SuperSampling, Maps, Dynamic Properties and Viewport Manager.

Enter the name "example_tutorial_ground" into the name or label field.

13)  To display a texture or image for this material when applied to a surface do the following:

a) Under Blinn Basic Parameters, click on the small box to the right of the Diffuse color setting.  This will display the Material/Map Browser.

b) Click on Bitmap.

c) Click on OK and the Select Bitmap Image File window will now be displayed.

The fifth image further explains the above procedures.

 



 

14) To select an image to display for the material do the following:

a) In the Select Bitmap Image File go to the bitmaps directory under Halo\data\levels\test\tutorial_examples.

This directory SHOULD exist if the Halo Editing Kit was installed and set up properly following the instructions under Halo Editing Kit Installation in the Creating a Development Environmentsection under General Reference.

The files in the tutorial_examples level represent the final result of the tutorial and example process and is provided as a reference to aid in the learning process.

b) Under the bitmaps directory there should be several .tif image files.  Select the example_tutorial_ground.tif file.

As was mentioned previously, the resources under the tutorial_examples directory represent the end result of all the examples and tutorials contained within the Halo PC Editing Reference. 

The Halo End User Editing Kit provides many resources including a wide range of tags as well as image resources (.tif files) that can be used in the creation of Halo multiplayer levels. 

The files provided also exist as examples and learning aids for those wishing to create their own custom game resources whose creation and modification may not be covered currently in the Halo PC Editing Reference.

For now, the completed or provided example resources will be used for the following examples for the sake of simplicity.

c) Click on Open.

The sixth image further explains the above procedures.

 



 

To return to the previous options in the Material Editor window click on the Go to Parent button.

15) In the Material Editor, enable the display of the material by clicking on the Show Map in Viewport button.

16) To return to the Multi/Sub-Object Basic Parameters click on the Go to Parent button.

The seventh image further explains the above procedures.

 



 

17) The Sub-Materials should be displayed on the Material Sample.

18) Close the Material Editor window.

The eighth image or last image further explains the above procedures.


Click to Open Larger Image in New Window


 

 



 

 



Click to Open Larger Image in New Window


 

 



 

 



Click to Open Larger Image in New Window


 

 



 

 



Click to Open Larger Image in New Window


 

 



 

 



Click to Open Larger Image in New Window


 

 



 

 



Click to Open Larger Image in New Window


 

 



 

 



Click to Open Larger Image in New Window


 

 



 

 



Click to Open Larger Image in New Window


The following procedures and example images will demonstrate the application of Multi/Sub-Object Sub-Materials to surfaces in the level.



Application of Multi/Sub-Object Sub-Materials to the surfaces that compose a game environment model:

1) In 3ds Max select the level. 

2) Select Modify.

3) Under Selection, select Face mode.

4) Select the 10 faces that compose the top and sides of the box which is currently the level.

5) Make sure all the Smoothing Groups are cleared for the selected faces. Under Smoothing Groups click on Clear All. The assigning of smoothing groups will be covered later in the tutorials under this section.

6)  The tutorial terrain\sky Multi/Sub-Object material is already applied to the object "level".  To make the selected 10 faces display a Halo sky in game apply Sub-Material ID 1 which is +sky.

There are many ways to apply a material to a face including the following:

Apply the material by entering "1" in the Material ID field under Surface Properties.

The first image further explains the above procedures.  



The following procedures will apply the example_tutorial_ground to the remaining faces and map the material to these faces.

7) Select the 2 faces that compose the bottom or floor of the box which is currently the level.

8) Make sure all the Smoothing Groups are cleared for the selected faces. Under Smoothing Groups click on Clear All. The assigning of smoothing groups will be covered later in the tutorials under this section.

9) Apply the Sub-Material example_tutorial_ground to the selected 2 faces.

There are many ways to apply a material to a face including the following:

Apply the material by entering "2" in the Material ID field under Surface Properties.

The second image or last image further explains the above procedures.


Click to Open Larger Image in New Window


 

 



 

 



Click to Open Larger Image in New Window




 

Texture Mapping

With materials having been created and assigned to the faces that compose the level, certain faces must have mapping coordinates created for them.  These mapping coordinates or "texture mapping" will allow the base maps or textures that are in the form of a .bitmap and are referenced in the shader data tag to properly display for the specific faces.

Currently for the tutorial level, the only faces that need mapping coordinates are the 2 faces that compose the floor of the level. The other faces have the +sky special material applied to them which will tell Halo to render a sky model, these faces therefore do not need mapping coordinates.

 

The following procedures and example images will demonstrate using UVW Mapping to apply texture or mapping coordinates to the 2 faces that compose the floor of the level.


Application of texture coordinates to the selected faces:

1) In 3ds Max select the level. 

2) Select Modify.

3) Under Selection, select Face mode.

4) Select the 2 faces that compose the bottom or floor of the box which is currently the level (its easier to select these faces when Ignore Backfacing is selected under Selection, see the 3ds Max User Reference under Help for more information).

5) Using the Modifier List pull-down menu select UVW Map.

The first image further explains the above procedures.  



The following procedure is just basic planar projection mapping. 

6) Select the Top view window.

7) In the Alignment area under Parameters, click View Align (to use the currently selected Top view for alignment).

8) In the Alignment area under Parameters, click Fit to stretch or fit the texture to the selected faces.

The texture image associated with the example_tutorial_ground Sub-Material should now appear correctly mapped to the floor or ground of the level.  

The second image or last image further explains the above procedures.


Click to Open Larger Image in New Window


 

 



 

 



Click to Open Larger Image in New Window




 

Assigning Smoothing Groups

Smoothing group information is another piece of data that is actually exported from 3ds Max to the .jms file that is used by Tool to create the level geometry so that it can be run in Halo.

Smoothing groups do not have to be applied but can greatly help in smoothing out the lighting on faces in the level. A good example is a 6-sided half cylinder used to create a pipe in a level. Without a smoothing group applied to all the faces that compose the sides, the cylinder will look faceted. With a smoothing group applied across these faces, the pipe will look much smoother and look to be made with many more polygons than it actually is. 

Smoothing groups can also help fix certain lighting errors or anomalies that occur across faces.

It is important to note that the improper use of smoothing groups can cause as many visual effects and lighting anomalies on surfaces as it helps fix.  Here are some simple guidelines for smoothing group usage:

1) Be careful over how much surface area a smoothing group is applied to.  If visual anomalies occur it may be beneficial to split up the portions of the large geometry pieces to use different smoothing groups.

2) Try to keep smoothing groups unique.  If there are several structures located throughout the level, each one should most likely have its own sets of smoothing groups applied to the faces that compose those structures.

3) Experiment with the smoothing groups for the best effects.  Every level or surface tends to be unique depending on the lighting and construction.

Currently for the tutorial level, the only faces that need to have smoothing groups applied are the 2 faces that compose the floor of the level. The other faces have the +sky special material applied to them which will tell Halo to render a sky model, these faces therefore do not need to have a smoothing group applied.  Applying a smoothing group to the faces with the +sky material in 3ds Max to make things more viewable will not cause any problems in Halo.

 

The following procedures and example images will demonstrate the application of smoothing groups to the 2 faces that compose the floor of the level.


Application of smoothing groups to the selected faces:

1) In 3ds Max select the level. 

2) Select Modify.

3) The level object needs to be made an editable mesh again.  Using the Modifier List pull-down menu select Edit Mesh.

4) Highlight Edit Mesh in the Modifier Stack.

5) Under Selection, select Face mode

6) Select the 2 faces that compose the bottom or floor of the box which is currently the level (its easier to select these faces when Ignore Backfacing is selected under Selection, see the 3ds Max User Reference under Help for more information).

7) Click on the button marked "2" in the Smoothing Groups section under Surface Properties.

The ground for the level now has Smoothing Group 2 applied to it.

The image to the right further demonstrate the above procedures.


Click to Open Larger Image in New Window




 

Saving the Level

At this point, the level should be saved. To save the level do the following: 1) Go to File.

2) Click on Save As.

3) In the Save File As dialog window go to the Halo\data\levels\test\tutorial\models directory (this directory was created in the above section Creating a Level Directory) and save the file as "tutorial.max" by entering this name in the File name: field. 

4) Click on Save.

The level is now saved.  This level will be used in the tutorial and example areas of the next sections.  It may also be a good idea to make a backup of this file.


Conclusion of Level Creation - Part 1


At this point, the level could be successfully exported and compiled for use in the game. However, there are many other things that will be demonstrated that are useful in the creation of a Halo level. 

The next section Level Creation - Part 2 will demonstrate some more aspects of Halo level design.  If the user has successfully completed the above tutorials it is highly recommended that they proceed to the next section Level Creation - Part 2.

For advanced users, or those that are curious or anxious to compile a level and get it running in Halo immediately, they may wish to skip ahead to the section Level Exporting followed by Level Compilation. Please note that the section Level Exporting and the subsequent sections will assume that the end user has completed Level Creation - Part 2 so the tutorials and example images will reflect the additions made to the "tutorial.max" file.