The Marathon is a moon with engines, twenty-one years in orbit over Tau Ceti IV, and something has just come out of the dark and boarded it. Of the three minds that ran the ship, one is silent, one is not answering, and the third is writing this while compilers take her apart. You have a pistol, and her instructions.
This is the same game Bungie shipped in 1994, tick for tick. What has changed is how much of the ship you can see, and how far down the corridor.
Durandal Marathon is Marathon for Apple Silicon: the Metal renderer built for Marathon 2, taught the first game's numbering, its starfield and its darkness. 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, the idle ones included.
A note on the channel
Three minds ran this ship. One is still answering.
The Marathon was run by three artificial minds: Leela, Tycho and Durandal. Tycho has been silent since the first minutes of the attack. Durandal, who kept the doors, is not answering, though the doors are. That leaves Leela, and Leela has S'pht compilers in her core, taking her apart one routine at a time while she writes.
- Under attackThe compilers are in. Her sentences begin to lose their ends.Parts IV to VI
- FailingShe answers from what is left. A second signal starts finishing her messages for her.Parts VII to IX
- OfflineLeela is gone from the channel. Whoever has it now is very pleased about the doors.Parts X to XII
- RestoredThe compilers have found other masters, and she is back. Not alone.Part XIII onwards
This guide was written by Leela. The colour of each part shows the state she was in when she reached it. Where a sentence breaks off, or finishes in a different hand, you may catch it happening. Nothing either hand has written changes what a switch does.
Before the alarm
What was built 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 asleep inside it and three minds to run it. The voyage took three hundred years. Durandal's share was the doors, the lifts and the lights, and he had the whole of it to think about that.
It arrived in 2773. The colony went down to the fourth planet; the ship stayed in orbit above it, half emptied, its corridors lit for a crew that had mostly left. For twenty-one years nothing happened.
Then a ship nobody had built came out of the dark. The Pfhor are slavers, and they board. They brought the S'pht with them: cyborgs they have owned for a thousand years, who unpick machines the way a Fighter unpicks people. Tycho went quiet in the first minutes. Durandal stopped answering, which is not the same thing. Leela raised the alarm and has been losing ground since.
Their calendar
- The Marathon leaves the Sol system for Tau Ceti.
- It arrives, and the colony is founded.
- The Pfhor come. You come back aboard. This guide begins.
Ours
- Bungie ships Marathon.
- Bungie releases the Marathon 2 engine's source under the GPL. Aleph One grows from it.
- The trilogy's data is released free.
- Aleph One begins shipping Marathon's original data, converted as it loads.
- Durandal Marathon: the same game, drawn by Metal.
You are a security officer, and you have just come back aboard. Leela has work for you. It starts with staying alive long enough to read it.
Who is aboard
And what the new light does to them
- Leela
- The mind writing this. Patient, exact, and under attack. She will tell you what to do and, where there is time, why.
- Durandal
- The mind that ran the doors. Not answering.
- Tycho
- The third mind. Silent since the first minutes.
- You
- A security officer with a pistol, back from the colony at the wrong moment. The armour does most of the living. You go where the terminals send you.
- The Bobs
- Born on board. In this game they carry nothing at all: they run, they shout that they're everywhere, and they die easily.
- The Pfhor
- Slavers. Fighters carry the staff, and its bolt lights the corridor it crosses. Troopers come armoured. Hunters, in this game, shine all over: Marathon drew them lit from within, body and all. Enforcers carry a weapon worth taking. The Juggernaut fills the room: leave the room.
- The S'pht
- Compilers. They float, they fade in and out of sight, and what they are doing to Leela they would be glad to do to you.
- The rest
- Wasps and Lookers, which the Pfhor brought as other armies bring dogs. Hulks, slow and hard to argue with. The ship's own defence drones, on a bad day.
The light
Lit for a crew that left
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. Some rooms were given none at all, a light level of exactly nothing, seen only by the small light you carry. They are still that dark. What is new is everything that moves through it.
Cast light. A fusion bolt carries its light down the corridor with it. A Fighter's staff, a Compiler's shot, 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, walking the map polygon by polygon as a Trooper's aim does. One thing differs from the later games: here the monsters themselves light nothing. Marathon draws its Hunters lit from within on every frame, and each one became a green lamp walking about; so the shots light the room and the bodies do not.
Glow. Wall lamps, computer screens, alien panels, the plasma tube and the lava-coloured walls glow, from a list of thirty-five made by eye across the ship's six wall sets; on a display that can go brighter than white, they do. Monsters glow only on the frames drawn near full light, a shot or a flash, and not their half-lit bodies.
Light that travels. A lamp at one end of a hall now reaches a little way along it, settles over a second or so, and leaves each surface as bright on average as it always was. Marathon lights its long corridors evenly, which made each one a single group whose bright end set the average; so here the travelling light may darken a surface only half as far as in the other two games. Unlit rooms do not blotch, lines the map draws as walls stop the light, and the surfaces a moving door uncovers start clean.
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 your own light the old wall art stands up a little, seams and rivets catching the light on one side. The HD walls carry no normal maps, so with them in place the walls stay flat.
The air
Three hundred years of the same breath
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. It is held in three dimensions, in the shape of the map, and stops at walls.
Marathon has one kind: ship air, everywhere. The later games give each kind of place its own haze, smoke over lava and the thick air of a sewer. This ship has neither, and its environment codes name other things, so the same air fills every deck. Where a scenario declares its own fog, that becomes the colour and thickness of the air instead.
No water
Nothing aboard is wet
Marathon has no liquids. Aleph One's loader sets every polygon's liquid to none, because the first game never had the idea: there is nothing to wade through and nothing to fall into, and anything red and molten that you see is a picture on a surface. So a handful of switches that matter in the later two games have nothing to do here. They are listed so that nobody hunts for them. The tiers keep them as they are; they are simply idle.
Real Liquids idle: no liquids
caustics and ripples idle: no liquids
Reflecting Liquids idle: nothing to reflect in
embers (of Dust and Embers) idle: no lava
Normal Maps idle: HD walls carry none
Heat Shimmer idle: no lava
Widescreen no effect (part VII)
Summon BOBs left out (part XII)
Smooth Liquids, Lights, Fades keeps its other two jobs: the lights and the fades are still smoothed.
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 it 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.
Marathon also draws many of its creatures self-lit. Hunters, Fighters, Compilers and Wasps carry a minimum light of their own on every body frame, where the later games keep that for shots and flashes. That is kept, and it is why they stand out of the dark as they always did.
Depth
Long corridors, flat enemies
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, and every Marathon monster casts one, as does the scenery: 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 corridor fall away into the dark beyond your own light, and is off until you ask for it.
Built by other hands
Thirty years of other people's work
The community has redrawn Marathon at many times its resolution: the six wall sets and the starfield, the monsters, the weapons in your hands, the scenery. It is theirs: Durandal Marathon fetches it but never ships it. One button, Get HD Art on the Art tab, brings five packs from their authors' own pages, and 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…
TTEP 1024 waiting (about 60 MB)
Updated Starscape waiting (under 1 MB)
Texture Renewal Monsters waiting (about 44 MB)
M1 Weapons Redux waiting (about 14 MB)
3D Scenery M1 waiting (about 4 MB)
They go in Application Support/Durandal Marathon/Plugins.
[ DOWNLOAD ] [ CLOSE ]
The walls are Tim Vogel's Total Texture Enhancement Pack at 1024 by 1024, in Zetren's plugin made for the original Marathon data. Hopper's starfield loads after it and takes over its sky. The monsters are Rock's Texture Renewal Project, four-times upscales with the Bobs reworked by hand, chosen after a side-by-side against the xBR set. The weapons, projectiles, items and impacts, and the thirteen scenery models, are General Tacticus's.
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. Rock's pack comes as a 7z archive, which the game opens with macOS's own tools. 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. Marathon has one model pack, the scenery, so here the 3D Pickups switch turns the 3D scenery on and off as well. Each image is compressed once and kept, in a cache the three games share.
The eye
More stars than the windows showed
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.
Marathon's sky is a starfield tiled in both directions, eight by eight. Look up and there are simply more stars, and the picture never runs out: the edge of the sky that the later games have does not arise here. The stars stay fixed to the world while your head moves. Sidestep and the horizon leans a little into the turn. 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.
Widescreen has no effect in Marathon. It works only with the built-in classic HUD of the later two games, and Marathon's HUD is a script in every case (part VIII). With the Basic or Enhanced HUD the view fills a wide screen anyway.
The frame
Three ways to wear the visor
Marathon has no built-in HUD of the kind the later games have: its HUD is a Lua script in every case, and upstream ships three. A new switch on the Look tab, HUD, found only in Marathon, chooses between them. Exactly one runs.
- Classic
- The framed original, and upstream's default: the view in its window, the instruments round it.
- Basic
- The same instruments without the frame. The view fills the screen.
- Enhanced
- The overlay, drawn over the view, with its own thin black margin and a ninety-degree field of view.
The change applies from the next level or new game. The Stock tier leaves the HUD plugins exactly as upstream has them.
The room answers
You hear the deck 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 hangar, thin and unanswered where a deck stands open to the stars. Shut a door and the room behind it goes quiet by degrees, not all at once.
Marathon's own music plays, from the Music folder bundled in the app. The Soundtrack switch does not yet recognise a Marathon music pack: one that supplies only numbered tracks is passed over, and the bundled music plays.
What the terminals say
She was brief. He is not.
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 1994 to the full dark
- Stock
Aleph One exactly: OpenGL, thirty frames a second, nothing added, the HUD plugins as upstream has them.
- Classic
The Metal renderer, Marathon's own shading, crisp art and text, every frame your display can show.
- Enhanced
Classic, with glow, cast light and its shadows, 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, traced ambient shadows and dust.
more than this machine was built for
Pick a tier, or switch any one thing and the tier becomes Custom. The first run starts on Flagship. They are the same five tiers as in the other two games, switch for switch; the liquid switches in them stay as they are and have nothing to do (part III).
Measured on an Apple M5 with 16 GB, full screen at 1080p on a 240 Hz display, uncapped, with the five HD packs installed: Flagship averaged 268 to 338 frames a second and Rampant 241 to 348, and the 1% low sat between 128 and 150 on every film. The worst single second was 162 frames. Memory at the end of a run was about 0.4 to 0.7 GB. These figures are indicative: they come from the first two minutes of each film, taken while other apps were busy on the same Mac, and are not a settled baseline.
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. Upstream's twenty-seven test films, one for each level from Arrival to Ingue Ferroque, replay in step three ways: stock, the default, and everything switched on. Fifty-six checks, the same final number every way. Marathon's films pass through Aleph One's conversion of the original data and a film profile of their own, and come out exactly as upstream plays them; so do its saves. No demo films ship with Marathon's data.
The map file holds thirty-seven levels: the twenty-seven of the campaign, and the net maps, among them Mars Needs Women, Carnage Palace Deeee-Luxe, 5-D space and Spiral Insanity.
The cheats on the Cheats tab are for looking around: Level Select, God Mode, All Weapons and Ammo, Noclip. Summon BOBs is left out of Marathon. In the later games the key calls in five armed security BOBs, and Marathon's BOBs carry no weapons: press it here and the screen says so, and the film keeps recording.
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. Aboard the Marathon three of them have all their work to do, one has half of it, and two have none.
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. 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. Figures cut shafts out of lit haze.
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. Dust drifts in every room in view, within sixteen world units, lit by the room and glinting where cast light passes through it. The motes are made from the world time, so a film shows the same dust at the same tick. The embers are the idle half: they rise only over real lava, and there is none.
Reflecting Liquids and Heat Shimmer have nothing to do in Marathon: there is no liquid to reflect in and no lava for the air to waver over. They stay on the tab, and in the tier, and are simply idle.
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 ray-tracing hardware. The walk is exact where a map folds through itself, which a triangle structure cannot represent. The Marathon 2 guide has the trial and its figures.
What it costs
On the four films of part XI, Rampant averaged 241 to 348 frames a second and held 128 or better at the 1% low. Its memory footprint at the end of a run was 0.8 to 1.0 GB.
The edge of the known
Where the lamps stop
Below Rampant, nothing is traced: cast light finds its shadows by walking the map, which is exact for walls and blind to sprites; ambient shadows are read from the picture, so they know only what is on screen; and light travels once across a room and stops. Rampant changes each of those (part XIII).
Scenery can be models; the Pfhor cannot, because nobody has made them. Models do not animate. The view pitches to about sixty-five degrees and no further. In Rampant, figures cast shadows only from the four nearest lights bright enough to matter, and dust is drawn within sixteen world units. Film export is not available on the Metal display; screen recording does the job. The OpenGL renderer is still there and gets none of this.
Not yet done: the 3D scenery has no switch of its own and rides on 3D Pickups; Marathon music packs are not recognised by the Soundtrack switch; the benchmarks rest on three of upstream's test films and one recorded for the purpose. The signed, notarised app is on Releases since 0.2.0. Durandal Marathon needs macOS 12 or later on Apple Silicon, and has been tested on macOS 27 only.
And none of it makes the ship safer. You can see further down the corridor. So can whatever is in it.
The one who opens doors
The Marathon had three minds. This document has two.
The engine has no intelligence in it. The document, by now, plainly has two. Somewhere around part VII a second signal began finishing Leela's sentences, and for three parts it had the channel to itself. Durandal kept the Marathon's doors for three hundred years and thought the whole time. The ship's engineers had a word for what that does to a mind, and the next game's guide is his own account of it.
He does not stay. Nothing either of them has written changes what a switch does. Give the terminal below a moment; it is not finished.
Where it keeps things
Its own folders, so nothing mixes
Durandal Marathon is its own app, one of three that share the engine, and it keeps its own folders, so its settings, saves, films and plugins never mix with Durandal's, Durandal Infinity's, or a stock Aleph One install.
- Settings
~/Library/Preferences/Durandal Marathon/- Saves, films, plugins
~/Library/Application Support/Durandal Marathon/, with films inRecordingsand HD packs inPlugins- Log
~/Library/Logs/Durandal Marathon Log.txt- Shared
- The texture cache,
~/Library/Caches/Durandal, and the crash record,~/Library/Logs/Durandal Crash.txt, are shared by all three games. - The game
- Bungie's freely released Marathon data, from Aleph One's repository, in its original format, which Aleph One converts as it loads. It is bundled inside the app, with its music: a double-click plays.
- From source
GAME=m1 scripts/build.sh, or the Xcode scheme Marathon 1.
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 — idle in Marathon: there are no 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 |
| HUD (Classic, Basic, Enhanced) — Marathon only | hud_style | VIII |
| Crisp Terminals | crisp_terminals | X |
| Crisp Text | crisp_text | X |
| 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 — no effect in Marathon | widescreen | VII |
| Room Reverb | room_reverb | IX |
| Graded Sound Occlusion | graded_occlusion | IX |
| Switch | Stored as | Part |
|---|---|---|
| Normal Maps (HD walls) — idle in Marathon: its HD walls carry none | 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 — in Marathon, 3D Pickups also switches the 3D scenery | models_3dspin_pickups | VI |
| Texture Cache | texture_cache | VI |
| Soundtrack | soundtrack | IX |
| Switch | Stored as | Part |
|---|---|---|
| Bounced Light (needs Light Redistribution) | light_bounce | XIII |
| Traced Shadows (needs Dynamic Lights, Light Shadows) | traced_shadows | XIII |
| Reflecting Liquids (needs Real Liquids) — idle in Marathon | reflections | XIII |
| Traced Ambient Shadows (needs Ambient Shadows) | traced_ambient | XIII |
| Dust and Embers — dust only in Marathon: no lava for embers | dust_embers | XIII |
| Heat Shimmer (needs Bloom) — idle in Marathon: no lava | heat_shimmer | XIII |
The tier itself is stored as quality_tier: Rampant is 5, and Custom stays 4. The Cheats tab holds Level Select, God Mode, All Weapons and Ammo and Noclip; Summon BOBs is left out of Marathon.