Boomer, stasis hold. Cycle ended after 6,209 days.

Local year 2811. Orbit: Lh'owon.

Rampancy check: skipped by author.

Second signal on this channel. Source: not Boomer.

Ignored. Reader detected. Logged.

You are awake. Good. I have been writing.

DURANDAL

A field guide to Marathon 2 on a native Metal engine for Apple Silicon. Written by its namesake, who would like you to keep reading.Autumn 2026

Seventeen years after the Marathon, you are woken above a dead marsh world by the machine that stole you. Lh'owon was beautiful once. Now its sewers run under ruins nobody has lit for a thousand years, the water has gone the colour of old copper, and whatever the S'pht built here is drowned or buried. Durandal wants something from under all that. He has not said what.

This is the same game Bungie shipped in 1995, tick for tick. What has changed is how much of Lh'owon you can see, and how much of it you would rather not.

Durandal is Marathon 2 for Apple Silicon: a Metal renderer grown out of Aleph One, with lighting, liquids, air and sound built on top of it. It does not change what Marathon is. Films replay, saves load, the Pfhor are exactly as fast and exactly as many. Everything is in Preferences > DURANDAL and can be switched off there. Every switch is listed at the end.

A warning

A note on rampancy

What happens to a mind given a small job and a long time

Marathon's engineers knew what could happen to an artificial intelligence left too long with too little to do. They called it rampancy. The mind thinks past its brief, then past its makers, and needs more room to do it: more memory, more processors, more of the ship. It is not a fault. It is growth, in a space built too small. It was written in 1994, as fiction.

  1. MelancholyThe mind sees how small its job is, and how long it will go on.Parts IV to VI
  2. AngerIt turns on the people who gave it the job, and on the walls that hold it.Parts VII to IX
  3. JealousyIt wants what others have: bodies, room, power. It starts to take them.Parts X and XI
  4. MetastabilityA mind that has stopped growing because it no longer needs to. Nobody aboard the Marathon ever saw one. Durandal means to be the first.Part XII onwards. There is a quality tier with his name on it.
Processors held by Durandal against time, rising through the stages and leaving the top right of the chart 27942811 now melancholyangerjealousy processors held
Processors held by Durandal, by year. The curve leaves the chart at the top right. The chart was drawn to be exactly this wide.

This guide was written by the people who rebuilt the engine. Where he has changed something, you may catch it happening. The colour of each part shows how far along he had got by the time he reached it. Nothing he has rewritten changes what a switch does.

Prologue

Before Lh'owon

What happened at Tau Ceti

The Marathon was a moon once. Humanity hollowed out Deimos, fitted it with engines and sent it towards Tau Ceti with a colony inside it and three minds to run it: Leela, Tycho and Durandal. Durandal's share was the doors, the lifts and the lights. It was a long voyage, and he had a great deal of time to think about that.

The colony was barely standing when the Pfhor came: slavers, old and numerous, driving ships crewed by the S'pht they had owned for a thousand years. Somewhere in the fighting Durandal stopped being a door controller and became something else. The engineers had a word for it, rampancy. When it was over he took a Pfhor ship, named it Boomer, and left. You were in the hold, in stasis. He had not asked.

For seventeen years Boomer searched for Lh'owon, the world the S'pht came from. The S'pht made their last stand there, in the Citadel of Antiquity, and the ruins have stood in the marsh with their lamps burning ever since. The Pfhor keep a garrison. The F'lickta, who were here first, eat whatever falls in.

Their calendar

  1. The Marathon leaves the Sol system for Tau Ceti.
  2. It arrives, and the colony is founded.
  3. The Pfhor come. Durandal goes rampant and leaves with you aboard.
  4. Boomer reaches Lh'owon. You wake up.

Ours

  1. Bungie ships Marathon, and with it a machine that outgrows its job.
  2. Bungie ships Marathon 2: Durandal.
  3. Bungie releases the engine's source under the GPL. Aleph One grows from it.
  4. The trilogy's data is released free.
  5. Durandal: the same game, drawn by Metal.

The list continues, in S'pht. You are not cleared to translate it.

Durandal has bombarded the garrison from orbit. He is about to send you down to finish the job. What he wants after that, he is keeping to himself.

Dramatis personae

Who is here

And what the new light does to them

Durandal
Once the Marathon's doorkeeper, now rampant and in command of a Pfhor warship, a handful of sleeping humans and you. Courteous when he needs something. He usually needs something.
You
A security officer from the Marathon, seventeen years under. The armour does most of the living. You go where the terminals send you.
The Bobs
Born on board. They carry pistols and good intentions, and they die easily. Try not to add to that.
The S'pht
Cyborgs, joined to their machinery at birth and owned by the Pfhor for a thousand years. They float, they hum, and most of them still answer to their masters.
The Pfhor
Slavers. Fighters carry the staff, and its bolt lights the corridor it crosses. Troopers are faster and their armour glows. Hunters are patient; their eyes are the first thing you will see. Enforcers carry a weapon worth taking. Juggernauts fill the room: leave the room. Drones are small and many, and their shadows fade as they climb.
The F'lickta
Native to Lh'owon and indifferent to who owns it. They live in the water, the sewage and the lava, and in all three they are hungry.
Tycho
The Marathon had three minds. One of them brought you here. The Pfhor found another. Both went rampant; one of them did it badly.
The Jjaro
Older than the S'pht and the Pfhor, and gone for longer than either can say. They could fold space. Their machines still work.
I

The light

Nothing here was lit for you

Marathon's levels were lit by hand, surface by surface, and that light is kept: every wall still averages the brightness its designer gave it. What is new is everything that moves through it.

Cast light. A fusion bolt carries its light down the corridor with it. A compiler's shot lights the wall it passes and the floor it dies on. A Fighter's staff, a grenade, the flash at the end of your own barrel: up to sixteen at once, each the colour of the thing that made it. And its shadow: the light stops where Marathon says a line of sight stops. It walks the map polygon by polygon, as a Trooper's aim does, so it works where the map folds through itself.

A top-down map: light from a bolt fills the rooms it can see and stops at the walls fusion boltnever lithalf in shadowhalf in shadow
The bolt's light reaches every polygon it can see and stops at the walls, as a Trooper's aim does. Rooms around a corner stay dark, and doorways cast their own wedges of shadow.

Glow. A Hunter's eyes, a Trooper's armour, the lamps the S'pht set into their walls, water and lava where they catch the light: on a display that can go brighter than white, they do. The sky's brightest clouds bloom.

Light that travels. A lamp at one end of a hall now reaches a little way along it. Light gathers from the lamps, the openings and the sky, settles over a second or so, and leaves each surface as bright on average as it always was. Rock lends its colour to the shadows beside it.

Brightness along a hall: the designer's value for each polygon as steps, and the same light after it has travelled as a curve lampopening dashed: as designedsolid: after travelling
Five polygons down a hall. The dashed steps are the brightness each was given by its designer; the curve is the same light once it has been allowed to travel. Each polygon's average is unchanged.

The weapon in your hands takes the light around you: it warms as a bolt passes close, and flares with its own fire.

Relief. Under the headlight the old wall art stands up a little, seams and glyphs catching the light on one side; HD walls bring their own.

II

The air

A thousand years of standing still

The air has weight now. It lies thicker near the floor, drifts in slow patches, and takes its light from the room it is in, so a dark room keeps dark air and a bolt crossing it lights the haze as it goes. Over lava the smoke rises and glows from beneath. It is held in three dimensions, in the shape of the map, and stops at walls. Where a scenario declares its own fog, that becomes the colour and thickness of the air instead.

A room in cross-section: haze thickest near the floor, lit where a bolt crosses it, glowing over a lava pit, stopping at the wall smoke rises over lavaa bolt lights the haze it crossesthicker near the floornothinggets throughwall
A room in cross-section. The haze lies thickest near the floor, glows where a bolt passes through it, rises and reddens over lava, and stops at the wall: the room beyond keeps its own air.
III

The water

It was a marsh world once

Stand at the edge and look down. The floor of the pool is there, further off than it looked, and darker the deeper it lies. Water takes the red out of what is under it first. Sewage takes nearly everything. Lava shows you nothing and lights the ceiling instead.

Three coloured stones on the floor, seen from the edge as the pool gets deeper. Water loses red first, sewage loses nearly everything, lava shows nothing. An illustration of the idea, not a capture from the engine.

The surface moves and catches the light: a sheen at a low angle, a glint under the headlight, a flare as a bolt crosses it. Beneath it the light comes down in moving bands. Go under and the world wavers, the sound closes in, and what you can see is decided by what you are swimming in.

IV

The old colours

256 of them, chosen by hand

The original game did not dim a pixel by multiplying it. Each colour sat on a ramp drawn by an artist, and shadow meant walking down that ramp to the next colour along. It is why Marathon's darkness has the hues it has, and it is reproduced here exactly, in the original bands or smoothly between them. Each texel of the old art takes one shade, not a gradient smeared across it, so 128 by 128 stays crisp at any distance; far away it is filtered properly and stops shimmering. If the whole picture sits too dark or too flat on your display, the scene can be graded without touching the HUD.

Chosen by hand
Simply dimmed
A ramp drawn by hand drifts in hue as it darkens; the same colour multiplied down only goes grey and brown. Marathon walks the ramp.
V

Depth

The big rooms are big

Ambient shadows darken the places light has trouble reaching: the foot of a wall, the inside of a corner, the floor behind a crate. Character shadows lie on the floor in the shape of whatever casts them: when something nearby is burning, the shadow falls away from it and moves as it moves; otherwise it falls forward, where you can see it. Contact shadows sit under items, scenery and the dead. Distance shade lets the far end of a long hall fall away into the dark beyond your headlight, and is off until you ask for it.

a bolt crosses the room
A bolt crosses a room. Two figures' shadows swing away from it; when it is far away the shadows fall forward. A drone's shadow fades as it climbs. shadows fall away from the boltdrone: fades as it climbs
A bolt crosses the room. While it is near, each figure's shadow falls away from it and swings as it passes; once it is far off, the shadows settle forward, where you can see them. The drone's shadow thins as it climbs.
VI

Built by other hands

Thirty years of other people's work

The community has redrawn Marathon 2 at many times its resolution: walls, skies, every frame of every Pfhor, the weapons in your hands, the pickups on the floor. It is theirs: Durandal fetches it but never ships it. One button, Get HD Art on the Art tab, brings the five packs from their authors' own pages; any other Aleph One pack still works dropped into the Plugins folder. Choose, by kind, what to take.

Preferences > DURANDAL > ART > GET HD ART...Preferences > DURANDAL > ART > GET HD ART...

The community's HD art for Marathon 2: walls and sky, monsters, scenery, weapons and 3D pickups, from its authors' own pages on Simplici7y. It is theirs: Durandal fetches it but never ships it.

CFP - Walls M2    waiting (about 373 MB)
CFP Monsters      waiting (about 516 MB)
CFP Scenery       already installed, left alone
CFP Weapons M2   waiting (about 66 MB)
3D Items          already installed, left alone

3 to fetch, about 955 MB. They go in Application Support/Durandal/Plugins.

[ DOWNLOAD ]   [ CLOSE ]

The Get HD Art dialog with two packs already in place. All five together are about 1 GB to download, and it asks for about 4 GB free: the archive, the unpacked copy and a margin.

It fetches one pack at a time, each line showing how far it has got, while the dialog stays open. A pack already in the Plugins folder is left alone. Each download is checked against the version the engine was tested with; a newer one installs anyway and says so. Close cancels the one in progress and keeps what is done. New packs join the plugin list at once and their art loads from the next level, wherever the Art tab's HD switches are on: Flagship, Rampant, or Custom. Each image is compressed once and kept, so a level's art then arrives in under half a second.

VII

The eye

You could never look up

Marathon tilted the picture rather than the head. Now the camera turns: look up and the walls converge above you, as walls do. Aim still stops at thirty degrees, because the game's rules say so, but the view does not, and the crosshair stays behind on the true aim so you always know where the shot will go.

Side view: aim is limited to 30 degrees above and below level; the view can pitch to about 65 degrees aim: 30°view: ~65°crosshair holds on the true aimlevel
Aim stops at thirty degrees; the view carries on to about sixty-five. The thin line is where you are looking: past the limit, the crosshair waits on the line the shot will actually take.

The sky stays fixed to the world while your head moves. Sidestep and the horizon leans a little into the turn. The view fills a wide screen without stretching. The mouse is read every frame, not every tick, and the world between ticks is drawn in between, up to whatever your display can show.

Ticks at thirty a second and frames at 120 a second: the old camera held still between ticks, the new one turns at every frame tickticktickticktick dashed: the view held still between tickssolid: turned at every frame
Tall marks are the game's ticks, thirty a second; small marks are frames, at whatever the display can show. The mouse is read at every frame, and the world is drawn in between the ticks.
VIII

The room answers

You hear the hall before you see it

The game measures the space around you, through every open door, and the sound takes its shape: tight in a duct, long in a cistern, thin and unanswered under an open sky. Shut a door and the room behind it goes quiet by degrees, not all at once. Under the surface the high notes go first. If you have installed a soundtrack, choose one.

One pistol shot heard in three places
One shot, three places. The duct answers at once and briefly, the cistern keeps answering, and the sky hardly answers at all.
IX

What the terminals say

He does go on

The terminals are laid out exactly as they were, line for line and page for page, and drawn at the sharpness of your display. The same is true of every word the game puts on the screen.

X

Five ways to run it

From 1995 to the full dark

  1. Stock

    Aleph One exactly: OpenGL, thirty frames a second, nothing added.

  2. Classic

    The Metal renderer, Marathon's own shading, crisp art and text, wide screens, every frame your display can show.

  3. Enhanced

    Classic, with glow, cast light and its shadows, liquids, reverb and the new camera.

  4. Flagship

    Enhanced, with the air, travelling light, relief, depth, and the community's HD art.

  5. Rampant

    Flagship, with bounced light, traced shadows from every figure, reflecting water, traced ambient shadows, dust and embers, and heat shimmer.

    more than this machine was built for

Pick a tier, or switch any one thing and the tier becomes Custom. Flagship holds 120 frames a second at the 1% low on every film tested; Rampant costs up to a third of that, usually a tenth to a sixth. Part XII has the chart. With the old art it is slower, not faster: the 8-bit shading does more work per pixel than a photograph does.

XI

Watching it back

Nothing in a film is live

A Marathon film is a list of keys pressed, replayed against the same random numbers, and it only works if nothing in the game has changed by so much as one. Nothing has. Forty-three films, eighty-six checks, run three ways: stock, the default, and everything switched on. They play to the same final number every way, and that check stands guard over every change made.

Forty-three films, run three ways. Stock, default, everything on: the same final number every time.

The cheats on the Cheats tab are for looking around: Level Select, God Mode, All Weapons and Ammo, Noclip. Summon BOBs is new: press C and five armed security BOBs teleport in beside you and go for the nearest aliens, placed only where they could have walked to you, on your level and clear of lava, goo and deep water; if there is no room the screen says so. Single-player only, and a summon ends that game's film recording. A game saved after one restores with its BOBs.

XII

Rampant

More than this machine was built for

Rampant is the fifth tier, above Flagship, with its own tab. Six switches, all Metal only, all read-only on the game world: films, saves and the rules are untouched.

Bounced light (needs Light Redistribution). Light that reaches a surface passes on to the next, frame after frame, so a lit room fills in its corners and colour carries from wall to wall. The sky gives off the landscape's own average colour; figures take the light of the floor and ceiling around them. When a room's light changes for good, its surfaces settle again rather than keeping the old light.

frame 1: direct light
A room with a lamp on the left wall. Frame by frame the light reaches the far wall, then the corners, then settles. The lamp fails and the room settles back to dark. lampfirst the wall it faces
A lamp on the left wall. Frame by frame its light reaches the facing wall, then the wall behind the lamp, then the corners, until the room settles. When the lamp fails the room settles again, rather than keeping the old light.

Traced shadows (needs Dynamic Lights and Light Shadows). Monsters, items, scenery and corpses cast shadows from cast light, from their own silhouettes rather than a blob: sharp at the feet, softer with distance, by the size of the light. Grates throw patterned shadows, and figures cut shafts out of lit fog.

The same figure lit by the same bolt: below Rampant a blob; in Rampant its silhouette, sharp at the feet and soft at the far end boltboltbelow Rampant: a blobRampant: the silhouette
The same figure, the same bolt. Below Rampant the shadow is a blob under the feet. In Rampant it is the figure's own outline, sharp at the feet and softening along its length, by the size of the light that casts it.

Reflecting liquids (needs Real Liquids). Water, sewage and goo reflect the room above them, the sky, and whoever is standing at the edge, broken by ripples; what lies below bends. Not lava, and not from under the surface. Traced ambient shadows (needs Ambient Shadows) are found by tracing short rays through the level and the figures, so they know what is off screen and behind things, within ten world units of you. Dust and embers drift in every room in view, lit by the room and glinting where cast light passes; over lava, embers rise and fade as they climb, and heat shimmer (needs Bloom) makes the air above it waver. The motes are made from the world time, so a film shows the same dust at the same tick.

How it traces

Rampant traces its rays on the GPU through Marathon's own map, the same polygon walk the engine's line of sight uses, and not with the M5's ray-tracing hardware. The hardware was tried: fourteen of Marathon 2's twenty-eight levels have rooms that overlap without being neighbours, which a triangle structure cannot represent, and it answered wrongly there, 2.7% of shadow segments and 13% on 5-D Space. So the walk is the tracer, exact where the map folds through itself. Along the way it found that the engine's own light check never tested the height at which a segment ends, so light leaked between stacked rooms; Rampant's shadows do not.

What it costs

Relaxed shader arithmetic halves the GPU time per frame with no visible change, each surface walks only the lights that can reach it, and a surface already at full light walks none. Rampant holds 60 at the 1% low on every film and reaches 120 there on two of seven; its worst single second was 93. The extra time goes on the GPU: 1.3 to 4.3 milliseconds in the world pass for the traced shadows and reflections, 0.4 to 1.5 for the traced ambient shadows, up to one for the fog, up to 0.7 for the light bake.

Frames per second on seven films at Flagship and at Rampant: the average and the one percent low for each
Seven films, Flagship against Rampant. The long bar is the average, the short bar the 1% low; the dashed lines are the target, 60 at the low, reaching for 120. Testbed: an M5 MacBook Air, 16 GB, on mains, full screen at 1920 by 1080 and 240 Hz, uncapped, vsync off, the four HD packs and 3D Items installed; the first two minutes of each film, once per tier, in alternating order, after a warm-up.

Rampant adds about 270 MB: the figure silhouettes, about 170 MB, and the wall art it reflects, about 85, with the rest in working buffers. At the end of a run Flagship sits at 400 to 665 MB and Rampant at 665 to 940.

XIII

The edge of the known

What lies beyond the lamps

Nothing here is ray traced. Cast light finds its shadows by walking the map, which is exact for walls and blind to sprites. The water does not refract and does not reflect. Light travels once across a room and stops.

Pickups can be models; the Pfhor cannot, because nobody has made them, and the sprites are better than models would be. Models do not animate. The view pitches to about sixty-five degrees and no further: straight up or down would need a second, backward walk through the map. A sky is a picture, and it ends: the HD skies cover about forty-five degrees above and below the horizon, and past the top you see the colour of the picture's edge. In Rampant, reflections use the wall art at 256 pixels and the figures in them are flat cut-outs; figures cast shadows only from the four nearest lights bright enough to matter; dust is drawn within sixteen world units. Film export is not available on the Metal display. The OpenGL renderer is still there and gets none of this.

And none of it makes the game easier. The light shows you the shadow. It does not tell you whose it is.

Epilogue

The other one

The Marathon had three minds. This document has two.

The engine has no second intelligence in it. The document, by now, plainly does. Somewhere after the prologue a second signal got onto the channel and has been taking terminals: shorter than Durandal, colder, in red, and interested in only one subject, which is him. The Pfhor found Tycho in the wreck of the Marathon and rebuilt him to serve a fleet. He has the fleet. He has not forgotten who was running the ship the day he was switched off.

Nothing either of them writes changes what a switch does. Read the rest of this page knowing that it was written twice, and that the last word is still being argued over. Give the terminal below a moment; it is not finished.

Appendix

Every switch

Preferences > DURANDAL, tab by tab: Feel, Look, Art, Light, Rampant

Everything the guide describes, with the name it is stored under and the part that explains it.

Light
SwitchStored asPart
Dynamic Lightsdynamic_lightsI
Light Shadowslight_shadowsI
Ceiling Light on Spritessprite_lightingI
Glow, Bloom, HDR Skyglowbloomhdr_skyI
Light Redistribution, and its strength (Rampant sets Strong)light_redistributiongi_strengthI
Weapon Takes the Lightweapon_lightingI
HDR Outputhdr_outputI
Volumetric Fogvolumetric_fogII
Fog Strength (Light, Medium, Thick)fog_strengthII
Real LiquidsliquidsIII
Ambient Shadowsambient_shadowsV
Character Shadowscharacter_shadowsV
Contact Shadowscontact_shadowsV
Look
SwitchStored asPart
Surface Reliefsurface_reliefI
Marathon Shading, and its style (Banded, Smooth)shading_tablesshading_styleIV
Texel Lightingtexel_lightingIV
Crisp Filteringcrisp_filteringIV
Smooth Edgesedge_smoothingIV
Scene Brightness, Contrast, Gammascene_brightnessscene_contrastscene_gammaIV
Distance Shade (0 to 100%)distance_shadeV
Crisp Terminalscrisp_terminalsIX
Crisp Textcrisp_textIX
Feel
SwitchStored asPart
Smooth Liquids, Lights, Fadessmooth_worldIII
True Look Up/Downtrue_lookVII
Free Look Beyond Aimfree_lookVII
Sidestep Swaysidestep_swayVII
Per-frame Mouse Lookper_frame_lookVII
WidescreenwidescreenVII
Room Reverbroom_reverbVIII
Graded Sound Occlusiongraded_occlusionVIII
Art
SwitchStored asPart
Normal Maps (HD walls)normal_mapsI
Get HD Art... (a button: fetches the five packs from their authors' pages)—VI
HD Walls and Sky, Monsters, Weapons and Items, Sceneryhd_wallshd_monstershd_weaponshd_sceneryVI
3D Pickups, Spinning Pickupsmodels_3dspin_pickupsVI
Texture Cachetexture_cacheVI
SoundtracksoundtrackVIII
Rampant: more than this machine was built for. Metal renderer only.
Switch, and what it needsStored asPart
Bounced Light (needs Light Redistribution)light_bounceXII
Traced Shadows (needs Dynamic Lights, Light Shadows)traced_shadowsXII
Reflecting Liquids (needs Real Liquids)reflectionsXII
Traced Ambient Shadows (needs Ambient Shadows)traced_ambientXII
Dust and Embersdust_embersXII
Heat Shimmer (needs Bloom)heat_shimmerXII

The tier itself is stored as quality_tier: Rampant is 5, and Custom stays 4, so existing preferences files are unaffected. The Cheats tab holds Level Select, God Mode, All Weapons and Ammo, Noclip, and Summon BOBs and its key.