Thank you to Michael Bowling, Michael Johanson, and Marc Lanctot for contributions to this guide.
Additionally, this would not have been possible without the generous support of Prof. Joan Bruna and his class at NYU, The Mathematics of Deep Learning. Special thanks to him, as well as Martin Arjovsky, my colleague in leading this recitation, and my fellow students Ojas Deshpande, Anant Gupta, Xintian Han, Sanyam Kapoor, Chen Li, Yixiang Luo, Chirag Maheshwari, Zsolt Pajor-Gyulai, Roberta Raileanu, Ryan Saxe, and Liang Zhuo.
Along with Libratus, DeepStack is one of two approaches to solving No-Limit Texas Hold-em that debuted coincidentally. This game was notoriously difficult to solve as it has just as large a branching factor as Go, but additionally is a game of imperfect information.
The main idea behind both DeepStack and Libratus is to use Counterfactual Regret Minimization (CFR) to find a mixed strategy that approximates a Nash Equilibrium strategy. CFR’s convergence properties guarantee that we will yield such a strategy and the closer we are to it, the better our outcome will be. They differ in their implementation. In particular, DeepStack uses deep neural networks to approximate the counterfactual value of each hand at specific points in the game. While still being mathematically tight, this lets it cut short the necessary computation to reach convergence.
In this curriculum, you will explore the study of games with a tour through game theory and counterfactual regret minimization while building up the requisite understanding to tackle DeepStack. Along the way, you will learn all of the necessary topics, including what is the branching factor, all about Nash Equilibria, and CFR.
Motivation: Most of Game Theory, as well as the particular techniques used in DeepStack and Libratus, is built on the framework of Normal Form Games. These are game descriptions and are familiarly represented as a matrix, a famous example being the Prisoner’s Dilemma. In this section, we cover the basics of Normal Form Games. In addition, we go over the rules of Poker and why it had proved so difficult to solve.
Required Reading:
Optional Reading:
Questions:
Use the definition of a Nash Equilibrium along with the fact that \(\mu_{i}(\sigma_{i}, \sigma_{-i}) + \mu_{-i}(\sigma_{i}, \sigma_{-i}) = c\).
We will solve both this problem and the one above here. We have that if \(\mu_{i}(\sigma) = \mu(\sigma_{i}, \sigma_{-i})\) and \(\mu_{i}(\sigma') = \mu(\sigma_{i}', \sigma_{-i}')\) are both Nash Equilibria, then:
\( \begin{align} \mu_{i}(\sigma_{i}, \sigma_{-i}) &\geq \mu_{i}(\sigma_{i}', \sigma_{-i}) \\ &= c - \mu_{-i}(\sigma_{i}', \sigma_{-i}) \\ &\geq c - \mu_{-i}(\sigma_{i}', \sigma_{-i}') \\ &= \mu_{i}(\sigma_{i}', \sigma_{-i}') \end{align} \)
In a similar fashion, we can show that \(\mu(\sigma_{i}', \sigma_{-i}') \geq \mu(\sigma_{i}, \sigma_{-i})\).
Consequently, \(\mu(\sigma_{i}', \sigma_{-i}') = \mu(\sigma_{i}, \sigma_{-i})\), which also implies that the strategies are interchangeable, i.e. \(\mu(\sigma_{i}', \sigma_{-i}') = \mu(\sigma_{i}', \sigma_{-i})\).Motivation: How do you reason about games? The best strategies in multi-agent scenarios depend on the choices of others. Game theory deals with this problem by identifying subsets of outcomes called solution concepts. In this section, we discuss the fundamental solution concepts: Nash Equilibrium, Pareto Optimality, and Correlated Equilibrium. For each solution concept, we cover what it implies for a given game and how difficult it is to discover a representative strategy.
Required Reading:
Optional Reading:
Questions:
Say that a game does not have a Pareto optimal outcome. Then, for every outcome \(O\), there was another \(O'\) that Pareto-dominated \(O\). Say \(O_2 > O_1\). Because \(O_2\) is not Pareto optimal, there is some \(O_k > O_2\). There cannot be a max in this chain (because that max would be Pareto optimal) and thus there must be some cycle. Consequently, there exists for some agent a strategy \(O_j\) s.t. \(O_j > O_j\), which is a contradiction.
Say two strategies \(S\) and \(S'\) are Pareto optimal. Then neither dominates the other, so either \(\forall i \mu_{i}(S) = \mu_{i}(S')\) or there are two players \(i, j\) for which \(mu_{i}(S) < \mu_{i}(S')\) and \(mu_{j}(S) > \mu_{j}(S')\). In the former case, we see that the two strategies have the same payoff as desired. In the latter case, we have a contradiction because \(\mu_{j}(S') = \mu_{i}(S') > \mu_{i}(S) = \mu_{j}(S) > \mu_{j}(S')\). Thus, all of the Pareto optimal strategies must have the same payoff.
This follows from the definitions of \(\mathbb{L}(v)\) and \(\chi(v)\). At the vertices of the simplex, \(\chi\) will only have singular values in its range defined by the vertice itself. Consequently, \(\mathbb{L}\) must as well.
Motivation: What happens when players don’t act simultaneously? Extensive Form Games are an answer to this question. While this representation of a game always has a comparable Normal Form, it’s much more natural to reason about sequential games in this format. Examples include familiar ones like Go, but also more exotic games like Magic: The Gathering and Civilization. This section is imperative as Poker is best described as an Extensive Form Game.
Required Reading:
Optional Reading:
Questions:
The problem is one of modeling simultaneity. Perfect information extensive form games have trouble modeling concurrent moves because they have an explicit temporal structure of moves.
The set of mixed strategies are each distributions over pure strategies. The set of behavioral strategies are each vectors of distributions over the actions and assign that distribution independently at each Information Set.
Motivation: Counterfactual Regret Minimization (CFR) is only a decade old but has already achieved huge success as the foundation underlying DeepStack and Libratus. In the first of two weeks dedicated to CFR, we learn how the algorithm works practically and get our hands dirty coding up our implementation.
The optional readings are papers introducing CFR-D and CFR+, further iterations upon CFR. These are both used in DeepStack.
Required Reading:
Optional Reading: These two papers are CFR extensions used in DeepStack.
Questions:
The definitions of the three are the following:
Swap Regret is connected to Correlated Equilibrium. Can you see why?
One way is to test it by implementing Local Best Response. It should perform admirably against that algorithm, which is meant to best it.
Motivation: In the last section, we saw the practical side of CFR and how effective it can be. In this section, we’ll understand the theory underlying it. This will culminate with Blackwell’s Approachability Theorem, a generalization of repeated two-player zero-sum games. This is a challenging session but the payoff will be a much keener understanding of CFR’s strengths.
Required:
Optional:
Questions:
PLG: Prove Lemma 7.1.
: A probability distribution over the set of all -tuples
of actions is a correlated equilibrium iff, for every
player and actions , we have
where .
It’s brushed over in the proof of Theorem 7.5 in PLG, but prove that if set is approachable, then every halfspace containing is approachable.
Because \(S \in H\) is approachable, we can always find a strategy for player one s.t. the necessary approachability clauses hold (see Johari's Lecture 13). Namely, choose the strategy in \(S\) that asserts \(S\) as being approachable.
Motivation: Let’s read the paper! A summary of what’s going on to help with your understanding:
DeepStack runs counterfactual regret minimization at every decision. However, it uses two separate neural networks, one for after the flop and one for after the turn, to estimate the counterfactual values without having to continue running CFR after those moments. This approach is trained beforehand and helps greatly with cutting short the search space at inference time. Each of the networks take as input the size of the pot and the current Bayesian ranges for each player across all hands. They output the counterfactual values for each hand for each player.
In addition to DeepStack, we also include Libratus as required reading. This paper highlights Game Theory and CFR as the really important concepts in this curriculum; deep learning is not necessary to build a champion Poker bot.
Required Reading:
Optional Reading:
Questions:
Here are some differences:


title = "Badges" url = "/badges" layout = "default" description = "My badges" is_hidden = "0" [UserBadges] limit = "12" ==


Notes for Machine Learning - Week 2
Contents
Linear Regression with Multiple Variables
Multivariate Linear Regression
- Multiple features (variables)
- $n$ = number of features
- $x^{(i)}$ = input (features) of $i^{th}$ training example.
- $x^{(i)}_j$ = value of feature $j$ in $i^{th}$ training example.
- Hypotesis
- Previously: $h_\theta (x) = \theta_0 + \theta_1 x$
- $h_\theta (x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n$
- For convenience of notation, define $x_0=1$
- $x=\begin{bmatrix}x_0 \\ x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}, \theta = \begin{bmatrix}\theta_0 \\ \theta_1 \\ \theta_2 \\ \vdots \\ \theta_n \end{bmatrix}, h_\theta (x) = \theta^T x$
Gradient Descent for Multiple Variables
Hypothesis: $h_\theta(x)=\theta^Tx=\theta_0 x_0 + \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n$
Parameters: $\theta_0, \theta_1, \dots ,\theta_n$
Cost function: $J(\theta_0, \theta1, \dots, \theta_n) = \frac{1}{2m} \sum^m_{i=1}\left(h\theta (x^{(i)})-y^{(i)}\right)^2$
- or $J(\theta) = \frac{1}{2m}\sum_{i=1}^{m}(\theta^T x^{(i)} - y^{(i)})^2$
Gradient descent
repeat {
$\theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta_0, \dots ,\theta_n)$
(simultaneously update for every $j=0,\dots,n$)
}
or
repeat {
$\thetaj := \theta_j - \alpha \frac{1}{m} \sum^m_{i=1}\left(h\theta(x^{(i)})-y^{(i)}\right) x^{(i)}_j$
(simultaneously update for every $j=0,\dots,n$)
}
Gradient Descent in Practice
Feature Normalization
Idea: Make sure featueres are on a similar scale.
- We can speed up gradient descent by having each of our input values in roughly the same range. This is because $\theta$ will descend quickly on small ranges and slowly on large ranges, and so will oscillate inefficiently down to the optimum when the variables are very uneven.
- The way to prevent this is to modify the ranges of our input variables so that they are all roughly the same.
Example
- $x_1$ = size (0-2000 $feet^2$)
- $x_2$ = number of bedrooms (1-5)
$x_1$ has a much larger range of values than $x_2$. So the $J(\theta_1, \theta_2)$ can be a very very skewed elliptical shape. And if you run gradient descents on this cost function, your gradients may end up taking a long time and can oscillate back and forth and take a long time before it can finally find its way to the global minimum.
Feature scaling
Get every feature into approcimately $-1\le x_i \le 1$ range.
- Feature scaling involves dividing the input values by the range (i.e. the maximum value minus the minimum value) of the input variable, resulting in a new range of just 1.
These aren’t exact requirements; we are only trying to speed things up.
$-3\le x_i \le 3$ or $ -\frac{1}{3} \le x_i \le \frac{1}{3}$ just is fine.
Mean normalization
Replace $x_i$ with $x_i - \mu _i$ to make features have approximately zero mean (Do not apply to $x_0 = 1$)
- E.g. $x_1 = \frac{size -1000}{2000}, x_2 = \frac{bedrooms - 2}{5}$
- $x_i = \frac{x_i - \mu _i}{s_i}$
- $\mu _i$ is the average value of $x_i$ in training set.
- $s_i$ is the range ($x_{imax}-x_{imin}$) or standard deviation ($\sigma$)
Learning Rate
- “Debugging”: How to make sure gradient descent is working correctly
- Make a plot with *number of iterations* on the x-axis. Now plot the cost function, $J(\theta)$ over the number of iterations of gradient descent.
- For sufficient small $\alpha$, $J(\theta)$ should decreases on every iteration.
- But if $\alpha$ is too small, gradient descent can be slow to converge.
- If $J(\theta)$ ever increases, then you probably need to use smaller $\alpha$.
- Example automatic convergence test
- Declare convergence if $J(\theta)$ decreases by less than $\epsilon$ (e.g., $10^{-3})$ in one iteration.
- How to choose learing rate $\alpha$
- So just try running gradient descent with a range of values for $\alpha$, like 0.001 and 0.01. And for these different values of $\alpha$ are just plot $J(\theta)$ as a function of number of iterations, and then pick the value of $\alpha$ that seems to be causing $J(\theta)$to decrease rapidly.
- Andrew Ng recommends decreasing $\alpha$ by multiples of 3. And then try to pick the largest possible value, or just something slightly smaller than the largest reasonable value.
- E.g. $\dots, 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1, \dots$
Features and Polynomial Regression
Choice of features
- We can improve our features and the form of our hypothesis function in a couple different ways.
- We can combine multiple features into one. For example, we can combine $x_1$ and $x_2$ into a new feature $x_3$ by taking $x_1\cdot x_2$. (E.g. $House Area = Frontage \times Depth$)
Polynomial Regression
Our hypothesis function need not be linear (a straight line) if that does not fit the data well.
We can change the behavior or curve of our hypothesis function by making it a quadratic, cubic or square root function (or any other form).
For example, if our hypothesis function is
$h_\theta(x) = \theta_0 + \theta_1 x_1$
then we can create additional features based on$x\_1$
, to get the quadratic function$h_\theta(x) = \theta_0 + \theta_1 x_1 + \theta_2 x\_1^2$
or the cubic function$h\_\theta(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_1^2 + \theta_3 x_1^3$
.In the cubic version, we have created new features $x_2$ and $x_3$ where $x_2 = x_1^2$ and $x_3=x^3_1$.
To make it a square root function, we could do: $h_\theta(x) = \theta_0 + \theta_1 x_1 + \theta_2 \sqrt{x_1}$
Note that at 2:52 and through 6:22 in the “Features and Polynomial Regression” video, the curve that Prof Ng discusses about “doesn’t ever come back down” is in reference to the hypothesis function that uses the
sqrt()
function (shown by the solid purple line), not the one that uses $size^2$ (shown with the dotted blue line). The quadratic form of the hypothesis function would have the shape shown with the blue dotted line if $\theta _2$ was negative.
One important thing to keep in mind is, if you choose your features this way then feature scaling becomes very important.
- E.g. if $x_1$ has range $1 - 1000$ then range of $x^2_1$ becomes $1 - 1000000$ and that of $x^3_1$ becomes $1 -<PHONE_NUMBER>$
- So you should scale $x_1$ before using polynomial regression.
Computing Parameters Analytically
Normal Equation
The “Normal Equation” (正规方程) is a method of finding the optimum $\theta$ without iteration.
There is no need to do feature scaling with the normal equation.
Intuition
$\theta \in R^{n+1} , J(\theta _0, \theta _1, \dots , \theta\_m) = \frac{1}{2m} \sum ^m\_{i=1} \left( h_\theta (x^{(i)}) - y^{(i)} \right) ^2$
- Set
$\frac{\partial }{\partial \theta _j} J(\theta ) = \cdots = 0$ (for every $j$), solve for $\theta _0, \theta _1, \dots , \theta _m$
Method
We have $m$ examples $(x^{(1)}, y^{(1)}), \dots , (x^{(m)}, y^{(m)})$ and $n$ features. (Note that $x^{(i)}_0 = 0$)
$$x^{(i)} = \begin{bmatrix}x^{(i)}_0 \\ x^{(i)}_1 \\ x^{(i)}_2 \\ \vdots \\ x^{(i)}_n \end{bmatrix}$$
And construct the $m \times (n+1)$ matrix $X$
$$X = \begin{bmatrix} (x^{(1)})^T \\ (x^{(2)})^T \\ \vdots \\ (x^{(m)})^T \end{bmatrix}$$
And the $m$-dimension vector $y$
$$y = \begin{bmatrix}y^{(i)} \\ y^{(i)} \\ y^{(i)} \\ \vdots \\ y^{(m)} \end{bmatrix}$$
Finally, we can get
$$ \theta = (X^T X)^{-1}X^T y $$
Example
Suppose you have the training in the table below:
| age ($x_1$) | height in cm ($x_2$) | weight in kg ($y$) |
|---|---|---|
| 4 | 89 | 16 |
| 9 | 124 | 28 |
| 5 | 103 | 20 |
You would like to predict a child’s weight as a function of his age and height with the model
$$weight = \theta _0 + \theta _1 age + \theta _2 height$$
Then you can construct $X$ and $y$
$$X = \begin{bmatrix} 1 & 4 & 89 \\ 1 & 9 & 124 \\ 1 & 5 & 103 \end{bmatrix}$$
$$Y = \begin{bmatrix} 16 \\ 28 \\ 20 \end{bmatrix}$$
Usage in Octave
|
|
Comparison of gradient descent and the normal equation
$m$ training examples and $n$ features.
| Gradient Descent | Normal Equation |
|---|---|
| Need to choose $\alpha$ | No need to choose $\alpha$ |
| Needs many iterations | No need to iterate |
| $O (kn^2)$ | $O (n^3)$, need to calculate $(X^TX)^{-1}$ |
| Works well when $n$ is large | Slow if $n$ is very large |
With the normal equation, computing the inversion has complexity $O(n^3)$. So if we have a very large number of features, the normal equation will be slow. In practice, when $n$ exceeds 10,000 it might be a good time to go from a normal solution to an iterative process.
Normal Equation Noninvertibility
$$ \theta = (X^T X)^{-1}X^T y $$
- What if $X^TX$ is non-invertible (不可逆的) ? (singular/ degenerate)
- Octave:
pinv(X'*X)*X"*y
- There’s two functions in Octave for inverting matrices,
pinv
(pseudo-inverse, 伪逆) andinv
(inverse). - As long as you use the
pinv
function then this will actually compute the value of data that you want even if X transpose X is non-invertible. - So when implementing the normal equation in octave we want to use the
pinv
function rather thaninv
.
- There’s two functions in Octave for inverting matrices,
- $X^TX$ may be noninvertible. The common causes are:
- Redundant features, where two features are very closely related (i.e. they are linearly dependent)
- E.g. $x_1$ = size in $feet^2$, and $x_2$ = size in $m^2$. So you’ll always have $x_1 = (3.28)^2 x_2$
- Too many features (e.g. $m\le n$).
- In this case, delete some features or use “regularization”.
Octave/Matlab Tutorial
Basic Operations
- Print specific decimals:
disp(sprintf('6 decimals: %0.6f', a)) // 6 decimals: 3.141593
v = 1:0.2:2 // [1.0 1.2 1.4 1.6 1.8 2.0]
ones
,zeros
,rand
,randn
(生成正态分布的随机数矩阵),eye
(生成单位矩阵)hist
(直方图，第二个参数课自定义条数)size
(返回矩阵的行数与列数 [m n] )length
(返回向量的维数)
Moving Data Around
- Use
load
to load data set.
|
|
Use
who
to show all variables in Octave workspacewhos
for detail informationclear
to delete a variable
1
clear featureX
Get first ten elements of a matrix
|
|
- Use
save
to save your variable
|
|
By default the data is saved in binary. You can save it to ASCII by
1
save hello.txt v -ascii
Use
A(3, 2)
to get $A_{32}$, orA(2, :)
to get every element along the second rowA([1, 3], :)
to get everything in the first and third rowsA(:, 2) = [10; 11; 12]
to change the value of elements in second column.A = [A, [100; 101; 102]]
to append another column vector to rightA(:)
to put all elements of $A$ into a single vector
Computing on Data
- Use
max
to get the largest element in a vector
1 2 |
a = [1 15 2 0.5]; [val, ind] = max(a); // val = 15, ind = 2 |
If you do
max(A)
, where $A$ is a matrix, what this does is this actually does the column wise maximum.1 2 3 4 5 6 7 8
A = [1 2; 3 4; 5 6]; max(A) // [5 6] A = [8 1 6; 3 5 7; 4 9 2]; max(A, [], 1) // [8 9 7] (get the column wise maximum) max(A, [], 2) // [8 7 9] (get the row wise maximum) max(max(A)) // 9 max(A(:)) // 9
a < 3
does the element wise operation, you’ll get[1 0 1 1]
find(a<3)
gets[1 3 4]
magic(3)
gets a 3x3 magic matrixsum
,prod
,floor
,ceil
,flipud
Plotting Data
plot
hold on
,figure
,subplot
xlabel
,ylabel
,legend
,title
,axis
print -dpng 'myPlot.png'
imagesc(A)
to visualize a matriximagesc(A), colorer, colormap gray
to be in gray scale.
Control Statements: for, while, if statement
Vectorization
Vectorization is the process of taking code that relies on loops and converting it into matrix operations. It is more efficient, more elegant, and more concise.
As an example, let’s compute our prediction from a hypothesis. Theta is the vector of fields for the hypothesis and x is a vector of variables.
With loops ($h_\theta (x) =\theta_0 x_0 + \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n$):
1 2 3 4 |
prediction = 0.0; for j = 1:n+1, prediction += theta(j) * x(j); end; |
With vectorization ($h_\theta (x) = \theta^T x$):
1
|
prediction = theta' * x; |


James Dean was one of America’s iconic actors of the mid 20th-century; a remarkable feat, considering that he only made three movies. We chose him as an example partly because of his iconic status, but mostly because the fact that he made only three movies makes it easier to do simple cardinality computations on the set of movies that he made.
You can download the dataset for these queries here.
You can cross-reference the queries to the book by query number or name.


1. Open browser console. 2. Open `Rendering` panel. 3. Check `Layer borders`. If `will-change` is not given, the red circle is not in a separated layer. So the browser rendering the circle with other elements. If you want to animate the circle, you expect the browser to render the circle in a separated layer for better optimization. There are two ways to do that. 1. Add `transform`. 2. Add `will-change: transform;`. `will-change` is useful to do that ahead of time, before the actual `transform` happens. If you encounter a jank, this will be useful.
Reference: Will-Change: Micro Tip #30 - Supercharged


Documentation regarding pages under Other Pages section can be found here
The syntax

Cloud Admin- Responsive Dashboard Template

http://www.fametaxi.com

Cloud Admin is a responsive admin dashboard template powered with Twitter Bootstrap Framework for admin and SaaS applications. Cloud Admin has a clean and subtle design which makes your next project look awesome and yet user friendly.

Cloud Admin- Responsive Dashboard Template

http://www.fametaxi.com

Cloud Admin is a responsive admin dashboard template powered with Twitter Bootstrap Framework for admin and SaaS applications. Cloud Admin has a clean and subtle design which makes your next project look awesome and yet user friendly.

Please refer to HTML for self-explanatory commented HTML code.
Please refer to HTML for self-explanatory commented HTML code.
The syntax:

 General Questions

 Payment related
 Terms of Service
 Account Queries
 Other Questions

More details at Bootstrap List Toggle
tab-content
(official docs here) that contains an accordion.This is a blank template to get you started quickly. It contains the following:


| Level Creation - Part 2 |
|
The following section is a continuation of Level Creation - Part 1 and provides more detailed information on creating Multiplayer levels and environments and includes tutorials and examples. Topics covered in the tutorials and examples include more information on the Sealed World Rules, the additional creation of level geometry including structures, streams, and terrain features, a discussion on water and how it exists and behaves in Halo, additional applications of smoothing groups, the creation and placement of items such as light fixtures and ladders, the placement of visibility portals for rendering, an explanation of player clipping\containment techniques, and miscellaneous and general tips and suggestions. |
| Getting Started |
|
This section assumes that the end user has
successfully completed and understands
Level Creation - Part 1
and any additional reference sections.
The following tutorials, examples, and images will be using the file "tutorial.max" which was created in the tutorials and examples in Level Creation - Part 1.
|
| Modifying the Level |
| The following tutorials, examples, and images will help demonstrate additional features for Halo levels through the modification of the level geometry. |
Terrain Modification
| The following steps and example images will demonstrate the modification of the surfaces that compose the floor of the level to create some simple hills that will act as a border for the level. |
|
Modification of the level floor to create some
simple terrain and surrounding hills: 1) Open 3ds Max and load the tutorial.max file from the Halo\data\levels\test\tutorial\models directory and select the level (object named "level"). 2) Select Modify. 3) Under Selection choose 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). The first image further explains the above procedures.
5) The selected faces are now going to be Tessellated so that there are more polygons or faces to work with in order to create terrain. To subdivide or tessellate the selected faces do the following: a) In the Weld area under Edit Geometry, enter 0.0 in the Edge tension value field. b) In the Weld area under Edit Geometry, click the Tessellate button 4 times. The second image further explains the above procedures and shows the final result of the tessellation procedure.
6) The Tessellation procedure will invalidate the assigned texture coordinates or texture mapping. To help serve as a guideline for the modification of the faces, the polygons or faces will be reassigned texture coordinates. a) With the faces that compose the floor selected, select UVW Map from the Modifier List pull-down menu. b) Select the Top view. c) In the Alignment area under Parameters, click on the View Align button. d) In the Alignment area under Parameters, click on the Fit button. The third image further explains the above procedures.
The polygons around the edges of the level (where the terrain meets the sky) are going to be modified such that they create hills around the edge of the tutorial level. There are many methods to achieve this including moving the vertices or moving the faces either individually or in groups. The final result will be that the surround hills will be approximately 128 units high. One such technique for making the hills are listed in the procedures below. 7) To edit the polygons and vertices that compose the terrain, the selected object need to be converted to a mesh again. a) With the level selected, select Edit Mesh from from the Modifier List pull-down menu. b) Choose the polygons around the edges of the level such that at the "North" and "South" borders the polygons selected are 1 "row" deep and that the "East" and "West" borders are 2 "rows" deep. The fourth image further explains the above procedures.
To create the hills and smooth the faces out follow the procedures below: 8) With the border faces still selected, move the faces up 128 units in the Z-axis. The fifth image further explains the above procedures.
9) Select faces or vertices and move them to give the bordering hills some variation. Edges were turned and vertices were manually tweaked to smooth out the surround hill geometry. Turning edges is just basically taking two faces (in this case 2 triangles) and reconnecting or turning the edge such that its orientation is changed. The triangle count is preserved as well as the non-turned edges, but the selected edge of the triangle now connects to different vertices than the original configuration. The turn edge functionality (Turn) can be found under Edit Geometry when Edge mode is selected while the object is set as an Editable Mesh (Edit Mesh). See the User Reference in 3ds Max under Help for more information on moving faces, vertices, and turning edges. The sixth image or last image further explains the above procedures and shows the final results.
|
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 steps and example images will demonstrate the modification of the surfaces that compose the floor of the level to create simple outdoor terrain. |
|
Modification of the ground mesh to vary the
existing terrain: 1) To create a small hill in the middle of the level do the following: a) Select the level (object named "level"). b) Select Modify. c) Under Selection choose Face mode. 2) Select the 8 faces that are in the middle of the level. 3) Move these faces up to create a small hill. The first image further explains the above procedures.
4) To smooth and round the hill do the following: a) Under Selection select Vertex mode. b) Select the vertex in the middle of the hill. c) Move the vertex up in the Z-Axis to help round the hill. The second image further explains the above procedures.
5) Move the faces and vertices and turn the edges to smooth out the hill and to make it follow the dirt paths outlined in the texture. The third image further explains the above procedures.
Depending on how the terrain is modified it may be necessary to adjust or reassign the texture coordinates. Follow the previous procedures for UVW Mapping or projection texture mapping the ground. 6) Rough up the surrounding ground by creating a small rolling hill on the "West" border of the level. Do not modify the "East" border or area of the level for right now. 7) Smooth the transition between the ground and bordering hills by moving vertices and faces and turning edges. Again, avoid modifying the area on the "East" border of the level. The fourth image or last image further explains the above procedures and shows the final results.
|
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 steps and example images will demonstrate the modification of the terrain to create a stream bed. |
|
Modification of the ground mesh to create a
stream bed. 1) To create a stream bed on the "East" border of the level do the following: a) Select the level (object named "level"). b) Select Modify. c) Under Selection choose Face mode. 2) Select the faces on the "East" side of the level such that they encompass the part of the ground texture that represents the stream bed. The first image further explains the above procedures.
3) To create the stream bed, more polygons and vertices are needed. To get a higher resolution mesh, the selected faces are going to be subdivided or tessellated as was done with the original terrain mesh. Follow the procedures below to tessellate the selected polygons. a) In the Weld area under Edit Geometry, in the Edge tension value field enter 0. b) In the Weld area under Edit Geometry, click the Tessellate button once. The second image further explains the above procedures and shows the final results of the tessellation procedure.
4) Turn the edges that border the outline of the stream on the texture such that the edges follow the stream bed. 5) Create the stream bed by moving the vertices in the middle of the stream down. To do this, follow the procedures below. a) Under Selection select Vertex mode. b) Select the vertices that run approximately up the middle of the stream bed outlined in the terrain texture and move the vertices down in the Z-axis. 6) Move the faces and vertices and turn the edges to smooth out the banks that border the stream and to make it follow the stream bed as outlined in the texture. In addition, the position in the Z-axis of the vertices that run up the middle of the stream bed were varied. 7) Finally, the faces around the stream as well as the vertices and faces that intersect the ground and border hills were modified to smooth out and vary the terrain features. Depending on how the terrain is modified it may be necessary to adjust or reassign the texture coordinates. Follow the previous procedures for UVW Mapping or projection texture mapping the ground. The third image or last image further explains the above procedures and shows the final results of 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
|
Creation of a Simple Stream
| The following steps and example images will demonstrate the creation of geometry that will be used to add a stream to the existing level. |
|
Creation of the stream geometry: 1) To create the surface of the stream do the following: a) Deselect the level (object "level") and select Create. b) Make sure that Standard Primitives is selected in the pull down menu. c) Under Object Type, click on the Plane button. d) In the Parameters area, set the Length Segs value to 8 and the Width Segs value to 1. The first image further explains the above procedures.
2) Create the plane such that it roughly covers the area of the stream bed. 3) The stream is going to be made a separate object from the object "level". Under Name and Color, name this object "stream", the object color was also set to blue, this is not necessary but makes it easier to distinguish this object. The second image further explains the above procedures.
The plane of polygons will now be manipulated so that it fits the stream bed. 4) Follow the procedures below to modify the plane so that it makes a stream. a) Select Modify. b) The plane needs to be converted to a mesh so that it can be manipulated. Select Edit Mesh from from the Modifier List pull-down menu. c) Under Selection select Face mode. d) Select all the faces for the stream. e) Move the selected faces down in the Z-axis to form the surface of the water. The plane of polygons should be slightly below the lowest edge or bank of the stream bed. The third image further explains the above procedures and shows the final result of the performed procedures.
5) Edit the vertices to make the polygons that compose the object "stream" conform to the shape of the stream making sure that all edges extend into or past the geometry that composes the stream bed. 6) The stream is going to be setup such that it "flows" from North to South. Notice how the edges of the polygons are positioned such that they are either parallel to the flow direction or perpendicular to the flow direction of the stream. This will make the texture mapping or application of texture coordinates for the stream shader (that will be scrolling to simulate the water moving) easier. The fourth image or final image further explains the above procedures and shows the final result.
|
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 steps and example images will demonstrate the creation and application of the Multi/Sub-Object material group and Sub-Material needed to complete the stream. |
|
Creation of the stream Material Group\Multi/Sub-Object: 1) In 3ds Max select the stream object. Open the Material Editor. 2) Select an empty 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 "stream". 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 repeatedly in the tutorials and examples. 7) Now apply the Multi\Sub-Object to the stream object. Since the "stream" object is selected, click on Assign Material to Selection. This Multi\Sub-Object has now been assigned to the "stream" object. The Sub-Materials for this Multi\Sub-Object can now be applied to the object using the materials associated ID number. 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, 1 Sub-Material.
The single Sub-Material is now going to be named the name of the shader 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 "example_tutorial_stream" into the name or label field. 10) 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 third image further explains the above procedures.
11) 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 Environment section 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_stream.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 fourth image further explains the above procedures.
To return to the previous options in the Material Editor window click on the Go to Parent button. 12) In the Material Editor, enable the display of the material by clicking on the Show Map in Viewport button. 13) The Sub-Materials should be displayed on the Material Sample. The stream geometry that has been created does not currently follow the Sealed World Rules, it has open edges. This will be solved by adding a Special Shader Symbol to the material name. 14) In the name or label field add a "!" character to the end of the name "example_tutorial_stream". The name of the Sub-Material should now be "example_tutorial_stream!". The Shader Symbols table located in the General Reference section Materials Overview shows that the "!" symbol tells Tool that when this surface is compiled into the level data tag do NOT associate any collision information with it. This surface is now RENDER ONLY. Because of this, it can have open edges and now satisfies the Sealed World Rules. 15) To return to the Multi/Sub-Object Basic Parameters click on the Go to Parent button. 16) Close the Material Editor window. The fifth 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
|
| With a material having been created and assigned to the faces that compose the stream object, the 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 data tag and are referenced in the shader data tag to properly display for the specific faces. |
| The following procedures and example images will demonstrate using Unwrap UVW to apply texture or mapping coordinates to the faces that compose the stream geometry. |
|
Application of texture coordinates to the faces
that compose the stream geometry: 1) Select the stream. 2) Select Modify. 3) Under Selection, select Face mode. 4) Select all the faces that compose the stream geometry. 5) Using the Modifier List pull-down menu select Unwrap UVW. The first image further explains the above procedures.
Apply the texture coordinates to make the texture for the stream follow the shape of the geometry. 6) Click on the Edit button under Parameters. This will display the Edit UVWs window. 7) In the Edit UVWs window click on the Show Options button at the bottom to show additional properties. 8) In the Edit UVWs window under Bitmap Options enter in the Width field 64 and enter in the Height field 512. The example_tutorial_stream.tif texture should now display properly. The second image further explains the above procedures.
9) Select Move mode in the Edit UVWs window. 10) Map the stream texture to the faces of the stream geometry by moving the vertices. 11) Once this is done, close the Edit UVWs window. The third image further explains the above procedures and shows the final result.
12) To make the stream part of the level, it must be linked or attached to the reference frame. a) Select the stream object. b) Click on Select and Link. c) Click on Select by Name, this will display the Select Parent window. d) In the Select Parent window select "frame". e) Click on Link. The fourth 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 |
|
The stream now has a material and mapping
coordinates applied to it that
once viewed in game will scroll and give the appearance of running water.
For additional water effects the stream bed will have a different material applied to it than the currently applied terrain material. Such additional water effects include: the sound of water splashing when the player runs through the water or stream bed, the water particle effects when the player runs through the stream or stream bed, and the explosion effects and particle effects that occur when such an event occurs in the stream. It should be noted that the steam in the examples and tutorials is the simplest case of creating or "simulating" water. Before continuing, a short discussion on water and water volumes and how they exist and behave in Halo is in order.
Water and Water Volumes in Halo Water in Halo is very simple, almost to the point where water does not truly exist (at least in the sense that most people that have edited or created water in other games are used to). This is understandable since there are no specifically designed underwater missions or environments in Halo. In the case of streams, the water is shallow and the player cannot get under the surfaces of the water and be completely immersed. Couple these facts with the game play mechanic that the player in the role of the Master Chief has a self contained suit of armor and has no fear of drowning, there was no need for complicated underwater player behaviors, physics, and effects. The majority of water encountered is in the form of simple streams. This kind of "water" has 2 parts: a stream surface with a shader whose settings simulate a water surface (small waves, flowing water, etc...) and the terrain underneath which has specific settings so that when objects interact with the terrain water effects occur (particles, sprites, sounds, etc...) giving the appearance that the stream itself is water. It is this kind of water that is demonstrated in the tutorial below. There is one instance in the game where a large volume of water exists that the player can interact with or go "completely under water", this occurs for the island level in single player Halo, Silent Cartographer and in its multiplayer derivative, Death Island. In this instance, the water is still very simple. Just like the stream example, there are the water surfaces that have the water shader effects and the terrain or surfaces underneath that are setup to simulate water with the effects that occur when objects interact with these surfaces. In the case of the water surfaces, these are defined with a .shader_transparent_water where as the streams use .shader_transparent_chicago or shader_transparent_chicago_extended shader tags. The water is made to have no collision using the "!" Render Only Shader Symbol just as with the stream example below. The combination of the .shader_transparent_water and water fog volumes described below determine additional game behaviors such as the ability of vehicles to travel over the water (Ghosts will eventually stop and sink). For large volumes of water, a water fog volume is created. This is done by adding the fog plane Shader Symbol "$" to the material names for the water surfaces, or a similar plane is created with another fog plane defined shader assigned to the surfaces of the plane. The volume is defined to be a water fog volume by enabling the "is water" flag located in the .fog tag. Fog planes or volumes (suchs as those seen throughout the game and in the chasm in the multiplayer level Gephyrophobia) as well as water fog volumes are all created in a similar manner. Make a plane that covers the entire area and extends past the level borders (this plane does not have to follow the Sealed World Rules), face the normals for the faces of the plane upwards, apply a material with the fog plane symbol or use the +unused special material (this material has no collision nor will it draw) with the fog plane symbol (to create the material +unused$). In Sapien, create a fog reference (a .fog tag that contains fog color and density as well as other properties) for the "fog palette" and then enter the volume and set the .fog palette entry to be applied to this volume.
|
| The following procedures and example images will discuss the implementation of materials to achieve water effects. The faces that compose the stream bed will be assigned a material that will give the stream the appearance of being water when the player and other game objects interact with it. |
|
Creation and application of the stream bed material: The stream bed material will be identical to the surrounding terrain material except for the fact that its physics material settings for the shader will be set to "water" instead of "dirt", this can be observed in the provided example shader files previously mentioned. This new material will be added as a new Sub-Material to the "tutorial terrain\sky" Multi/Sub-Object. 1) Open the Material Editor and select the "tutorial terrain\sky" Multi/Sub-Object. 2) Add a third Sub-Material by clicking on Add. 3) Set up this new Sub-Material exactly like Sub-Material ID 2 (example_tutorial_ground) except name this Sub-Material "example_tutorial_streambed" 4) Close the Material Editor. The first image further explains the above procedures.
The new example_tutorial_streambed Sub-Material will now be applied to the stream bed. Follow the procedures below. 5) Select the level. 6) Select the Modify tab. 7) Select Face mode. 8) Select the stream bed faces, this includes all faces under the stream surface as well as those faces that partially intersect the stream surface. 9) Set the faces to Material ID 3. Leave the Smoothing Group still set to 2 since we want the lighting for the terrain and stream bed to be blended together. The second image or last image further explains the above procedures.
|
Click to Open Larger Image in New Window
|
Creation of a Simple Base Structure
|
The following procedures and examples will show
the construction of a simple base structure.
Eventually, the structure will be "mirrored" or copied to create a second opposing base structure, this will be covered in subsequent tutorials along with the creation of Multi/Sub-Object material groups and the application of the Sub-Materials and texture coordinates to the faces of the base structure. |
| The following procedures and example images will demonstrate the creation of a simple base structure. |
|
Creation of the base structure geometry: When creating a level, particularly indoor environments and\or buildings or structures, it is always helpful to have a scale reference. The dimensions of various game elements of Halo, including the player dimensions, are available for reference in the Halo Player Statistics. Another technique is to use a reference model. The Halo Editing Kit includes a simple reference model for the player (the Master Chief) and a vehicle (the Warthog). The following procedures will demonstrate how to merge or import a reference model for use as scale reference for the creation of the base structure geometry. 1) In 3ds Max go to File and select Merge. This will open the Merge File window. 2) In the Merge File window go to the master_chief directory under the Halo\data\characters\reference directory structure. 3) In this directory there will be a master_chief.max file, select this file. 4) Click on Open. The Merge window will now appear. The first image further explains the above procedures.
5) In the Merge window, select the Master Chief object in the list. 6) Click on OK. The Master Chief reference model will now appear in the level and can be moved and rotated as necessary. For this tutorial, the reference model will be moved to the southern dirt patch of the level where the base structure will be constructed. Note that the model may appear below the terrain but will be selected, move the model up to make it visible. The reference model will NEVER be linked to the reference frame and only exists as a reference tool. Since the model is not linked to the frame, it will never be part of the level and will never be exported. Therefore, the model can be kept in the .max file and does not have to be deleted each time the level is exported to a .jms. The second image further explains the above procedures.
7) To create the core geometry of the base structure follow the procedures below. a) Select Create. b) Select Box and create a box that has the following dimensions: Length: 280.0 Width 96.0 Height 96.0 and that has Length Segs: 2 Width Segs: 1 and Height Segs: 1. c) Position and align the box such that it is roughly in the center of the dirt spot but slightly more towards the center of the level. The third image further explains the above procedures.
The box will now be manipulated to create a ramp and simple hallway. 8) To make the front ramp to the base do the following: a) Convert the box to a mesh (Edit Mesh). b) Make the first segment of the box into a ramp by welding (Vertex Mode and Weld) the top 2 vertices to the bottom 2 vertices. The fourth image further explains the above procedures and shows the final result of the above procedures.
9) To create the simple hallway the side faces of the back segment for both sides are deleted as well as the bottom faces for the two segments. The fifth image further explains the above procedures and shows the final result of the above procedures.
10) Extend the hallway by extruding the side edges (Edge Mode, Select the Edges, and Shift-Drag) 11) The ramp was slightly extended also by just selecting the front vertices and moving them forward. The sixth image further explains the above procedures and shows the final result of the above procedures.
12) The faces that form the top of the base were hidden to make the construction of the internal hallway and features easier. Vertices were then created and aligned to form the beginning of the doorways for the hallway. The top vertices were scaled inwards to add a slight taper to the door way once it is completed. Note that the Master Chief reference model was moved to help determine how big the hallway and entrances\exits should be. The seventh image further explains the above procedures and shows the final result of the above procedures.
13) Using the newly created and existing vertices, polygons or faces were created to make the sides of the bases with the hallway doorways cutout. 14) The floor and ceiling for the hallway were also created by creating polygons or faces using the newly created vertices. The normals for the visible collideable faces must point in the proper direction. The eighth image further explains the above procedures and shows the final result of the above procedures.
15) The faces that compose the hallway ceiling were hidden to make the viewing and construction of the hallway walls easier. The hallway walls were created by creating polygons or faces using the existing vertices. The ninth image further explains the above procedures and shows the final result of the above procedures.
16) All of the faces were unhidden and the base was named "blue base" by entering this name into the object name field. The tenth image or final image further explains the above procedures and shows the final result.
|
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 modification of the base structure and the addition of ladders. |
|
Creation of ladder guides and ladder faces:
1) Two ladder guides or grooves are created on the back side or "South" side of the base structure. 2) The guides or grooves will provide an inset for the ladder faces or polygons to be placed. Since the ladder faces must be offset from the back face of the grooves and cannot be created using the front vertices additional vertices and faces are created midway on the sides of the inset grooves. The reason for this is because if the ladder faces were created using the front vertices multiple edges would be created. Multiple edges are invalid due to the fact that they break the Sealed World Rules. 3) The edges at the start of the ladder guides or grooves are beveled or angled to help guide the player onto the ladder as the player approaches the ladder faces from any angle. The first image further explains the above procedures and shows the final results of the geometry modifications.
4) The faces that will be become the actual ladders are added using the middle vertices set into the grooves created for the ladders. The second image or last image further explains the above procedures and shows the final results of the above procedures.
|
Click to Open Larger Image in New Window
|
| The following procedures and example images will demonstrate the modification of the base structure for the inclusion of a teleporter gateway |
|
Creation of a teleporter gateway:
1) A doorway or gateway for the teleporter is created on the back side or "South" side of the base structure. The first image further explains the above procedures and shows the final results of the geometry modifications.
2) The visible teleporter "field" is added by creating faces that fit the opening but are NOT attached to the base meshes (the vertices and associated edges do not align but the edges are flush with the surrounding surfaces or faces). The faces are then inset. The faces created form a curved surface for aesthetic purposes. These faces will be made render only later when materials are applied just as the stream faces were and therefore these faces may have open edges since they will be non-solid (no collision). The netgame flags required to make the teleporter work will be placed using Sapien and will be demonstrated in the Population section. The second image or last image further explains the above procedures and shows the final results of the above procedures.
|
| The following procedures and example images will demonstrate the addition of lights to the base hallway. |
|
Addition of lights to the base hallway: The tunnel for the base will need some basic lighting. Lighting and radiosity will be covered more in depth in the Radiosity (Lighting) section. 1) Two lights were added to the tunnel by creating 2 faces for each light and then moving these faces slightly off the surface of the tunnel ceiling (this prevents z-buffering render anomalies and Tool compilation errors). Note that these lights currently do not follow the Sealed World Rules since they have open edges. As was demonstrated with the creation of the stream in the level, these faces will be made "render only" and will have no collision once the appropriate material is applied to the faces. These faces will then comply with the Sealed World Rules. In this case, the light faces WILL be visible AND cast light for use in radiosity. As will be covered in the Radiosity (Lighting) section, faces can emit light and not render, or render and not emit light, or both. The Master Chief reference model was moved or hidden in the example image. The image to the right further explains the above procedures and shows the final results for the procedures outlined above.
|
Separation of the Level into Separate Mesh Objects
|
Before creating the Multi/Sub-Object
material group for the base structure created above and applying the
materials, texture coordinates, and smoothing groups to the base structure
faces, the structure must be made part of the level and satisfy the Sealed
World Rules. There are several ways to build a level. It is perfectly valid to make the entire level a single mesh that satisfies the Sealed World Rules. It is also perfectly valid to create a single Multi/Sub-Object that contains all the Sub-Materials for the level and apply it to this single large mesh. Since there are so many parts to a level and a level can become quite large and cumbersome to work with, it is very advantageous to separate the level into several objects. These objects can then have their own individual Multi/Sub-Object material group. This separation of mesh parts and material groups greatly helps in the organization of the level and greatly decreases the cumbersome nature of dealing with a single large mesh when creating something as complicated as a game environment. It is the latter approach that will be followed and demonstrated in the proceeding tutorials and examples. When the level data is exported using Blitzkrieg, only the vertices and subsequent face data (material type\name, smoothing group, texture coordinates, etc...) are exported. Therefore, objects that meshes are separated into only exist in 3ds Max. Because of this, as long as the vertices and related edges match exactly between the mesh objects (satisfying the Sealed World Rules), the exported data will reflect this. The level will export and compile properly. The following procedures and example images will demonstrate the merging of the base with the level terrain to create polygons to seal the world and to match the relevant vertices and associated edges. The faces that compose the base will then be detached from the level mesh to create a separate object that will have a separate Multi/Sub-Object material group. The base object will then be linked to the reference frame. |
| The following procedures and example images will demonstrate the merging of the base with the level terrain to satisfy the Sealed World Rules. |
|
Merging the base structure with the level object: 1) Select the level (object named "level"). 2) Under Edit Geometry click on Attach to activate attach mode. 3) Now click on the base object (object named "blue base"). The base has now been merged and is a part of the level geometry. The base may change color or have a texture or textures suddenly applied to it, this does not matter since it will have materials and texture coordinates properly assigned to it later. This is the result of merging the faces of the base (which have a default material id number associated with them) with an object that already has a material assigned to it. The first image further explains the above procedures and shows the final results of the above procedures.
4) Toggle Attach mode off by clicking on Attach again. 5) Select all the faces or vertices that compose the base structure and then move the base down in the Z-Axis so that it is flush or even with the terrain underneath it. 6) Delete the ground faces that are adjacent or around the base. The second image further explains the above procedures and shows the final results of the above procedures.
7) Create polygons to fill in the hole around the base and attach the base geometry to the surrounding terrain geometry. Make sure to fill in the holes and gaps in the ladder guides (the area behind the ladder faces). 8) Assign these newly created faces to Material ID 2 and Smoothing Group 2. 9) Select all the faces that create the terrain and apply a UVW Map (Top down projection texture mapping) to fix the texture coordinates (as demonstrated before). The third image or last image further explains the above procedures and shows the final results of the above procedures.
|
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 separation of the base into a separate object that will eventually be linked to the reference frame. |
|
Separating the base structure from the level object: 1) Select the level. 2) Enter Face mode and select all the faces that compose the base structure. 3) Under Edit Geometry click on Detach. The Detach dialog window will appear. 4) In the Detach dialog window enter "blue base" in the Detach as: entry field, this will detach the faces to a separate object called "blue base". 5) Click on OK. The image to the right further explains the above procedures.
|
Application of Materials to the Base
|
Now that the blue base has been separated into a
separate object, a separate Multi/Sub-Object material group will be created. The following steps and example images will demonstrate the creation of the Multi/Sub-Object material group and Sub-Materials needed to complete the base structure. |
|
Creation of the base structure Material Group\Multi/Sub-Object: 1) In 3ds Max select the blue base object. Open the Material Editor. 2) Select an empty 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 "base structures". Type this name into the Multi\Sub-Object description window. 7) Now apply the Multi\Sub-Object to the blue base object. Since the "blue base" object is selected, click on Assign Material to Selection. This Multi\Sub-Object has now been assigned to the "blue base" object. The Sub-Materials for this Multi\Sub-Object can now be applied to the object using the materials associated ID number. 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, 8 Sub-Materials. 9) The Sub-Materials are now going to be named and linked to images (Diffuse maps). Since this has been demonstrated before, the Sub-Material properties will be listed in the table below. Note: The .tif file reference is the image to be linked to in Diffuse Map settings. The directory containing these images is the same as the previous examples: Halo\data\levels\test\tutorial_examples\bitmaps Make sure that in the the Material Editor, to enable the display of the materials by clicking on the Show Map in Viewport button for each Sub-Material.
Note that the Shader Symbols have been included. The Sub-Material example_tutorial_ladder%^ demonstrates that materials can have multiple Shader Symbols applied. In this case the ladder material has been made viewable from both sides or two-sided using the % symbol and has been made a ladder or climbable by the player using the ^ symbol. The .tif files listed above were included with the Halo PC End User Editing Kit. As before, the completed or provided example resources will be used for the following examples for the sake of simplicity. Once all the Sub-Materials have been created, named, and linked to their reference images, close the Material Editor window. The second image or last image further explains the above procedures and shows the results in the Material Editor.
|
Click to Open Larger Image in New Window
Click to Open Larger Image in New Window
|
| Now that the blue base has been separated into a separate object and a separate Multi/Sub-Object material group has been created, the Sub-Materials as well as texture mapping coordinates will be applied. |
| The following steps and example images will demonstrate application of the Sub-Materials needed to complete the base structure. |
|
Application of Materials and Texture Coordinates
to the base and base surfaces: The following table describes the areas of the base and what material is applied to them.
Once the material is applied, the faces have texture coordinates assigned. The texture coordinates or texture mapping is applied to the surfaces using a combination of projection mapping (UVW Map) and UVW Unwrapping and mapping (Unwrap UVW). The images to the right further explain the above procedures and several images have been provided showing the base from several angles to show the final base material application and texture alignment.
|
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
|
| Now that the blue base has had Sub-Materials as well as texture mapping coordinates applied to the surfaces that compose the base, smoothing groups will be applied. |
| The following steps and example images will demonstrate the application of smoothing groups to the surfaces of the base. |
|
Assigning smoothing groups to the base surfaces: All the faces of the base structure were selected and all the smoothing groups were cleared (Clear All under Smoothing Groups while in Face mode.) Smoothing groups were then applied to the surfaces of the base. There are many ways to apply Smoothing Groups to all the faces geometry. The Smoothing Groups below were applied manually. The following table describes the areas of the base and what Smoothing Group is applied to these surfaces.
|
Creating the Opposing Base Structure
|
Now that the blue base structure has been
completed, it can be copied and used to construct a second base structure on
the opposite end of the level. The following procedures will demonstrate the structure being "mirrored" or copied and rotated 180 degrees to create a second opposing base structure. Both base structures will then be attached as to the reference frame. |
|
Copying and mirroring the base structure: 1) Select the blue base. Clone the object (Ctrl V). This will bring up the Clone Options window. 2) Make sure that Copy is selected under Object. Under Name enter the name "red base". 3) Click on OK. The first image further explains the above procedures.
As mentioned before, constructing the level such that it is centered on the origin can help in the creation of the level, especially when having to duplicate or mirror geometry such as base structures. In the procedures below, the red base objects Pivot point will be moved to the origin of the level (X: 0.0 Y: 0.0 Z: 0.0) and the newly copied or created "red base" will be rotated about this point. Using this technique also insures that structures are equally distanced from features in the level, thus making the level more balanced with respect to game play for the player or for teams. 4) With the red base object still selected go to the Hiearchy tab. 5) Under the Adjust Pivot section, click on Affect Pivot Only. The pivot point for the base object will appear. 6) Move the pivot point to the origin of the level (X: 0.0 Y: 0.0 Z: 0.0). The second image further explains the above procedures.
7) With the red base object still selected, go to the Modify tab. 8) Rotate the base 180 degrees around the Z-Axis. The easiest way to do this is to follow the procedures below: a) Enter Rotate mode by clicking on the Rotate mode button. b) Right Click on the Rotate mode button to bring up the Rotate Transform Type-In window. c) Enter 180 into the Z: field under Absolute: World and hit enter. The object will be rotated around the pivot point and will now appear on the opposite side of the level the same distance from the origin that the blue base object is. The third image or last image further explains the above procedures and shows the final results of the base rotation.
|
Click to Open Larger Image in New Window
Click to Open Larger Image in New Window
Click to Open Larger Image in New Window
|
|
Now that the red base has been rotated, it must
be attached to the level and the holes in the mesh patched by adding
polygons and matching vertices and edges to satisfy the Sealed World Rules.
The base will then be detached from the level mesh into its own object again
and will have some minor material adjustments made. Finally, both
bases will then be attached to the reference frame. The following procedures will demonstrate the red base structure being attached to the level mesh, the level mesh and structure being modified to satisfy the Sealed World Rules, the faces that construct the red base being detached into a separate object, the modification of materials to distinguish the base structure, and the linking of both bases to the reference frame. |
|
Completing the red base structure: 1) Select the level object. 2) Under Edit Geometry, enter Attach mode by clicking on Attach. 3) The Attach Options window will appear, select Do Not Modify Mat IDs or Material. The base will temporarily have the "tutorial terrain\sky" material applied to it since this is the material for the "level" object. As a result, the textures or materials on the faces of the base will appear incorrect. This is fine since the "Do Not Modify Mat IDs or Material" option was selected and this will keep the material assignments for the base correct. When the faces for the base are selected and detached to form the separate red base object again, the "base structures" Multi/Sub-Object will be applied and the base will have the correct materials again. No additional work will be needed. The first image further explains the above procedures.
4) As demonstrated in the previous tutorial, remove the faces around the base. The second image further explains the above procedure and shows the final results of the procedure.
5) Create polygons to attach the base structure to the terrain mesh. Once completed, fix the texture coordinates for the terrain in the same manner demonstrated when doing this same procedure for the blue base. The third image further explains the above procedures as well as shows the end result of the above procedures.
6) Select all the faces that compose the base structure. 7) Under Edit Geometry, click on Detach. The Detach dialog window will appear. 8) In the Detach dialog window enter "red base" in the Detach as: field. 9) Click on OK. The fourth image further explains the above procedures.
10) Select the red base object. Open the Material Editor, select the "base structures" Multi/Sub-Object. 11) Click on Assign Material to Selection. 12) Close the Material Editor. The fifth image further explains the above procedures.
The base should now appear with the correct materials assigned and appearing on the faces of the structure. 13) To help distinguish this as the red base, the blue lights in the base hallway or tunnel will be turned into red lights by following the procedures below: a) Select the faces that compose the hallway lights. b) Apply Material ID 7 to these faces. c) Adjust the texture coordinates (Unwrap UVW). The sixth image further explains the above procedures as well as shows the final results for the above procedures.
14) Finally, attach the bases to the reference frame by doing the following: a) Select both the red base and blue base objects. b) Click on Select and Link. c) Click on Select by Name. The Select Parent window will appear. d) Select "frame" from the list. e) Click on Link. Both levels will now be a part of the level since they are linked to the frame. Since the vertices and corresponding edges for each base matches the terrain mesh, the Sealed World Rules are satisfied. The seventh and final 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
|
Player Clipping Techniques
|
It is sometimes necessary to create additional
collision geometry in the level that prohibits the ability of the player to
reach certain areas of the level or to help smooth the movement of the
player around certain geometry. This technique is sometimes referred
to as "player clipping". Geometry that is not rendered, but only
affects the player and vehicles is added to the existing geometry of the
level. Restricting access to certain areas of the level such as the tops of canyon walls, roofs of structures, pillars, etc... can be crucial in creating a good game play experience. The player must not be allowed to exploit the game environment and break the game mechanics. A good example are the Capture the Flag (CTF) game modes in Halo, if a player has the flag and can take it to an unexpected area where it is easily defended or they cannot be reached, this breaks the game. Fortunately, Halo does have mechanisms to help when objectives such as the flag or oddball get into odd areas, these items will eventually respawn or reset after a specific amount of time. Restricting the player is also often used to keep the player from seeing "behind the scenes" of the level by preventing the player from seeing past the edges or over the tops of the core geometry of the level, typically where the level geometry for the terrain mesh intersects with the faces used to render the sky model or sky box. The following tutorials will discuss the uses of and demonstrate the creation of the player clipping material and the implementation of player containment or player clipping.
|
|
Creating the "player clipping" material. The first step is to create a special material or shader that will not allow the player or vehicles to pass it but still allows objects and projectiles to pass. 1) As demonstrated before, a new Multi/Sub-Object will be created. Open the Material Editor and select an empty Multi/Sub-Object material group. This Material Group is currently set to a Standard Material. 2) Click on the Standard button to bring up the Material/Map Browser. 3) In the Material/Map Browser click on Multi/Sub-Object. 4) Click on OK. The first image further explains the above procedures.
5) This Multi\Sub-Object is going to be called "player clip". Type this name into the Multi\Sub-Object description window. 6) 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, 1 Sub-Material. 7) The Sub-Material is now going to be named and linked to images. To name or label Sub-Material ID 1 follow the procedures below. 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.
8) Enter the name "example_tutorial_playerclip*" into the name or label field. Notice the "*" Shader Symbol which denotes that this material will be treated by Tool and the game as collideable only, it will not render in the game. 9) 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 third image further explains the above procedures.
10) 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. b) Under the bitmaps directory there should be several .tif image files. Select the example_tutorial_playerclip.tif file. This image is used as a guide to see the player clipping surfaces in 3ds Max and will never appear in the game. Any image can be used. 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 fourth image further explains the above procedures.
To return to the previous options in the Material Editor window click on the Go to Parent button. 11) In the Material Editor, enable the display of the material by clicking on the Show Map in Viewport button. 12) The Sub-Material should be displayed on the Material Sample. 13) To return to the Multi/Sub-Object Basic Parameters click on the Go to Parent button. 14) Close the Material Editor window. The fifth 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
|
|
With the "player clipping" material created some
simple player clipping geometry will be created. The geometry created
to block the player must not have any open edges and must form a sealed
volume. The player clipping geometry follows the Sealed World Rules. The player clipping geometry is going to be kept as a separate object so that it can be better organized with its special material and so that it can be hidden or handled more easily in 3ds Max. The following procedures will demonstrate the implementation of player containment or player clipping. |
|
Creating player clipping or player collision geometry. To keep players from waiting or "camping" in the recessed portions of the teleporter gateways a "clip" plane is going to be created over the front faces of the teleporter gateways. 1) Select the blue base and hide the teleporter shield polygons or faces.  3) Under Edit Geometry click on Detach. The Detach dialog window appears. 4) Enter "player_clip" in the Detach as: field. 5) Click on OK. The first image further explains the above procedures.
6) Apply the player clip material to the object and assign the Sub-Material to the faces. a) Select the newly created player_clip object and apply the player clip Multi\Sub-Object material group. b) Select the faces and clear any Smoothing Groups and apply Material ID 1 to the faces. Perform Steps 1-6 on the red base to create the same player clipping plane for the teleporter gate on the red base. Both player clipping pieces of geometry should be attached together to form a single "player_clip" object. The second image further explains the above procedures.
The final set of player containment or player clipping geometry that will be created is a border around the edge of the surrounding hills. This barrier will prevent the player from getting on top of the hills and seeing past the edge of the world where there is no geometry since only the sky box is drawn past this border. 7) Select the level object. 8) Select the 2 faces that form the top of the sky. Delete these faces. The third image further explains the above procedures.
9) Select Edge mode. 10) Select all the edges that comprise the front edges of the surrounding hills. The fourth image further explains the above procedures.
11) While still in Edge mode, extrude these edges up to create new faces by holding down Shift while moving up in the Z-Axis. The fifth image further explains the above procedures.
12) Make the new vertices and edges even with the sky box vertices and edges. Follow the below procedures: a) Select Vertex mode and select the top most vertices of the newly created polygons. b) Click on the Top view. Under Edit Geometry click on View Align, this will make the vertices even in the XY plane. c) Now move the vertices to be even with the vertices at the top of the sky box. The sixth image further explains the above procedures and shows the final results of the above operations.
13) Remove any extra faces that may have resulted from extruding the edges. Once this is complete, create polygons (using the existing vertices) to seal the top of the world again so that it satisfies the Sealed World Rules. All of these faces should be made the +sky material by setting their Material ID to 1. This technique may seem cumbersome or wasteful but for the type of level that the tutorial level represents it is necessary in order to get the clipping planes to work properly, the level to export and compile properly, and to satisfy the Sealed World Rules. Remember that the number of faces used to construct the sky does not matter since the sky model gets rendered to these faces and the triangle count from the sky model is what will count in this instance. There are many ways to construct a game environment and its surrounding terrain and sky box surfaces. It is quite common for all the sky box faces to have their top vertices pulled to a single vertex in the center of the level at a very high distance in the Z-Axis. Sometimes, the sky faces are not set back as they are in the tutorial level, instead the sky box faces are used as the boundaries for the level and serve to keep the player from accessing any areas where the player's presence is not desired. It is recommended that for outdoor levels that have vehicles that there be quite a bit of space left in the Z-Axis. This allows weapons that have a long range and that can fire in an arc (such as the Fuel Rod Gun) to have room to fire without colliding with the ceiling or sky. It is also nice to allow the Halo physics to have room to work so that when vehicles get hit with explosions they have room to do flips and other spectacular vehicular acrobatics. The seventh image further explains the above procedures and shows the final results of the above operations.
14) Hide the newly created top faces of the level. Now, select all the faces that will compose the player clipping surfaces. 15) Under Edit Geometry, click on Detach. The Detach dialog window will appear. 16) Enter the name "player_clip_01" in the Detach as: field. 17) Click on OK. The eighth image further explains the above procedures and shows the final results of the above operations.
18) Apply the player clip material to the object and assign the Sub-Material to the faces. a) Select the newly created player_clip_01 object and apply the player clip Multi\Sub-Object material group. b) Select the faces and clear any Smoothing Groups and apply Material ID 1 to the faces. In the example picture the faces also had a simple box map projection applied to them (UVW Map), but this is not necessary, it just makes the faces easier to work with visually. The player_clip object was then attached to the player_clip_01 object to keep all the player_clip surfaces under one object. The player_clip object was then linked to the reference frame (frame object). The ninth image or final image further explains the above procedures and shows the final results of the above operations.
|
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
|
Placement of Portals
|
The final step to completing the core geometry
for the level is the addition of surfaces or planes that define portals.
These portals are used by the engine for several purposes. The primary function of these portals are as "visibility portals", portals that the Halo game engine uses to try and cull out objects that cannot be seen to improve performance by not rendering such objects. The portals in general help break up the level so that it can be handled in parts to help performance in general. Attributes can also be set for portals, such as ambient sounds to play in the portal as well as environmental audio effects. Portals can also be used to define weather volumes and fog volumes. There are 2 kinds of portals that are defined, "portals" and "exact portals". The following are descriptions for each: 1) Exact Portals: These are portals defined by surfaces or planes with the +exactportal material applied to them. Exact portals are created such that the faces (edges and vertices) match the surrounding geometry (edges and vertices). These faces in effect create a "seal". The volume that is between these surfaces or planes is an exact portal. The direction of the normals of the faces helps determine how the portal is defined. 2) Portals: These are portals defined by surfaces or planes with the +portal material applied to them. These portals are created by faces or planes that are used to divide the game environment. These planes must create a seal with the level, but do not have to match vertices and the associated edges with the surrounding geometry. These planes are much more loosely defined and placed in the level and are used to break or divide the level up into sections. The direction of the normals for the faces helps determine how the portal is defined. A volume defined as an Exact portal CAN have standard Portal areas defined within it and vice versa as long as the above rules outlined in their definitions are satisfied. However, an open ended or non-enclosed Portal cannot intersect an Exact portal, a "vis error" or rendering anomaly will occur. In other words, be careful to not let a Portal plane improperly divide or bisect an Exact portal volume. Portals can be used to help portal horizontally (looking left and right in the XY plane) AND vertically (looking up and over objects or geometry that vary in the Z-Axis). The tutorials below will demonstrate the creation and placement of planes that will define Portal volumes and Exact portal volumes.
|
|
The creation of the portal Multi/Sub-Object material group: The first step is to create the portal materials. 1) As demonstrated before, a new Multi/Sub-Object is created. Open the Material Editor and select an empty Multi/Sub-Object material group. This Material Group is currently set to a Standard Material. 2) Click on the Standard button to bring up the Material/Map Browser. 3) In the Material/Map Browser click on Multi/Sub-Object. 4) Click on OK. The first image further explains the above procedures.
5) This Multi\Sub-Object is going to be called "portal materials". Type this name into the Multi\Sub-Object description window. 6) 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. 7) Enter the names "+portal" into the name or label field for Sub-Material 1 and "+exactportal" into the name or label field for Sub-Material 2. These are Special Material names, more information on these materials as well as all Special Materials can be found in the Special Materials section in the Materials Overview reference section. The Diffuse colors for these materials were set and for each Sub-Material the Show Map in Viewport option was toggled on. The second image or last image further explains the above procedures.
|
Click to Open Larger Image in New Window
|
|
The procedures below will demonstrate the creation and placement of planes that will define Portal volumes and Exact portal volumes. |
|
The creation and placement of portals: The hallways for the 2 base structures (blue base and red base) will be made Exact portal volumes. Later, when the level is running in the game, use rasterizer_wireframe 1 to view the level and exit and enter the hallways to see how the level geometry and objects are not drawn from the player view as this portal volume is entered and exited. 1) Select the blue base. In Face mode, create 2 polygons that exactly fit the doorways of the hallways. 2) Make sure the normals for the faces point outwards, this will help define the volume between the faces. the normals can be viewed by clicking on the Show Normals check box under Selection. If the normals are not easily visible, the lengths of the visual representations of the normals can be increased using the Scale value. 3) Detach the faces for the Exact portals by clicking on Detach under Edit Geometry. The Detach dialog window will appear. 4) In the Detach as: field enter the name "base portals". 5) Click on OK. Repeat the above procedures 1-5 for the red base and combine the 8 faces that compose the portals into 1 object called "base portals". The first image further explains the above procedures.
6) Now select the "base portals" object and apply the "portal materials" Multi/Sub-Object. Once this is complete, assign the +exactportal material to the faces by selecting all the faces and setting the Material ID to 2 for the faces. Once this is complete, the "base portals" object should be linked to the "frame". Note that the portal materials are at 80% opacity, this is just a setting in the Sub-Material and has no effect in game, it is just used as a visual aid in 3ds Max. The two hallways have now been defined as Exact Portal volumes. The second image further explains the above procedures and shows the final results of the listed operations.
The level will now be divided using standard Portals. 7) Deselect all objects. Under Create click on Plane. 8) Enter the following values in the listed fields, Length Segs: 1 and Width Segs: 5 9) In the Right view, create the plane such that the edges extreme edges extend past the extents of the level. Take this plane and create 3 more planes for a total of 4 planes that run lengthwise "North" to "South". The third image further explains the above procedures and shows the final results of the listed operations.
10) Convert all the planes into an Editable Mesh (Edit Mesh) and Attach all the planes into 1 object called "terrain portals". 11) The planes and faces were all aligned to try and divide the level evenly. Vertices and the associated edges and faces were aligned along major edge boundaries in the level. The fourth image further explains the above procedures and shows the final results the above procedures.
12) To further subdivide the level into more portals, faces running "West" to "East" were created using the existing vertices and edges for the planes. Only the middle 4 edges and associated vertices were used. In addition, the edges were extended past the level boundaries. Make sure that the normals are consistent for all the faces, this will determine how the portal volumes are created. In the example, the faces running "East" to "West" have their normals pointing North, while the faces running "North" to "South" have their normals facing "East". 13) Select all the faces and Clear All the Smoothing Groups and apply Material ID 1 to all the faces to assign the +portal material. Once the above procedures are completed, link the "terrain portals" object to the reference frame "frame" object. The level has now been portalled. The fifth image or last image further explains the above procedures and shows the final results 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
|
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 2 |
|
The level geometry is now "complete" and can be
successfully exported and compiled and is ready to go through the steps that
will get it running in Halo.
As previously mentioned, a completed version or example version of the level created in the 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. Once the user has successfully completed the tutorials in Level Creation - Part 1 and Level Creation - Part 2 they can proceed to the next section Level Exporting. Please note that the section Level Exporting and the subsequent sections will assume that the end user has completed all of the examples and tutorials up to and including those in Level Creation - Part 2. The remaining sections in Multiplayer Level Design will use the completed "tutorial.max" file from these sections.
|


assignment 3 more html
overflow
"text-overflow:ellipsis" ：
This is some long text that will not fit in the box
"text-overflow:clip"：
This is some long text that will not fit in the box
imagine test
z-index
this is paragraph, and img will be in back of paragraph becasue z-index is -1
this is visable heading
this is invisiable heading
there is one invisiable heading up
inheritance
this paragraph test inheritance
clear
left
right


Heart disease can be classified into 4 stages(stage 1 to 4) based on severity of artery blockage. Artery blockage>50% indicates presence of heart disease. Higher the blockage, higher is the stage of heart disease. Stage 3 and 4 are called chronic heart disease and risk of heart attack at anyday in such patients in very high.


Ocala events
-
silence of the lambs sociological perspectives
Summer Brews
Put some peppermint oil in a squirt bottle with a little water and spray your garage and all door frames. . Someone in the comment section also suggested: vanilla extract and water. Use 1 part water and . You'll repel mosquitos, gnats, etc and smell good to boot. . You will find those flies drawn to the cup and gone forever!
http://pinterest.com/talpup/summer-brews/How Do You Get Rid of Fruit Flies? | The Housing Forum, the home ...
After cleaning, make a wick out of a paper towel, dip the wick into the peppermint extract, and set it on the counter. The smell will repel the fruit flies.
http://thehousingforum.com/how-do-you-get-rid-of-fruit-flies/
the value of visual arts education Upcoming events in Ocala
- Sponsored event
computer doesnt find external hard drive
Apr 6 - Dance It Studio
motorcycleing in myrtle beach early man language devleopment brain literacy
- Sponsored event
trans fat at room temperature
Apr 6 - Downtown Disney
congress and toxicology and meeting giant bird of paradise seeds
shooting star in sky Hottest Tickets
-
Apr 11how to store blueberreis
Amway Center -
Apr 28tree frogs with blak spos
Amway Center -
Jun 25auburn tigers navy youth bar tshirt
Bob Carr Performing Arts Center -
Mar 30adjusting 2005 dodge caravan headlights
Amway Center -
Aug 27gardening fairy cake kit
Amway Center -
Jun 21r v doldur 2000
Amway Center -
Sep 13manda acomni new jersey cheerleader
Francis Field -
Mar 17grambling state university financial statements
St Augustine Amphitheatre -
Oct 8the value of visual arts education
Amway Center -
May 4seboygan wi news paper
Bob Carr Performing Arts Center
Ocala's best venues
-
Flies - The Best Control 2
Good sanitation is the basic step in all fly management. 1. . lavender and/or evergreen or other essential oils and/or mint sprigs and/or geranium extracts and . Set a sponge in a saucer and soak it with oil of lavender to repel flies. 10. A pot of .
http://www.stephentvedten.com/31_Fly_Control.pdf -
Getting Rid of Fruit Flies and Fungus Gnats
Oct 17, 2011 . Fruit flies will likely first make their presence known in the kitchen . Dr. Bader suggest using Oil of Peppermint and Oil of Clove to repel flies as well as other remedies. . There is no way to extract the honey in the block wall.
http://www.redwormcomposting.com/worm-bin-creatures/getting-rid-of-fruit-flies-and-fungus-gnats/ -
Natural Insect Pest Control: Safe, Non-Toxic Methods & Solutions ...
Leave a few tea bags of mint tea near areas where the ants seem most active. . Neem oil is a natural vegetable oil extracted from the Neem tree in India. The leaves . A few drops of eucalyptus oil on a scrap of absorbant cloth will deter flies.
http://eartheasy.com/live_natpest_control.htmused cell pcs phone sprint
98 people's favorite
-
Natural Ways to Repel Biting Flies | eHow.co.uk
Some plants produce substances that can repel biting flies, such as horse flies, . Neem oil is extracted from the evergreen Azadirachta indica, native to India. . Marigolds and the mint pennyroyal are two examples that are easy to grow in your .
http://www.ehow.co.uk/info_8655714_natural-ways-repel-biting-flies.html -
Your Garden: Growing Herbs That Repel Insects & Other Critters ...
Mar 31, 2012 . Repels flies, fleas, mice, rats and ants. Mountain mint rubbed on pants can deter chiggers and ticks. An endangered . These extracts are also found to be a potent antioxidant and have antibacterial properties. Lemon Balm .
http://stealtharmour.wordpress.com/2012/03/31/your-garden-growing-herbs-that-repel-insects-other-critters-naturally-preppers-gardening-plants-herbs-tips-natural/


--- layout: post title: Mobile TV date: 2005-03-06 00:00:00 category: mobile ---
Wow - according to this interview with a guy at Nokia who's probably spent waaay more time thinking about TV content than I have, what people really want on their mobiles are not designed-for-mobile bits of video, but full broadcast stuff - what they see on their TV day-to-day.
That goes completely against what I've been anticipating, and whilst I'm suspicious that his view may be focus group-driven (asking people what they want, not watching them to find out)... he's seen the research and I haven't. Related Forum Nokia info lives here.


SMART PLANNER
Name : 123
Created: January 1, 2015
Due: February 1, 2015
Plan
Price
Domain name (1 year)
$10.00
Total: $385.00