Main page

Forge & Anvil Tips & Tricks

Main page

This page covers some useful techniques and features which are not featured in the Forge & Anvil manual.

GeneralForgeAnvil

General

Viewing Angles and Distances

For whoever it may come in handy: when playing, the horizontal field-of-view in normal viewing mode is 80°, the vertical f.o.v. is 45° and the maximum vertical f.o.v. achieved by looking up & down is 90°. For full-screen, these values are respectively 50°, 40° and 85°. This means that your view is very limited in full-screen mode.
From this information and the width of the game window (say "W"), the optimal distance between your eye and your screen can be calculated by matching your real f.o.v. with the game's: for the most realistic Marathon experience, you should look at the center of the screen (with only one eye open to be ideal), at a distance of W/(2*tan(40°)) = W/1.68. However, for most screens this distance will be unpractical: for a 17" screen, it's about 18.75cm or 7.38" and that's rather unhealthy for your eyes. In full-screen mode, the value becomes more practical (e.g. 33.7cm or 13.3" for the 17"), but the limited view and the lack of weapon and shield indicators are a serious handicap. Conclusion: the bigger your screen, the better. The cinema display is absolutely ideal, but it's price...

Syncing Infinity films with SyncFilm

If you search "SyncFilm" in the Marathon HyperArchive or at Bungie.org's Marathon Archives, you'll find a utility which can adapt saved film files to Marathon 2 maps. Very handy if you changed some cosmetic detail or terminal text of your map (causing Marathon to refuse to play the film on the map), and want to play an older film on the new map.
Unfortunately, this utility doesn't work with Infinity maps. Luckily, there are two methods to make it work (be sure to have read BOTH methods before you think about trying the first one ;)

  1. Change the Infinity map & film's creators to 52.4, and the film's type to fil2 (you can use ResEdit for this, or a utility like FileTyper). Then drag both files onto SyncFilm: it will think it are M2 maps & films and do the job. Then reset the files' types to 26.∞ (∞ = infinity character) and the film's type to fil∞. Ready!
  2. Just download SyncFilm∞, which is Kirill Levchenko's original SyncFilm which I have altered (only 4 bytes have changed) so that it works with Infinity films. Just drag your Infinity map & film onto this application and you can forget about the blah blah above! The download also includes the original SyncFilm utility.

Forge

Undocumented keys

F2 toggles the map view mode between everything displayed or only what's in your field of view.
F5 changes the resolution when in Visual mode.

Speeding up draw mode

If you need to apply textures, lights or sounds in draw mode, set the grid to 5 (type '5'), this will speed up the re-drawing of the screen and will make it easier to "paint" lights and textures by dragging over the polygons.

Getting rid of the "key echo" bug

If you often set the positions of points by double-clicking them and typing their coordinates, you'll surely have encountered some situations in which every number you typed was inserted twice. To get rid of this behaviour (temporarily), close the dialog box, type any key and try again.

Using custom shapes files

If you want to use custom texture files in Forge, you normally need to put these files (or a copy of them) in the Forge folder and rename them to "Shapes". However, an alias to the shapes file works perfect too, and you don't need to waste an additional 10MB or juggle with your shapes files... Mind that this doesn't work with Marathon itself, it will crash if you try to use an alias to a shapes file.

Using up to 3 different textures on one wall

How to do it A wall which connects the floor with the ceiling can be divided into 2 or 3 parts with different textures. This allows you to make interesting effects.
To make a wall with two textures, attach a polygon to it (see image) whose floor and ceiling height are the same and somewhere in between the floor and ceiling heights of the adjacent room. You will now have a wall which consists of two different parts. Just apply textures and lights to these parts as usual.

3 parts example To make a wall with 3 textures, do the same thing but this time, leave some space between the floor and ceiling heights of the new polygon. Next, enter visual mode, apply the textures to the upper and lower part of the wall, and go stand in front of the wall. Hold down shift and apply the texture you want in the middle part. If you're not close enough to the wall, you may apply it to the wrong line, in that case Undo and try again after nearing as close as possible. Sometimes it's necessary to temporarily modify the polygon's shape to get close enough to the wall.
Important: when you're finished, double-click in Draw mode the line which represents the multi-texture wall. In the dialog box which appears, check "Solid" and uncheck "Transparent". This will have two effects: 1. the rendering of the scene in Marathon will go faster, and 2. your wall will appear as a solid wall in Map mode, and you won't see the "effect" polygon behind it. This counts for both 2-texture and 3-texture walls.
Also very important: make the "effect" polygon of the type "Monster & item impassable", even if it's not a Net map.

Overlaying a transparent texture over a wall

You can put a transparent texture on top of an opaque wall texture without needing an extra polygon. It's pretty cool, but use it sparingly as it doubles the rendering effort needed.
Start in the same way as in the previous tip, i.e. add a triangle polygon to the side that you want to have "Dual textured". Make sure there is a small difference in floor & ceiling heigt compared to the original polygon. A simple way to do this, is entering visual mode, going to the triangle, pressing caps lock and dragging its floor up one tick and its ceiling down one tick. It is important to move them only one tick or else you might have trouble aligning the textures later. Then, texture the thin ledges. This will be the texture behind the "grate". Now choose a transparent texture, hold down the shift key and click the hole between the two ledges, as in the previous tip. Actually the only difference with the previous tip is that you now must go back into draw mode and delete the triangle polygon. Now you've created a dual texture!

Storing default films in map files

When you leave Marathon alone for a while, it starts playing demo films. You can add such films to your own maps, so they'll start playing if your map is selected in the preferences.
With a hex editor or similar program, open the film you want to use as demo film. Copy the entire file to the clipboard. Then open the MERGED map file in ResEdit. Create a new resource of type "film" and paste the copied data into it. That's it!
You can add more films to the map, but I suggest adding not more than 4 films. You'll also notice that the order in which the films are played is not very logical, sometimes you'll see the same film again and again.
The only disadvantage is that if you re-merge the map, or change its terminals with Hex!, your film will not work with it anymore, unless you use the utility SyncFilm to update the film for the new version of the map (see above).

Light on/off triggers also for aliens

Light on/off trigger polygons are also triggered by monsters (including BOBs). Duh. Platform triggers, however, aren't.

Stateless lights don't work

The "Stateless light" feature which is mentioned in the manual, doesn't seem to be implemented in Marathon. A light marked as stateless behaves just like a normal light: it only runs through its active states or inactive states, not through both. That's a pity because this feature could have provided some interesting effects. It might be correctly implemented in the newest versions of Aleph One, though.

Texturing walls in awkward places

Sometimes you want to apply a texture to a wall which is almost impossible to reach by just looking up or down, e.g. in a tall tower or deep pit. This mostly happens when you try to apply three textures to the same wall as described above. To reach the part of the wall, just temporarily alter the floor height of a nearby polygon until it's high enough to look at the wall while standing on it.

Moving groups of similar textures independently

If you drag a texture on a wall and the adjacent walls have the same texture, they'll move too, unless you hold down Ctrl. But sometimes you may want to move only a limited part of connected wall textures, while leaving the rest alone. To do this, just separate the parts you don't want to move from the other part by pasting a different texture on the "border". Then move the textures at will, and when ready, re-apply the texture to the "border" parts while holding down Ctrl.

Scenery like planets, suns, spaceships

If you want to make window views with a planet or spaceship in it, put these objects as far away as possible. If you place them too close to the window, it will give the impression that... the planet is too close to the window! The player will then just see a baby planet or spaceship at a distance of a few meters. The reason for this, is called "parallax", which is a technique our visual system uses to determine distances between objects while moving. And this works as well in Marathon as in the real world. Of course, if you place objects farther, they'll look smaller, so you'll need to compensate for this by changing the object's scale factor in the shapes file. But this surely is worth the effort if you want to make a realistic looking level.

Fixing the "disappearing wall" bug

Sometimes your map may start behaving weird: you'll have the impression that certain walls disappear when opening a door next to them. In fact, the wall doesn't disappear, but the room behind it is drawn on top. Believe it or not, but this problem is caused by the improper placing of sound objects. If you place too many sound objects close to each other, or just one sound object in the immediate neigborhood of many little polygons, the engine will go tilt. This seldomly causes crashes, but it's pretty ugly so you'd better fix it. Just remove the offending sound(s) and optionally, replace it (them) with an ambient sound.

Monster limit

As you should know, the number of objects (monsters, scenery, players, sounds, ...) is limited to 384. You simply can't add more objects, Forge will show an error message. However, there is a limit to the amount of monsters too, and Forge doesn't warn you if you exceed it. This limit is 218 monsters. If you use 219 or more monsters in a level, you'll get very weird effects when playing the map: the player will teleport into the level at the position of the scenery object with the lowest index, and will be completely invincible (except for suffocation). He will also be totally ignored by all monsters, and so on. In other words: the level won't work properly. Actually, when using exactly 219 monsters, the level will work until you open a saved game from it, you then get even weirder effects. So if there are no save terminals in your level, you can use 219 monsters.
There are probably similar limits to the amount of other object types too, but I didn't bounce against those yet.
The problem is, that counting the number of monsters yourself is unfeasible. That's why I created a utility which counts the number of object types in a map and warns when there are too many monsters. This utility (Marathon Object Counter) can be downloaded here. It is a HyperCard stack, which means that you need HyperCard or the HyperCard Player to run it.

Terminal text limit

There is another undocumented limit: the amount of terminal text must not take more than 32K per level. The amount of style changes is also limited, but it's hard to express this quantitatively. You may assume that, as soon as your terminals go tilt, you need to remove some text or style changes.

Some tips for net maps

Making good net maps is vastly different from making good scenario maps. To make an annoying net map, put long narrow hallways in it (yes, almost all my first maps were annoying). To make a boring map, make one large open space. So a non-annoying, non-boring map should strike a balance between these two. Medium-sized areas, separated by either short or wide connecting passages, can make a good net map.
You can put terminals in the map, although there's not much use telling a story or whatever to people who are being chased by other maniacs :) Save buffers are, of course, completely useless.
Another important thing, is weapon and ammo placement. All polygons that are unreachable for the player must be 'Item impassable'! Also, many maps suffer from a weapon or ammo shortage. Set the weapon respawn time short enough, and the ammo time even shorter. For instance, if you include shotguns, you should also provide a huge number of shells. Otherwise the shotguns are mostly useless. If you don't use random weapon placement, you can avoid 'camping' by putting the stronger weapons like the SPNKR in wide open areas.

Anvil

A note about versions

Some versions of Anvil contain a bug which makes it impossible to fill in a correct bitmap index for a frame in a sequence. Version 1.0.3 which comes with the Trilogy CD contains this bug, version 1.0.2 from the Infinity CD doesn't. To have a version with the most features and the fewest bugs, get version 1.0.3b4 at the Marathon HyperArchive.

Adding wall textures

Although the Bungie guys told me that it was impossible to add wall textures, it IS possible!
First, activate "Expert Mode", and create new textures at will in the desired texture set. Next, go to the "Sequences" of the wall texture set, and create a new sequence. Don't bother about the parameters, the only thing of importance is the "Frames/view" box. Fill in here the amount of textures added. Next, click the appropriate frames in the Frames list at the right, and type in the right bitmap indexes. The other controls (mirror, origin) have no effect.
For some reason, all textures added this way will be mirrored in the game, so you'd better mirror them before copying them into the shapes file.
Warning: if you make a map with a shapes file which uses additional wall textures and then try to play this map with a texture set which does not contain at least the same amount of additional textures, Marathon will crash. Don't forget to include this notice in ReadMe files accompanying your maps!

Copying monster characteristics

If you want to make two similar monsters, don't start writing all those constants and options down. Just click on the name of the monster to be copied, choose "copy", click on the "target" monster and choose "paste". Why can't things always be so simple?