We continue with Chapter 5 of the text (page 105) to get back into using 3DS Max. The objective stated on page 105 is to create an urban environment that can be customized for most games in this kind of setting.
The author begins with a list of categories of objects that you need to create for this project:
The author reviews three approaches to creating an environment:
On page 109, the author discusses blocking the game level you are designing. He means this in the sense of blocking a theatrical scene: establishing what must go where on our stage. He also means that he wants to throw up the basic structures that the level requires to test them before you dress them in textures. To set up for this, he tells you to start with the modular approach above, establishing a grid for the streets, buildings, and other objects in the level.
To understand the grid system the author proposes, consider the illustration on page 112. He shows us a cube that is 512 units on each side, as seen in his 3D modeling program (on the left side of the illustration) and in his 3D game editor (on the right). He is also showing us that he made a 512 by 512 2D art asset to be mapped onto the cube (indicated in the middle of the illustration). His point is that we should be working with the same units in all our applications from the start, so we do not have objects that need to be scaled, and art that becomes deformed and unusable. This becomes clearer if you skip ahead to the chart at the top of page 118. Here, the author has assigned consistent measurements to the game grid, based on powers of 2:
This scale table is more useful to consider before considering the ideas on pages 114 and 115. The author tells us that we must determine the distances that apply to character movement, to the space taken up in different poses, to the effective range of weapons (if any), and to the size of props and stage dressing in a scene. It will be easier to assign the real world size to our game events and objects if we already know the equivalent game grid units to use in construction.
His list of common measurements to know (some of which are illustrated on page 117):
The author advises us that, contrary to ideas just presented, you will want to create some things that are not to real world scale. Doorways, for example, are usually made taller than in real life. In the illustration on page 117, the character is shown as about 6 feet tall, but the doorway next to her may be eight and a half feet tall. This is often done in games because it looks better. You can learn a lot from looking at existing games.
Exercise 3: Measurements
The author starts warming up to using his 3D modeling tool in the following pages. Stay with him, as he will give you lots to do shortly. He provides dimensions for some of his street modules on page 118. The street module shown on page 119 is actually one side of a city street, with a sidewalk attached. Note that he uses a mesh that is a foot thick at the street portion, and two feet thick at the sidewalk portion. The thickness for the street is so that he can put holes in the street as needed. The height of the sidewalk is another exaggeration, which he believes will look good in the game. The overall length and width of the street module are 4096 and 2048 grid units.
This begs a question: how do you set up the grid in 3DS Max to match his powers of 2 scheme? (The information below was found at the site linked in the question.)
As the author quoted above states, you should save this file as a template, a scene that you open each time you want to work on objects that you will be using in Unreal Tournament. (Let's call it Unreal.max.) This will avoid the problem of overwriting your Max default file, which you are unlikely to be able to do in the Baker classroom/lab environment. The next thing to realize is that you should save with a new name as soon as you open your template scene, so you don't lose it.
Back to the text, why did Mr. Ahearn use a mesh for the street? Take a look at his discussion of making an intersection, illustrated on page 121. If it were not a mesh, he could not have moved the vertices and edges as shown in figure 5-11 to make a street module that ends in a street corner. Note that he has made the corner of the sidewalk rounded in this example. He could just as well have squared the corner of the sidewalk, as he did for the example on page 126. The square method may be easier to texture.
Exercise 4: The First Street Module
Exercise 5: A Street Module with a Corner
There are two ways you may use to create corners for your streets. Choose one.
If you use the method above, you will want to make a left and right corner, which can then be copied, moved, and rotated to create a street that is intersected by another street. (The crossing street will use street modules without the corner adaptation.) This makes three kinds of street modules you will need, so far. Why not four? The standard street module can be used on either side of a street by copying and rotating it.
If you use the method from the book, you will need only one kind of corner and one kind of street segment, but there will be more alignment work with more pieces.
Additional street modeling
In the illustration on page 122, the author copied just the polygons that would connect one street segment to another, and he pasted them to make a new 2D (so far) object. He then extruded those polygons to a distance of 2048, with 16 length segments. (He could have done this with 16 extrusions.) You will want to save this kind of simplified module (the fourth street module type) for future use. He then applied a bend modifier to the module to create a curve in the street. Think about how you would apply that modifier to make the matching lanes in another simplified street module.
For a couple of pages, the author ponders starting a UV map for the objects so far. He proposes making a UV map guide, as shown on page 123, to apply to objects in our environment. It serves a purpose in this chapter to show that a texture will be deformed if it is stretched, and should be made to tile effectively if it is to be tiled. The author notes that you will use planar mapping for street modules. He leaves this topic to continue modeling.
On page 124, the author turns to constructing models of buildings. He calls this section repeated buildings because he plans to make them modular (meshes) and variable, and will also vary their appearance with different textures. Our street segments fit within our grid, and they include sidewalks, so we can make our buildings fill grid squares adjacent to the streets. The author proposes making these buildings from meshes that are 4096 on a side, and slicing the meshes as needed to apply textures to make them look different. This makes a "building" as wide as the length of a street module. This is a bit hard to see on pages 126 and 127, because the grid units have been deformed to show perspective. The author explains that this building module may actually be shown as four buildings on a city block. We can differentiate the sub-structures by slicing the meshes and applying different textures. Lower parts of the meshes will represent the lower floors of the buildings, where the most detail will appear. In the street racing game, the upper parts of the buildings can have less detail with no loss to the player. The author notes that you will use box mapping for these objects. On page 128, there are suggested modeling details to provide variation from one building to another.
The author's next topic is landmarks. He uses this word to mean buildings that are different from all the others because of different structure, texture, or lighting. These are objects that we want to player to notice. On page 129, the author begins a tutorial for making a parking garage. Reference art for this structure is shown on page 130. Illustrations supporting this model continue through page 135.
Exercise 6: The Parking Structure
Exercise 7: Props
This assignment will continue for a couple of weeks, giving you a chance to create the other objects at the end of the chapter. Concentrate on the six objects above for this assignment.