Marathon: The Annotated Anvil Help Balloons

(how to edit physics, shapes, & sounds files, with amendments, addenda, & asides for ShapeFusion)

This page reproduces, in its entirety,⁽¹⁾ Bungie’s in-program help for Anvil, their official utility for editing Marathon Infinity physics, shapes, and sounds files. Nearly all of this is also applicable to the modern replacement ShapeFusion, which does not include any of this information. I’ve formatted it with occasional asides and corrections, which I’ve marked in [bracketed italics], with -Ed. preceding the closing bracket.

The Anvil help balloons, collectively, make up one of three major Anvil features I’m aware of that ShapeFusion does not currently replicate. The other two are:

  1. The ability to create a new Marathon Infinity physics model – the “Marathon Infinity” physics model included with Marathon Infinity is actually a Marathon 2 physics model. The actual physics for Marathon Infinity are available on Simplici7y.
  2. “Clone into Collection” for Shapes files. See the relevant section at the end of this very document for ways to approximate this. (Advance warning: They both require a fair bit of tech savvy. Sorry.)

I’ve made annotations correcting errors in the original help balloons and noting where and how ShapeFusion’s behavior differs from Anvil’s. Please contact me if you notice any errors or omissions.

My beginners’ mapmaking page and advanced mapmaking page may provide more context for much of this.

Table of Contents

  1. Physics Models
    1. Aliens
      1. Appearance and Sounds
      2. Combat Settings
      3. Physical Constants
      4. Behavior Settings
      5. Immunities and Weaknesses
    2. Effects
    3. Shots
    4. Physics
    5. Weapons
      1. Weapon Definition
      2. Trigger Settings
  2. Sounds
  3. Shapes
    1. Bitmaps and Color Tables
    2. Frames and Sequences
      1. Sequences
      2. Frames
    3. Clone into Collection (not currently implemented in ShapeFusion)
  4. Endnotes
  1. Physics Models

    1. Aliens

      The "Aliens" section of the physics model stores information about all of the moving, thinking, and attacking objects in the game, such as monsters and BOBs.
      1. Appearance and Sounds

        • Appearance: The appearance of a character is determined by a graphic collection index, a color table index, and a list of sequence IDs. Select each edit field for more information.
          • Graphic Collection: The Graphic Collection must be a number between 0 and 31. It indicates which collection of graphics in the Shapes file will be used to draw this character. To preview the graphics collections, open a Shapes file.
          • Color Table: The Color Table must be a number between 0 and the number of tables defined for this collection. It indicates which collection of colors will be used to draw this character. To preview the color tables and graphics, open a Shapes file.
          • Sequence IDs: Each type of character behavior may have a unique Sequence ID to describe the animation that Marathon should play during the character's action. To preview Sequences, open a Shapes file.
            • Hit: This animation sequence will be played whenever the character takes damage from a projectile. To not display any animation when the character is hit, enter -1.
            • Hard Dying: This animation sequence will be played whenever the character's vitality falls below 0 due to massive, or explosive, damage. When it completes, the character will become "Dead." To not display a Dying animation, enter -1.
            • Soft Dying: This animation sequence will be played whenever the character's vitality falls below 0 due to non-explosive damage. When it completes, the character will become "Dead." To not display a Dying animation, enter -1.
            • Hard Dead: This animation sequence (which typically has only one frame) will be displayed at the location where the character dies (due to massive, or explosive, damage) until the level is cleared. If the character disappears when it dies, enter -1.
            • Soft Dead: This animation sequence (which typically has only one frame) will be displayed at the location where the character dies (due to non-explosive damage) until the level is cleared. If the character disappears when it dies, enter -1.
            • Stationary: This sequence will be played whenever the character remains stationary. You may not enter a -1 here.
            • Moving: This sequence will be played whenever the character moves. You may not enter a -1 here.
            • Teleport In: This sequence will be played during the teleport-in action of the character. Marathon will add a teleport-in visual effect to the sequence.
            • Teleport Out: This sequence will be played during the teleport-out action of the character. Marathon will add a teleport-out visual effect to the sequence.
        • Sounds: Not all of the sounds related to a character are stored in the Physics Model; each sequence may optionally contain up to three other sounds. To edit these sounds, open a Shapes file.
          • Activation: This sound will be played whenever the character becomes active.
          • Friendly Activation: This sound will be played when a character friendly to the player decides that the player is no longer friendly and should become dogmeat. [This can also apply if the character turns on a non-player - for instance, a monster marked as Berserker will play this when it goes berserk, regardless of whether it turned on the player specifically. -Ed.]
          • Clear: This sound is played when a character can find no more enemies in range. [But only if they are set to teleport out. -Ed.]
          • Kill: This sound is played when a character kills a target.
          • Apology: This sound is played when a character's projectile hits the player.
          • Friendly Fire: This sound is played when one of the player's projectiles [hits -Ed.] the character.
          • Flaming: This sound is played when the character dies from damage of type "Flame."
          • Random: This sound will be played at random times depending on the random sound mask, below.
          • Random Sound Mask: This value determines how often the character will play its random sound. It is a value between 0 and 31 where each unique power of 2 increases the chance of playing the sound (so linearly increasing probabilities are 1,3,7,15,31)
          • Sound Pitch: This value will pitch every sound played by the character. Enter 1.0 for normal playback, higher values for higher pitches, and lower values (greater than 0.0) for lower pitches.

        Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

      2. Combat Settings

        • Attack Frequency: The attack frequency indicates how often the character will launch an attack (but not how many projectiles will be fired during that attack). The value measures the number of ticks between attacks (where 1 tick = 1/30th of a second).
        • Melee Attack: The character will use its melee attack if it is within the melee attack range of the character and a melee attack exists (note that if the Chooses Weapon Randomly flag is checked the character will choose an attack at random).
        • Ranged Attack: The character will use its ranged attack if it is not within the melee attack range of the character and a ranged attack exists (note that if the Chooses Weapon Randomly flag is checked the character will choose an attack at random).
          • Type: The attack type corresponds to a projectile type (see the Shots section of the model) which will be created when the character attacks.
          • Repetitions: When the attack is launched, the character will create a number of projectiles equal to the attack repetitions value.
          • Error: The attack error will be added randomly in plus or minus degrees (out of 512) to each attack launched by the character.
          • Range: The attack range is the maximum range at which the character will launch the attack, not the maximum range that the projectile may travel (the projectile's maximum range is determined by the projectile record; see the Shots section).
          • Sequence ID: This sequence will be played during the character's attack; note that this sequence is also where the sound played during the attack is referenced. To review sequences, open a Shapes file.
          • dx: The dx value will be added to the character's current position in the x-direction (left-to-right) to find the starting location of the attack projectile. [As far as I can ascertain, this is incorrect, and the descriptions and labels for "dx" and "dy" should be swapped. -Ed.
          • dy: The dy value will be added to the character's current position in the y-direction (front-to-back) to find the starting location of the attack projectile. [As far as I can ascertain, this is incorrect, and the descriptions and labels for "dx" and "dy" should be swapped. -Ed.
          • dz: The dz value will be added to the character's current position in the z-direction (top-to-bottom) to find the starting location of the attack projectile.
        • Shrapnel: If a shrapnel radius and shrapnel type are provided, the character will inflict damage on nearby characters when it dies.
          • Shrapnel Radius: The shrapnel radius acts like the area of effect of a projectile. Every character within the radius of the character when it dies will suffer the damage described below.
          • Damage Type: The damage type must be specified so that immunities and weaknesses can be applied to whatever the shrapnel hits. To change immunities and weaknesses, edit the Monsters section of the model.
          • Alien Damage: If the shrapnel damage is inflicted by the aliens, Marathon needs to know so that it can make the Kindergarten and Easy levels easier, and the Major Damage and Total Carnage levels harder. [The latter part of this is incorrect – Alien damage does not increase above Normal. -Ed.]
          • Base Damage: The damage base is the minimum amount of damage that will be applied to the target. A random amount between 0 and the damage random (below) will also be applied.
          • Random Damage: The damage base (above) is the minimum amount of damage that will be applied to the target. A random amount between 0 and the damage random will also be applied. [As far as I can tell, the game actually adds a random number from 0 to (damage random - 1), inclusive, to the base damage; if damage random is 0, then it just ignores the field. -Ed.]
          • Scale: The shrapnel damage scale should always be 1.0000, if shrapnel is desired.
        • Impact Effects: Impact effects are played when the character suffers damage from a projectile. The melee impact effect is used only for projectiles that have the 'melee' flag set.
          • Ranged: When the character is hit by a ranged projectile (that is, any projectile that does not have the 'melee' flag set), this effect, if one is specified, will be played.
          • Melee: When the character is hit by a melee projectile (that is, any projectile that has the 'melee' flag set), this effect, if one is specified, will be played.

        Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

      3. Physical Constants

        • Vitality: The vitality of the character measures how much damage it can endure before dying. Any projectile, polygon effect, or shrapnel effect that causes damage to the character decreases this value.
        • Radius: The radius of the character measures how narrow a gap in the map it can pass through and need not match the radius of the graphic used to draw it.
        • Height: The height of the character measures how short a window in the map it can pass through and need not match the height of the graphic used to draw.
        • Movement: The constants in this section determine how the character moves around the map.
          • Speed: Characters always move at the same speed [on the same difficulty setting if their "Alien" flag is set; on any difficulty setting if it isn't -Ed.]. Note that to translate a player speed (as in a Physics record) to a character speed, multiply by 512.
          • Terminal Velocity: The terminal velocity measures the maximum rate at which the character can move through space, as when falling.
          • Gravity: The gravity field measures how quickly the character will fall when it is no longer suspended by its own motion.
          • Min. Ledge Jump: The minimum ledge jump measures the largest downwards jump that the character will take willingly.
          • Max. Ledge Jump: The maximum ledge jump measures the large upwards jump that the character can make.
          • External Velocity Scale: The external velocity scale acts like inertial mass to determine how objects behave near explosions. 0.0 will cause objects to remain at rest after explosions, while 1.0 will make them act like fighters.
          • Hover Height: If the "Hovers" flag is set (see Behavior Constants), the character will hover at this height when moving.
          • Door Retry Mask: This field determines how often the character will attempt to open doors. It is a value between 0 and 31 where each unique power of 2 increases the chance of playing the sound (so linearly increasing probabilities are 1,3,7,15,31)
        • Perception: The constants in this section determine how well the character can detect and track other characters on the map.
          • Visual Range: The visual range is maximum range at which the character can become aware of another character's presence on the map, assuming that the intervening polygons are lit. [As far as I can tell, this is incorrect: its dependent clause should be struck and replaced with "if the character is not invisible." -Ed.]
          • Dark Visual Range: The dark visual range is maximum range at which the character can become aware of another characters presence on the map, if the intervening polygons are not lit. [As far as I can tell, this is also incorrect: its dependent clause should be struck and replaced with "if the character is invisible", just in case that wasn't already obvious from my previous note. -Ed.]
          • Intelligence: Intelligence measures the maximum number of polygons through which the character "keep a lock" on an enemy character and continue to follow and attack it. [Setting this above 8 seems to cause some serious issues. Don't do it. -Ed.]
        • Carrying Item Type: When the character dies, if the damage that caused the death was not of type Explosion or Flame, it will create one of the items specified here.
        • Contrail Effect: The contrail effect, if one is specified, will be played at periodical intervals whenever the character is moving. [As far as I can tell, this too is incorrect: its dependent clause should be struck and replaced with "whenever the character is dying, if the 'delayed hard death' flag is set". -Ed.]

        Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

      4. Behavior Settings

        • Class: Every character has a "Class" which is used to determine friend and enemy relationships between the character and the other targets on the map.
        • Friends: Any character class that is checked here will be treated as a "Friend." The character will not attack friends and will not attack a friend that accidentally hits it.
        • Enemies: Any character class that is checked here will be treated as an "Enemy." The character will immediately attack enemies and will move to decrease the range to any enemy that it is aware of.
        • Flags: The flags are used to activate a range of useful and interesting behaviors on each character. Some of them require additional numeric fields to be set.
          • Flies: If this flag is set, the character can change its height at will instead of staying on the floor.
          • Is Alien: If this flag is set, Marathon will make this monster tougher on hard difficulty settings and wimpier on easy difficulty settings. [The Aleph One wiki has a complete list of changes. -Ed.]
          • Major: Each monster may have a Major and a Minor variant, which Marathon will choose between in order to make a level harder or easier. If this flag is set, the monster is a Major variant.
          • Minor: Each monster may have a Major and a Minor variant, which Marathon will choose between in order to make a level harder or easier. If this flag is set, the monster is a Minor variant.
          • Cannot Skip: To make a level easier, Marathon will sometimes "skip" a character (remove it from the level). If the character should never be skipped (i.e. necessary civilians), check this.
          • Floats: If this flag is set, the character will float at its "hover height" (see Physical Constants) above the floor.
          • Cannot Attack: If this flag is set, the character cannot launch any attacks. [This is incorrect: they can attack, but only sporadically and haphazardly. The “disabled juggernauts” found in Eternal’s “Second to Last of the Mohicans” (starting in 1.2) and “Killing the Giants as They Sleep” (starting in 1.3 preview 5) provide examples of this. -Ed.]
          • Uses Sniper Ledges: If this flag is set, the character will stay on a ledge that provides a good vantage point instead of charging into combat with an enemy.
          • Chooses Weapon Randomly: If this flag is set, the character will choose between its melee and ranged attack randomly instead of consulting the range to the target.
          • Invisible: If this flag is set, the character will be drawn in a darker shade of its background, making it much harder to see. The amount of invisibility will be equivalent to a Marine with one Invisibility powerup.
          • Subtly Invisible: If this flag is set, the character will be drawn in almost exactly the same color as its background. The amount of invisibility will be equivalent to a Marine with 2 Invisibility powerups.
          • Kamikaze: If this flag is set, the character will always attempt to move closer to an enemy and will explode (inflict shrapnel damage) when it reaches one.
          • Berserker: If this flag is set, the character will move and attack with greater speed and ferocity when it is nearly dead. [It will also attack anything around it, regardless of whether it would ordinarily consider said monsters allies or not. -Ed.]
          • Enlarged: If this flag is set, the character will be drawn at 125% of its normal size.
          • Delayed Hard Death: If this flag is set, the character will not play its hard death sequence until it reaches the ground. [This means that it will play the Soft Dying sequence until it reaches the ground, then the Hard Dying sequence when it hits the ground. Its corpse will use the Hard Dead sequence. -Ed.]
          • Fires Symmetrically: If this flag is set, the character will create two projectiles for each attack, symmetrically oriented on either side of its body.
          • Nuclear Hard Death: If this flag is set, the character will create a special "nuclear explosion" effect when it hits the ground.
          • Can't Fire Backwards: If this flag is set, the character cannot spin 180 degrees, fire, and then turn back again (it looks bad for big enemies).
          • Die in Flames: If this flag is set, the character will use the special "dying in flames" sequence indicated in the Appearance section if it dies due to Flame damage.
          • Stay with Clear Shot: If this flag is set, the character will remain stationary and continue firing instead of moving closer to a target when it has a clear shot.
          • Tiny: If this flag is set, the character will be drawn at 25% of its normal size.
          • Attacks Immediately: If this flag is set, the character will attack as soon as it teleports into the level rather than waiting for its normal attack delay.
          • Not Afraid of Water: If this flag is set, the character will enter water polygons as though they were clear.
          • Not Afraid of Sewage: If this flag is set, the character will enter sewage polygons as though they were clear.
          • Not Afraid of Lava: If this flag is set, the character will enter lava polygons as though they were clear.
          • Not Afraid of Goo: If this flag is set, the character will enter goo polygons as though they were clear.
          • Can Teleport Under Liquid: If this flag is set, the character will be able to teleport into [or out of -Ed.] the game underneath any kind of media. [Note also that, if this flag isn't set and the character would be called on to teleport in underneath a liquid (e.g., a player walks on an Invisible or Dual Monster Trigger polygon within the same zone), the character will never teleport in, even if they're again called on to activate after the liquid is lowered. -Ed.]

        Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

      5. Immunities and Weaknesses

        • Immunities: If a character is marked "Immune" to a type of damage, it will suffer no loss of vitality when it is hit by a projectile or shrapnel effect inflicting that class of damage. [It will also not get angry at any monster or player that hits it with said damage type. -Ed.]
        • If a character is marked "Weak" to a type of damage, it will suffer a much greater loss of vitality when it is hit by a projectile or shrapnel effect inflicting that class of damage. [Specifically, twice as much. -Ed.]
        • Explosion: Explosion damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • Electrical Staff: Pfhor staff damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • Projectile: Projectile damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • Absorbed: Absorbed damage is specified by the Damage Type field of a projectile or shrapnel effect, or whenever the player takes damage while using an invulnerability powerup.
        • Flame: Flame damage is specified by the Damage Type field of a projectile or shrapnel effect. It also may trigger the special "dying in flames" sequence.
        • Claws: Claws damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • Alien Projectile: Alien Projectile damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • Hulk Slap: Hulk Slap damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • Compiler Bolt: S'pht Bolt damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • Fusion Bolt: Fusion bolt damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • Hunter Bolt: Hunter bolt damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • Fist: Fist damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • Teleporter: Teleporter damage is specified by the Damage Type field of a projectile or shrapnel effect, or whenever a character teleports into the same space occupied by another character.
        • S'pht'Kr Bolt: S'pht'Kr damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • F'lickta Claws: Flick'ta [sic -Ed.] claws damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • F'lickta Projectile: Flick'ta [sic -Ed.] glob damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • Crushing: Crushing damage is specified by the Damage Type field of a projectile or shrapnel effect, or by any map polygon that reduces the height of the polygon to less than the character's height.
        • Lava: Lava damage is specified by the Damage Type field of a projectile or shrapnel effect, or by a Lava map polygon [or by a Minor Ouch polygon -Ed.].
        • Suffocation: Suffocation damage is specified by the Damage Type field of a projectile or shrapnel effect, or whenever the player runs out of oxygen.
        • Goo: Goo explosion damage is specified by the Damage Type field of a projectile or shrapnel effect, or by a Goo map polygon [or by a Major Ouch polygon -Ed.].
        • Energy Drain: Energy Drain damage is specified by the Damage Type field of a projectile or shrapnel effect. [Damage of this type can strip a player's shields to 0, but it cannot actually kill them. -Ed.]
        • Oxygen Drain: Oxygen Drain damage is specified by the Damage Type field of a projectile or shrapnel effect. [Damage of this type can strip a player's oxygen to 0, but it cannot actually kill them. If you need to kill a player once their oxygen would fall below 0, make sure to include Lua code along these lines:
          function Triggers.player_damaged(p, aggressor_player, aggressor_monster,
          damage_type, damage_amount, projectile)
          	-- must manually kill player if oxygen drain should reduce oxygen below 0
          	if damage_type == "oxygen drain" then
          		if p._previous_oxygen ~= nil
          		and p._previous_oxygen - damage_amount < 0 then
          		-- remove invincibility (i.e., immunity to suffocation)
          		p.invincibility_duration = 0 
          		p:damage(p.life + 1, "suffocation")
          		end
          		p._previous_oxygen = p.oxygen -- track player oxygen
          	end
          end
          
          function Triggers.postidle()
          	for p in Players() do
          		-- track oxygen for Triggers.player_damaged - otherwise, can't
          		-- know what their oxygen levels were before oxygen drain damage
          		p._previous_oxygen = p.oxygen
          	end
          end
          If you already have Triggers.player_damaged or Triggers.postidle functions, make sure to rename variables as needed and integrate the above code into said functions. Additionally, if you do direct Oxygen Drain damage to players in any of your Lua scripts, you'll need to implement similar code for those as well. -Ed.]
        • Drone Bolt: Drone Bolt damage is specified by the Damage Type field of a projectile or shrapnel effect.
        • Shotgun: Shotgun damage is specified by the Damage Type field of a projectile or shrapnel effect.

      Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

    2. Effects

      The "Effects" section of the physics model stores information about small animated effects, such as explosions and splashes.
      • Graphic Collection: The Graphic Collection must be a number between 0 and 31. It indicates which collection of graphics in the Shapes file will be used to draw this effect. To preview the graphics collections, open a Shapes file.
      • Color Table: The Color Table must be a number between 0 and the number of tables defined for this collection. It indicates which collection of colors will be used to draw this effect. To preview the color tables and graphics, open a Shapes file.
      • Sequence: The sequence specified here will be played from the specified graphic collection using the specified color table.
      • Sound Pitch: The sounds referenced by the effect's graphic sequence can be scaled up or down by adjusting the sound pitch, here. Choose values greater than 1.0 for high-pitched sounds, or less than 1.0 (but greater than 0.0) for low-pitched sounds.
      • Delay: The delay field is used internally by Marathon. You cannot change its value.
      • Delay Sound: If a delay is specified, you may also specify a delay sound which will be played during the delay.
      • End when animation loops: This box should nearly always be checked. If it is, when the effect's sequence reaches its loop frame, the effect will end. If this box is not checked the sequence will loop indefinitely.
      • End when transfer animation loops: If a special transfer animation is used for the effect (i.e. teleport effects), this box has the same effect as the "end when animation loops" box, above.
      • Sound Only: If this box is checked, the effect will not create any visual sequence but will instead only play the sounds associated with the sequence. Note that the effect automatically ends when the sound is played.
      • Media effect: This box must be checked if the effect is a "media effect", that is, an impact effect used when a projectile hits a media polygon layer (like a pool of water).

      Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

    3. Shots

      The "Shots" section of the physics model stores information about objects that are fired by weapons or monsters and that travel until they hit a target.
      • Graphic Collection: The Graphic Collection must be a number between 0 and 31. It indicates which collection of graphics in the Shapes file will be used to draw this projectile. Note that 31 is used as a special value for "no graphics".
      • Color Table: The Color Table must be a number between 0 and the number of tables defined for this collection. It indicates which collection of colors will be used to draw this projectile. Note that if no graphic is to appear you should enter the value 7.
      • Sequence ID: The Sequence ID must be the number of a sequence in the graphic collection specified above. It determines which sequence will be used to draw the projectile. To preview sequences, open a Shapes file.
      • Damage: The damage specified here will be applied to whatever target the projectile hits.
      • Damage Type: The damage type must be specified so that immunities and weaknesses can be applied to whatever the projectile hits. The damage type is also used to determine the "screen flash" effect when a player is hit.
      • Damage Base: The damage base is the minimum amount of damage that will be applied to the target. A random amount between 0 and the damage random (below) will also be applied.
      • Damage Random: The damage base (above) is the minimum amount of damage that will be applied to the target. A random amount between 0 and the damage random will also be applied. [As far as I can tell, the game actually adds a random number from 0 to (damage random - 1), inclusive, to the base damage; if damage random is 0, then it just ignores the field. -Ed.]
      • Damage Scale: The damage scale is nearly always 1.0; Marathon changes the fist damage scale internally when the player is running.
      • Alien Damage: If the projectile is fired by an alien, check this box so Marathon can make the aliens easier on Kindergarten and Easy and harder on Major Damage and Total Carnage. [The latter part of this is incorrect - Alien damage does not increase above Normal. -Ed.]
      • Flyby Sound: If a flyby sound is specified, the projectile will play it to any player that the projectile passes close to without hitting.
      • Rebound Sound: If a rebound sound is specified and the "rebounds from floor" box is checked, the rebound sound will be played whenever the projectile bounces off the floor.
      • Sound Pitch: To pitch the sound higher, enter a value greater than 1.0. To pitch the sound lower, enter a value less than 1.0 but greater than 0.0.
      • Radius: The radius of the projectile need not be the same as its graphic. A smaller radius will allow the weapon to pass through a smaller opening in the map.
      • Area of Effect: The damage specified above will be applied to every character within the area of effect of the weapon when it detonates.
      • Speed: The speed field determines how quickly the projectile travels across the map. [The speed is in internal units per game tick. Divide by 1,024 to get world units per game tick; multiply the result by 30 to get world units per second. -Ed.]
      • Maximum Range: If the projectile reaches its maximum range without impacting a target, it will disappear. If a maximum range of -1 is specified, the projectile will always travel until it hits a target.
      • Detonation Effect: If a detonation effect is specified, the requested effect will be played at the detonation point when the projectile hits a target. To preview effects, open the Effects section of the model.
      • Media Detonation Effect: The media detonation effect is played when the projectile hits some type of media (e.g. water).
      • Contrail: If ticks between contrails (below) is positive, the contrail effect will be created at the specified interval until the maximum number of controls is created.
      • Ticks between contrails: The contrail effect will be created at the interval specified by this field (where 1 tick = 1/30th of a second).
      • Maximum contrails: If this field is not -1, it will be used as the maximum number of contrails created by the projectile.
      • Media impact: This field may specify a type of projectile that will immediately hit the player if the specified projectile is used under media (i.e. when a fusion gun is fired under water).
      • Flags: The flags are used to activate a range of useful and interesting behaviors on each projectile. Some of them require additional numeric fields to be set.
        • Guided: If the guided flag is activated, the projectile will seek out a player if it is fired by a monster. It has no effect for projectiles created by the player.
        • Stop when animation loops: If this box is checked, when the shot's sequence reaches its loop frame, the effect will end. If this box is not checked the sequence will loop until the shot hits a target.
        • Persistent: If this box is checked, the shot will stop moving and doing damage when it hits a target, but will not disappear until its sequence completes.
        • Alien: Check this box to inform Marathon that a given shot will only be created by aliens rather than by the player or friendly civilians, so that it can be made easier on lower difficulty settings. [This means that it will be slower on lower difficulties and faster on higher difficulties. Contrast this with Alien Damage, which only reduces damage on easier difficulties and does not increase damage on higher ones. -Ed.]
        • Affected by gravity: If this box is checked, the shot will drop under the effects of gravity.
        • No horizontal error: If this box is checked, the shot will not suffer any horizontal error when fired (see Error under Weapons, or Alien Attack Definitions).
        • No vertical error: If this box is checked, the shot will not suffer any vertical error when fired (see Error under Weapons, or Alien Attack Definitions).
        • Can toggle control panels: If this box is checked, the shot can toggle control panels and flip switches in the map.
        • Positive vertical error: If this box is checked, the shot will only have positive (i.e. up) vertical error when fired. This is a useful effect when the shot must appear to come out of the top of the firing character.
        • Melee projectile: If this box is checked, Marathon will use the melee projectile impact effect for the shot's impact results.
        • Persistent and virulent: If this box is checked, the shot will continue until reaching its maximum range or a wall, regardless of how many mobile targets it hits until then. [Note that it will change owner each time it hits a target. -Ed.]
        • Usually pass transparent side: If this box is checked, the shot will usually, but not always, pass through a polygon edge containing a partially-transparent texture. If it does not pass the edge, it will impact on the transparent edge. [This is disregarded for any lines marked as "decorative"; all projectiles will always pass partially-transparent textures on either side of such lines, regardless of projectile type or whether the line is marked as "solid". -Ed.]
        • Sometimes pass transparent side: If this box is checked, the shot will sometimes, but not always, pass through a polygon edge containing a partially-transparent texture. If it does not pass the edge, it will impact on the transparent edge. [As with "Usually pass transparent side", the "decorative" flag overrides this and causes all projectiles to pass such edges. -Ed.]
        • Doubly affected by gravity: If this box is checked, the shot will fall at twice the normal gravity rate. Note that the "affected by gravity" box, above, need not be checked.
        • Rebounds from floor: If this box is checked, the shot will rebound from the floor when it hits, unless its forward motion is less than a minimum.
        • Penetrates liquids: If this box is checked, the shot will travel freely under any media type (e.g. water, sewage, etc.).
        • Becomes item on detonation: This box is used internally by Marathon for shots that need to be converted to an item when they finish their motion. You cannot change this behavior. [If this box is checked, the projectile will also not do any damage. -Ed.]
        • Bleeding projectile: If this box is checked, the shot will cause the special "ranged impact effect" when it hits a target.
        • Horizontal wander: If this box is checked, the shot will suffer random horizontal error perpendicular to the direction of movement.
        • Vertical wander: If this box is checked, the shot will suffer random vertical error perpendicular to the direction of movement.
        • Affected by half gravity: If this box is checked, the shot will fall in half-gravity maps.
        • Penetrates liquid boundary: (MInf only) If this box is checked, the shot can pass freely through a media layer (e.g. from underwater to above).

      Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

    4. Physics

      The "Physics" section of the physics model stores information about basic constants of the simulation, such as gravity and the player's top speed.
      • Max. forward velocity: Maximum forward velocity is the maximum speed that the player may move when the forward key is pressed.
      • Max. backward velocity: Max backward velocity is the maximum speed that the player may move when the backward key is pressed.
      • Max. perpendicular velocity: Max perpendicular velocity is the maximum speed for side-step movement by the player.
      • Acceleration: The acceleration field determines how the quickly the player's speed will increase when moving forward, backwards, or side-stepping.
      • Deceleration: The deceleration field determines how quickly the player will come to a stop when a key is pressed to reverse direction.
      • Airborne deceleration: The airborne deceleration field determines how quickly the player will lose forward-backward velocity while airborne.
      • Gravitational acceleration: The gravitational acceleration field determines how quickly the player will accelerate due to gravity. If it is zero, the player can launch himself by firing weapons down. If it is negative, the player will fly off the ground.
      • Climbing acceleration: The climbing acceleration field determines how quickly the player will gain vertical velocity when climbing stairs.
      • Terminal velocity: Terminal velocity is the maximum speed the player may achieve when in free-fall.
      • External deceleration: The external deceleration field determines how quickly the character comes to a stop when a force is exerted on it by another character or effect.
      • Angular acceleration: The angular acceleration field determines how quickly the player can accelerate his angular velocity and therefore how quickly a turn can be started.
      • Angular deceleration: The angular deceleration field determines how quickly the player can stop a turn.
      • Maximum angular velocity: The maximum angular velocity is the maximum speed at which the player may turn.
      • Angular recentering velocity: The angular recentering velocity determines how quickly the player stops turning.
      • Head angular velocity: The head angular velocity field determines how quickly a look-left or look-right can be made.
      • Head angular maximum: The head angular maximum field is the maximum number of degrees (out of 512) that the player's head may be turned to the left or right.
      • Maximum elevation: The maximum elevation should always be 42.6666.
      • External angular deceleration: The external angular deceleration determines how quickly the player's turning will come to a stop if an external force prevents it.
      • Step delta: The step delta determines the distance that the player must travel for a complete viewpoint "bounce" to occur.
      • Step amplitude: The step amplitude determines how much the viewpoint "bounces" during steps.
      • Radius: The radius of the player need not be the same size as the player's graphic. A smaller radius will allow the player to fit through smaller openings in the map. [No it won't. This is dependent upon polygon exclusion zones, which are hard-coded at 512 internal units in diameter. -Ed.]
      • Height: The height of the player need not be the same size as the player's graphic. A smaller height will allow the player to fit through smaller windows in the map. [This is correct, however. -Ed.]
      • Dead height: The dead height field determines the height of the camera when the player is dead and lying on the ground.
      • Camera height: The camera height determines the normal elevation of the viewpoint that is drawn to the screen.
      • Splash height: The splash height determines the elevation of the viewpoint that is drawn to the screen when the player has died.
      • Half camera separation: The half-camera separation determines the focal length of the perspective projection. Don't change it unless you know what you're doing.

      Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

    5. Weapons

      The "Weapons" section of the physics model stores information about the weapons that players may pick up and use, such as shot type, ammunition, and sounds.
      1. Weapon Definition

        • Item Type: This field establishes the connection between a type of item (that can be in the map) and a weapon class.
        • Weapon Class: Melee weapons always use the melee impact effect. Single function weapons fire the main trigger on both keys. Dual function weapons can "charge" to perform their secondary trigger. Two-fisted weapons can be used two at once. Multipurpose weapons have two separate ammo types.
        • Appearance: The constants here determine how the weapon will be drawn when the player is holding it.
          • Graphic Collection: The Graphic Collection must be a number between 0 and 31. It indicates which collection of graphics in the Shapes file will be used to draw this weapon. To preview the graphics collections, open a Shapes file.
          • Color Table: The Color Table must be a number between 0 and the number of tables defined for this collection. It indicates which collection of colors will be used to draw this weapon. To preview the color tables and graphics, open a Shapes file.
          • Idle: The idle sequence ID will be used to draw the weapon whenever it is not firing, reloading, or charging. [Note that idle sequences using more than one frame are bugged, and I do not recommend using them. -Ed.]
          • Firing: The firing sequence ID will be used to draw the weapon while it is firing. Note that the length of the firing sequence determines how quickly the weapon can fire.
          • Reloading: The reloading sequence ID will be played whenever the weapon reloads its primary trigger. A multipurpose weapon reloading its secondary trigger may not have a custom graphic sequence.
          • Charging: The charging sequence ID will be played while the weapon is charging. If the charging sequence ID is -1, the normal idle sequence will be used.
          • Charged: The charged sequence ID will be played while the weapon is charged. Note that the "charged weapon sound" from the secondary trigger will also be played whenever the weapon is charged.
          • Flash Intensity: The muzzle flash intensity of the weapon is set by this field. Note that the flash will not appear unless the flash decay time (below) is larger than 0.
        • Height and Idle
          • Idle Height: The height at which the weapon idles is determined by this field. It is highly dependent on the size and origin of the idle graphic frames and should not be changed unless you are also changing the idle graphic.
          • Bob Amplitude: The degree of vertical "bob," or movement with the player's steps, that the weapon exhibits, is set here.
          • Kick Height: The kick height is added to the idle height of the weapon to find the starting position for the "firing" sequence.
          • Reload Height: The reload height is used to draw the "reloading" sequence. It should not be changed unless you are also changing the reload graphic.
          • Idle Width: The idle width should nearly always be 0.5; it only requires different values for weapons that are not drawn in the bottom-center of the field.
          • Horizontal Amplitude: The horizontal amplitude field should always be 0.0.
        • Timing: All of the times given here are measured in ticks (1/30ths of a second).
          • Ready time: The "ready time" is the number of ticks required to bring the weapon from un-ready to ready-to-fire status.
          • Await reload: The "await reload" time is the number of ticks required after the last shot from a clip is fired before the "reloading" sequence is begun. Once the "reloading" sequence has begun the player cannot change weapons.
          • Loading: The "loading" time is the number of ticks required to load a new clip into the weapon (either primary or secondary trigger).
          • Finish loading: The "finish loading" time is the number of ticks required after the clip is loaded before the weapon can be fired again.
          • Flash decay time: The "flash decay time" is the number of ticks during which the weapon's muzzle flash fades. Note that the weapon must have a flash intensity, above, for a muzzle flash to appear.
        • Flags: The flags are used to activate a range of useful and interesting behaviors on each weapon. Some of them require additional fields to be set.
          • Automatic: If the automatic flag is set, the weapon will continue to fire as long as the firing key is held down. Note that shots will fire only a rapidly as the firing sequence can be played.
          • Disappears after use: If the disappears after use flag is set, the weapon will disappear when it runs out of ammunition.
          • Plays instant shell casing sound: If this flag is set, the weapon will play a shell casing sound at the same time as the firing sound.
          • Overloads: If this flag is set and the weapon's class is "dual-purpose," the weapon will explode if it is charged and not fired within a length of time. [That length is apparently one minute. The weapon also does not need to be marked as "Dual-Function" for this to occur. -Ed.]
          • Random ammo on pickup: If this flag is set, the weapon will have a random amount of ammunition for its primary trigger when it is picked up. [That amount being based on the primary trigger's rounds per magazine; it can have anywhere from half the number specified to the number specified. If this and "Triggers Share Ammo" are both checked, the game ignores the secondary trigger's rounds per magazine when the weapon is picked up; however, if it is ever reloaded, the game appears to select whichever value is larger. -Ed.]
          • Reloads in one hand: If this flag is set and the weapon's class is "two-fisted," the weapon in the other hand can continue to fire while the first weapon reloads.
          • Fires out of phase: If this flag is set, the weapon can fire two-handed without waiting for the other hand's animation to complete.
          • Fires under liquids: If this flag is set, the weapon can produce its projectile under any media type (e.g. water). Note that the projectile must have the "penetrates media" flag set in order to do anything.
          • Triggers share ammo: If this flag is set, the primary and secondary triggers use the same ammunition value.
          • Angular flapping on 2nd trigger: If this flag is set, the secondary trigger will introduce an automatic x-axis error to the left or right of the player's target point.

        Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

      2. Trigger Settings

        • Main/Secondary Triggers: Whenever a weapon is fired, Marathon will use the information in a trigger record to create the appropriate effect. Note that the secondary trigger information will not be used unless the weapon is a multi-purpose or dual-purpose weapon.
        • Projectile: The type of projectile that will be created when the trigger fires is indicated here. To change projectile statistics, edit the "Shots" section of the model.
        • Rounds/magazine: The number of shots available per clip of ammunition is set here. Note that Marathon may not be able to draw the graphic for remaining ammo if you set this number higher than the default, but that the ammo will still be available.
        • Ammo type: Select the item class that is used to re-arm the trigger here.
        • Sounds: Each trigger may have a custom set of sounds for its behavior set here. Note that unlike many other Marathon behaviors, the graphic sequences are not used to store weapon sounds, as different sounds are needed for each trigger.
          • Firing: This sound will be played whenever the weapon fires.
          • Click: This sound will be played if the weapon is fired without sufficient ammunition.
          • Charging: This sound will be played if the weapon is a dual-purpose weapon during the charging time.
          • Shell Casing: This sound will be played at random intervals when the weapon is fired, if a shell casing graphic is specified.
          • Reloading: This sound will be played when the trigger reloads.
          • Charged: This sound will be played periodically when a dual-purpose weapon is charged. It will be played with increasing frequency and pitch as the charge time increases, until the weapon overloads and explodes [if it is set to do so -Ed.].
        • Ticks/round: If a value other than -1 is entered here, it will be used as the delay between shots when the weapon fires (in ticks of 1/30th of a second). Note that the minimum time for a weapon to fire is always the time for the weapons firing sequence.
        • Recovery Ticks: The recovery time measures the required number of ticks required after a firing animation completes before the weapon can be fired again.
        • Charging Ticks: If a value other than 0 is entered here, it will be used as the required time to charge the trigger before it can be fired. Note that this should ONLY have a value other than 0 if the weapon is a dual-purpose weapon.
        • Recoil Magnitude: If a value other than 0 is entered here, the player will be pushed backwards with a force proportional to the number entered here when the weapon fires (note that a negative value will pull the character forwards).
        • Theta Error: The firing, or "theta" error, is the maximum error applied to the weapon's aim when it is fired. A higher error will result in a spray of inaccurate fire.
        • dx: The value entered here will be added to the player's location in the x-axis (left to right) when the weapon fires to find the starting location for the projectile.
        • dz: The value entered here will be added to the player's location in the z-axis (front to back) when the weapon fires to find the starting location for the projectile.
        • Burst Count: The burst count is the number of projectiles that will be created every time the weapon is fired. Note that there must be enough ammo loaded in the weapon to create the full number of projectiles.
        • Shell casing type: If the weapon should have a shell-casing animation, select one here. Note that the SMG animation is only available in Marathon Infinity.

    Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

  2. Sounds

    Each Sound may contain up to 5 permutations. You may select the Sound to edit from this menu and then select a permutation from the list box, below.
    • 8-Bit: Check this button to listen to and edit the 8-bit (lower-quality, smaller) sounds. [Note that “8-bit” and “16-bit” slots are just names. It’s entirely possible to put 16-bit sounds into both, or 8-bit sounds into both, or a 16-bit sample in the 8-bit slot and an 8-bit sample in the 16-bit slot (why would you do this? Please don’t do this). If a sound is present in only the “8-bit” slot and the player has 16-bit sound sources selected, Aleph One plays the sound in the “8-bit” slot. If both are present, it plays the sound in the “16-bit” slot. If a sound is only present in the “16-bit” slot and the player has 8-bit sound sources selected, the game won’t play a sound. Thus, I strongly recommend always including sounds in the “8-bit” slot. -Ed.]
    • 16-Bit: Check this button to listen to and edit the 16-bit (high-quality, larger) sounds. [Again, these are just names; see my note directly above for more. -Ed.]
    • List Box: This list box displays a list of the permutations assigned to the current sound, above. You may change or insert new sounds by choosing "Insert Permutation" from the Sounds menu.
    • Sounds: This displays the number of permutations stored in the current sound. You may insert new sounds by selecting "Insert Permutation" from the Sounds menu.
    • Volume: The Volume setting can be used to play the sound more softly, or more loudly, than all other sounds. [This is incorrect. Counter-intuitively, the Volume setting affects how far away the sound is audible, not its in-game volume. -Ed.]
    • Cannot be restarted: If the cannot be restarted flag is checked, Marathon will check to see if the sound is already being played before playing it again (i.e. the Bob's voices).
    • Resists pitch changes: If the resist pitch changes flag is set, the sound will not be pitch-shifted, even if a monster is trying to pitch change all of its sounds.
    • Can't change pitch: If the can't change pitch flag is set, the sound will never change pitch.
    • Can't be obstructed: If the can't be obstructed flag is set, the sound will never be obstructed by walls.
    • Can't be media obstructed: If the can't be media obstructed flag is set, the sound will never be obstructed by media layers.
    • Is Ambient: The is ambient flag must be set for Marathon to save memory by not loading ambient sounds if they are disabled in the Marathon Preferences.

    Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

  3. Shapes

    1. Bitmaps and Color Tables

      The Bitmaps fields of a Shape file contain the actual image data for the shapes and the color tables used to draw them. You may insert new shapes or change color tables by changing the Bitmaps records.
      • Display: Choose "Bitmaps" from this menu to view and edit the bitmaps for this collection, or "Color Tables" to view and edit the color tables for the collection.
      • Bitmaps: These are the bitmaps stored in the current collection. Click on one of them and choose Paste from the Edit menu to insert a new graphic, or choose "Import PICT" from the Shape menu to load a PICT graphic.
      • Color Table: Choose the color table you want to view the current bitmaps with from this menu.

      Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

    2. Frames and Sequences

      The Sequences fields of a Shape file contain the lists of frames that are used to animate objects during the game and draw them from multiple perspectives. They also contain information about synchronized sounds to be played during the sequences.
      1. Sequences

        Frames and Views are organized into Sequences, which is a single action taken by a Marathon character, weapon, or effect. You may edit the sequences here.
        • Collection: Select a graphic collection to edit from this menu. Note that not all of the fields visible in the Sequences editor will apply to all collections (especially walls and landscapes).
        • Scale Factor: If a given sequence does not specify a scale factor, the scale factor given here will be used to scale up the graphics for that collection. [In ShapeFusion, the scale factor must be specified, or it will default to 0 and not display the graphic. Moreover, due to a bug, it sometimes shows you the default scale factor for a new frame for which it hasn't inserted said scale factor. You should always specify this manually when inserting a new frame. -Ed.]
        • Sequence: Select a sequence from the list box to edit it.
        • Ticks per frame: Each frame in the sequence will be displayed for one or more ticks (30ths of a second). You may change the number of ticks here.
        • Scale factor (this shape): If this sequence should have a different scale factor from that of the entire collection, enter it here. [In ShapeFusion, as noted above, this should be done manually for every frame, due to a bug that causes it to regard the scale factor of each frame as 0 unless it has been manually specified. (It will display the default scale factor of this collection, but it won’t save the frame that way.) -Ed.]
        • Transfer Mode: The Transfer Mode determines how the shape will be drawn to the screen. You may mark a shape as transparent here, for example. Note that to make a monster transparent you should change the transparent flag in the physics model, not the shape mode.
        • Transfer mode period: If the transfer mode requires timing, enter the period (in ticks) for the mode here.
        • First frame sound: If a sound is specified here, it will be played on the first frame of the sequence.
        • Key frame sound: If a sound is specified here, it will be played on a special "key" frame of the sequence. You may set the key frame below.
        • Last frame sound: If a sound is specified here, it will be played on the last frame of the sequence.
        • # of views: You may specify 1, 4, 5, or 8 frames for the sequence, depending on whether it should change at 90° (4), 72° (5), or 45° (8) increments, or not at all (1).
        • Views in Sequence: Select a view in the sequence here.
        • Frames in View: Select a frame in the sequence here. Frames will automatically be assigned in consecutive order. [This is not true of ShapeFusion, wherein you can and in fact must assign frames in whatever order you choose. This allows you to reuse one frame as many times as you like, but also requires you to create new frames yourself when you need them. -Ed.]
        • Frames/view: Enter the number of frames per view of the sequence here.
        • Loop Frame: If you enter a loop frame index here, the sequence will loop when the index is reached.
        • Key Frame: Enter a key frame index here to mark when the key frame sound should be played, when damage should be applied, and when monsters should attack.

        Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

      2. Frames

        • Select a frame from the list here. To create new frames, you must extend the views of a sequence. [This is not true in ShapeFusion, wherein you must create frames independently of sequences. -Ed.]
        • X-mirror: If x-mirroring is activated, the frame will be drawn with left and right reversed.
        • Y-mirror: If y-mirroring is activated, the frame will be drawn with top and bottom reversed.
        • Keypoint obscured: (Used only for torsos and legs:) If the keypoint obscured flag is set, the player's torso will be drawn behind the legs.
        • Bitmap Index: Enter the number of a bitmap here to specify which bitmap the frame should use to draw.
        • Min. Light Intensity: Enter the minimum light intensity required to make a shape visible here. [That is, the frame will always be drawn with at least this light intensity. -Ed.]
        • X Origin: Enter the x-coordinate of the shape origin here. The origin point needs to be held constant between frames of a sequence.
        • Y Origin: Enter the y-coordinate of the shape origin here. The origin point needs to be held constant between frames of a sequence.
        • X Keypoint: Enter the x-coordinate of the shape keypoint here. The keypoint is used only for matching player torsos to legs. [Though Bungie seems to have used it to figure out where to flip X-mirrored shapes as well. -Ed.]
        • Y Keypoint: Enter the y-coordinate of the shape keypoint here. The keypoint is used only for matching player torsos to legs.

      Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

    3. Clone into Collection

      When you "Clone" a collection, all of the bitmaps, color tables, sequences, and frames associated with that collection will be duplicated into the current collection. You may then edit the new collection as you wish. [This functionality does not currently exist in ShapeFusion. Emulating Anvil or using Hopper’s Perl scripts are the only ways I’m aware of to accomplish this on a modern operating system, apart from painstakingly copying all the data over and inevitably making errors in the process. -Ed.]

    Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index

Endnotes

# Note
1 Well, almost. I’ve omitted what appear to be ‘dummy balloons’ referring to features that weren’t implemented in Anvil and don’t appear in ShapeFusion either. They may have been documentation for features included in development releases of Anvil that Bungie thought better of including in the finished product; not having been a Bungie employee circa 1996, I couldn’t say for sure.

Back to top · Table of contents · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index