This is currently part two of The Annotated Forge Manual, which remains a work in progress. This section is incomplete; I provide a link to the full manual at the end. I’ve also compiled a complete table of contents.
With annotations specifically detailing how Weland and Atque, Forge’s modern replacements, differ from Forge, and correcting numerous errata found within the manual. (However, thus far, I’ve only done the first nine pages – twenty-five are left.)
All my annotations are italicized; are either [bracketed], indented, or both; and conclude with –Ed. After this note, all text outside annotations will be Bungie’s (with occasional minor spelling or grammar corrections).
Please contact me if you notice any errors or omissions (besides the parts of the manual I haven’t gotten to, natch). If you need more context for this, I have a beginners’ mapmaking page that should hopefully provide precisely that.
–Aaron[Note: List items in a lighter font weight than others at their level link to a different page. See also the detailed table of contents for heading layers below the first two. –Ed.]
In this section we’ll be creating our first two polygon room. You’ll find that making a level is nearly as fun and challenging as playing it. Using the 2D Draw Mode we’ll be creating two interconnected polygons, and then “fill” them to make a valid 3D space. We’ll then go into the 3D Visual Mode to texture our newly-created room.
In Marathon and Forge, the common unit of measurement is the World Unit (WU).
[This is actually not at all true of Marathon: to avoid using floating-point math (which was extremely costly in the 1990s), it almost exclusively uses what I typically refer to as Internal Units. 1,024 Internal Units equate to 1 World Unit. It isn’t entirely true of Forge or Weland, either; some measurements, such as the ones you’ll get when you double-click on a point, are in Internal Units. –Ed.]
In the real world, a World Unit would be about 2 meters.
[Or would it? The official answer seems to be ‘¯\°_o/¯’. See the indispensable Marathon’s Story page for coverage of the player’s height, which is 819 Internal Units or roughly 0.7998 World Units. –Ed.]
Let’s take a closer look at some dimensions in Marathon…
Maps in Marathon can be up to 64 WU × 64 WU in area.
[It is inadvisable, however, to use the outermost 1/2 WU of the map boundary: thanks to a variable overflow, projectiles can wrap around to the other edge of the map. Because Aleph One is coded in C++, a language in which it is extremely costly to check for variable overflows, this bug is unlikely to be fixed anytime soon. Because the vanilla physics model has no projectiles that travel faster than 1 WU per game tick, this leaves us with roughly 63 × 63 WU² of usable space. This is also why it is inadvisable to make projectiles travel faster than 1 WU per tick.Incidentally, a more conservative guide than mine would probably recommend leaving 1 WU boundaries around maps, leaving 62 × 62 WU² of usable space; a less conservative one might argue that it’s entirely OK for maps to extend to the exact edge of usable space as long as mapmakers are fully aware of the circumstances in which projectiles wrap around and avoid spaces on the opposite sides of maps where they can do that. I see valid merits to both arguments, but I think ‘avoid the outermost 1/2 WU’ is a reasonable compromise for beginning mapmakers. –Ed.]
Heights can range from −9 WU to +9 WU.
[Weland gives you −32 WU to +31.999 WU, though for similar reasons, I recommend avoiding the top or bottom 1 WU. Also, note that if players are able to view any textures that extend more than 32 WU above or below their camera height, a hall of mirrors glitch will result. –Ed.]
This means you get a volume of 64 × 64 × 18 = 73,000 cubic world units or about 590,000 cubic meters to play around with in Forge. That’s a lot of space!
[Or, in Weland, with my suggested guidelines: 63 × 63 × 62 WU³ = 246,078 WU³ ≈ 1,968,624 m³. –Ed.]
All textures are 1 WU × 1WU.
[In Aleph One 1.7, the 2× and 4× transfer modes mean this is no longer true: textures may also be 2 WU × 2 WU or 4 WU × 4 WU. Note that, because the 2× or 4× transfer modes are a recent addition, you must use Vasara AF or a recent version of Visual Mode to use them. –Ed.]
To avoid obvious seams between the walls and floor, most corridors in Marathon are 1 WU tall and 1 WU wide. The player, which is 0.8 WU tall, can easily go blasting down these corridors. The highest step which the player can climb per step is about 0.2 WU tall.
[This is not remotely true. The highest step players can climb without any prior momentum is 341 Internal Units ≈ 0.3330 WU, or just under 1/3 WU. With prior momentum, players can climb even taller steps. However, I advise avoiding steps taller than 0.25 WU, or 1/4 WU, because they feel very awkward to climb. In fact, I almost exclusively use measurements of 0.125 WU, or 1/8 WU, for my staircases and for most elements of my maps, since this provides very fluid motion and plays quite nicely with Weland’s 1/8 WU grid size. However, 0.1 WU or 0.2 WU increments are also common. Note that the heights players can climb are among the few physics elements that are hard-coded into the engine. –Ed.]
When a map is created, Forge displays a window with what looks like a blank piece of graph paper. Evenly spaced on the grid there are vertices slightly darker than the others; these are the bounding corners of rectangles that are exactly one WU in size. The resolution of the map’s grid can be changed by using the Grid Manager (in the Special menu) [beneath the menubar –Ed.] or alternatively through use of the numeric keys 1 through 5. Pressing 1 will give a grid size of 1/8th WU and 5 a size of 2 WUs.
Open Forge and create a new level (select the New Level menu item or type Command-N). Next, give your level a name and select an environment and landscape. Finally, click on the Multiplayer Carnage checkbox since we’ll be creating a network level. That’s it, now hit the OK button.
You’ll be presented with a large size grid. Go to the tool bar and select the line tool. Now, click and hold at any vertex on the grid and drag the line to the next dark vertex so that the line is 1 WU in length. Notice that the line just dropped has a red point at each end; these are the vertices. Continue creating lines until a square is created. The outline should look something like this:
Now comes the most important step: select the Fill Tool from the palette and click inside the polygon outline you’ve just created. It will fill the newly-created outline, turning its insides white and making it a valid space in the 3D world. If all goes well, it should turn white.
To fill properly, a polygon must be convex. That means all its internal angles have to be less than [or equal to –Ed.] 180°. It also cannot have more than eight vertices. To build larger rooms or polygon shapes, make them out of multiple smaller polygons. Also, keep in mind that you cannot connect two lines together by dragging the vertex of one line onto the other. For example, if you create two parallel lines (that are not connected to each other in any way) and try to drag the vertex of one line onto the vertex of the other line, the points will not connect.
If you select one of the vertices of the square you just built and dragged it towards the diagonally opposite corner, you’ll notice that a red striped texture will appear in the polygon. This means that the polygon is now concave (non-convex).
[In Weland’s default color scheme, concave polygons appear as orange rather than as striped red, but this nonetheless signifies the same thing. –Ed.]
When you attempt to save a map that has a concave polygon or switch view modes, Forge will bring up a dialog with the polygon’s id number. When you hit OK, it will goto that polygon and select it for you. Here you can fix the polygon.
[Weland is a lot more forgiving with this – it will not provide any such warning. Which can actually be a serious problem, because if the player is ever able to stand within a concave polygon, the game will crash. Additionally, if you have a lot of overlapping geometry, it may not even be noticeable that a polygon is concave. In short, be careful when moving points. –Ed.]
Now that the first polygon has been filled, the temptation might be to go into Visual mode and see what it looks like. All movement in Marathon is based on the connectivity between polygons. If you ever drop the player into a room with no adjacent polygons, weird things will happen...try it and see!
Once a polygon has been filled, new lines can only be attached to its vertices, not along one of its sides.
[This is not strictly true in Weland, as long as it does not already have eight vertices. The ‘Split Lines Attached to Polygons’ option in Preferences makes it possible to do precisely this. Note that it currently has a bug wherein sides that are attached to multiple polygons will be marked solid, regardless of whether they were originally. –Ed.]
Go ahead and add another polygon adjacent to your square. It should look something like this:
Once filled, this new polygon will connect with the first one as long as they share a common side. Before you can go into Visual Mode, you will need to create a starting position (or entry point for the player).
[If there is not already a player object anywhere on a map that contains at least one polygon, Weland will automatically create one at the center of the first polygon filled whenever you attempt to save it or go into Visual Mode, so this step is only necessary in Forge. –Ed.]
Select the Object tool (skull [pepper –Ed.]) and click in one of your polygons. The Edit Object dialog [panel –Ed.] will appear:
(To be continued – for now, you can read the rest here)