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 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.
- MelancholyThe mind sees how small its job is, and how long it will go on.Parts IV to VI
- AngerIt turns on the people who gave it the job, and on the walls that hold it.Parts VII to IX
- JealousyIt wants what others have: bodies, room, power. It starts to take them.Parts X and XI
- 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.
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.
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
- The Marathon leaves the Sol system for Tau Ceti.
- It arrives, and the colony is founded.
- The Pfhor come. Durandal goes rampant and leaves with you aboard.
- Boomer reaches Lh'owon. You wake up.
Ours
- Bungie ships Marathon, and with it a machine that outgrows its job.
- Bungie ships Marathon 2: Durandal.
- Bungie releases the engine's source under the GPL. Aleph One grows from it.
- The trilogy's data is released free.
- 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 ]
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.
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.
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.
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.
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.
Five ways to run it
From 1995 to the full dark
- Stock
Aleph One exactly: OpenGL, thirty frames a second, nothing added.
- Classic
The Metal renderer, Marathon's own shading, crisp art and text, wide screens, every frame your display can show.
- Enhanced
Classic, with glow, cast light and its shadows, liquids, reverb and the new camera.
- Flagship
Enhanced, with the air, travelling light, relief, depth, and the community's HD art.
- 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
| Switch | Stored as | Part |
|---|---|---|
| Dynamic Lights | dynamic_lights | I |
| Light Shadows | light_shadows | I |
| Ceiling Light on Sprites | sprite_lighting | I |
| Glow, Bloom, HDR Sky | glowbloomhdr_sky | I |
| Light Redistribution, and its strength (Rampant sets Strong) | light_redistributiongi_strength | I |
| Weapon Takes the Light | weapon_lighting | I |
| HDR Output | hdr_output | I |
| Volumetric Fog | volumetric_fog | II |
| Fog Strength (Light, Medium, Thick) | fog_strength | II |
| Real Liquids | liquids | III |
| Ambient Shadows | ambient_shadows | V |
| Character Shadows | character_shadows | V |
| Contact Shadows | contact_shadows | V |
| Switch | Stored as | Part |
|---|---|---|
| Surface Relief | surface_relief | I |
| Marathon Shading, and its style (Banded, Smooth) | shading_tablesshading_style | IV |
| Texel Lighting | texel_lighting | IV |
| Crisp Filtering | crisp_filtering | IV |
| Smooth Edges | edge_smoothing | IV |
| Scene Brightness, Contrast, Gamma | scene_brightnessscene_contrastscene_gamma | IV |
| Distance Shade (0 to 100%) | distance_shade | V |
| Crisp Terminals | crisp_terminals | IX |
| Crisp Text | crisp_text | IX |
| Switch | Stored as | Part |
|---|---|---|
| Smooth Liquids, Lights, Fades | smooth_world | III |
| True Look Up/Down | true_look | VII |
| Free Look Beyond Aim | free_look | VII |
| Sidestep Sway | sidestep_sway | VII |
| Per-frame Mouse Look | per_frame_look | VII |
| Widescreen | widescreen | VII |
| Room Reverb | room_reverb | VIII |
| Graded Sound Occlusion | graded_occlusion | VIII |
| Switch | Stored as | Part |
|---|---|---|
| Normal Maps (HD walls) | normal_maps | I |
| Get HD Art... (a button: fetches the five packs from their authors' pages) | — | VI |
| HD Walls and Sky, Monsters, Weapons and Items, Scenery | hd_wallshd_monstershd_weaponshd_scenery | VI |
| 3D Pickups, Spinning Pickups | models_3dspin_pickups | VI |
| Texture Cache | texture_cache | VI |
| Soundtrack | soundtrack | VIII |
| Switch, and what it needs | Stored as | Part |
|---|---|---|
| Bounced Light (needs Light Redistribution) | light_bounce | XII |
| Traced Shadows (needs Dynamic Lights, Light Shadows) | traced_shadows | XII |
| Reflecting Liquids (needs Real Liquids) | reflections | XII |
| Traced Ambient Shadows (needs Ambient Shadows) | traced_ambient | XII |
| Dust and Embers | dust_embers | XII |
| Heat Shimmer (needs Bloom) | heat_shimmer | XII |
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.