Marathon Mapmaking: Starting Steps
This is a starters’ guide to creating content for Marathon Aleph One, an open-source engine based on Bungie’s groundbreaking first-person shooter trilogy (1994-1996). This is meant as a concise⁽¹⁾, accessible repository of information both for beginning mapmakers and for mapmakers who’ve used Forge (Bungie’s official Marathon Infinity map editor), but not its modern replacement Weland.
Thus, I’ve included links to modern editors for Aleph One, a guide to setting up Weland and a visual mode plugin (either Vasara, VAF, or Visual Mode.lua) in Windows and MacOS, links to the first resources you should read and watch once you’ve got Weland running, Forge manual errata, descriptions of a few aspects of modern mapmaking that aren’t covered by the Forge tutorials, and links to more advanced resources.
Once you’re familiar with the basic principles, I have a more advanced (and opinionated) guide that in turn features appendices that cover specific mapmaking topics in further detail. Should you have any suggestions for improvements to this guide or notice any errors, please either contact me or submit to this page’s GitHub repository. (If you’d like to be credited, please let me know.)
Table of Contents
- Introduction
- Table of Contents (you’re looking at it?)
- Aleph One Content Editors
- Marathon 2/Infinity Format
- Comparisons of Texturing Utilities
- Marathon 1 Format
- Weland Setup
- First Steps
- Configuring Weland’s Preferences
- Visual Mode Setup
- Installing Visual Mode.lua, Vasara, or VAF (MacOS)
- Installing Visual Mode.lua, Vasara, or VAF (Windows)
- Configuring Weland!Aleph One
- Mapmaking Basics
- Tutorials & Resources for Beginning Mapmakers
- Forge Manual Errata & Omissions
- Mapping Issues in Weland
- Texturing Issues in Visual Mode.lua, Vasara, and VAF
- Further Texturing Issues in Vasara and VAF
- Further Reading
- Advanced Tutorials & Resources
- Marathon Communities & Resources
- Game Files
- Hi-Res Graphics
- Bespoke Graphics
- Upscaled Game Assets
- Communities
- Story & Lore References
- Gameplay Resources
- Wikis
- Music & Sound Resources
- Author Biography & Contact Info
- Acknowledgements
- Endnotes
Aleph One Content Editors
Marathon 2/Infinity Format
Bungie’s two official editors were Forge (mapmaking) and Anvil (physics, shapes, sounds). I won’t address how to run these in this guide, because they don’t run on any operating system past MacOS 9.2.2, and there are vastly better replacements for both programs that actually run on modern operating systems. The next section, “Comparison of Texturing Utilities”, may help you decide which visual mode replacement you want.
While you might expect Forge+ to be roughly equivalent to Forge, Weland is actually much closer to it, to the extent that roughly 90% of the Forge tutorials can be applied wholesale to Weland. I list all the important differences I’m aware of below, and they make up a relatively small portion of this document; for most users, setup will be by far the most complicated difference to navigate.
Forge+ runs in Unity rather than Aleph One, which has some interesting ramifications. Because Aleph One is a portal engine, it is not possible to “noclip” into negative space (outside the map bounds); the engine needs to render using valid X, Y, Z, and polygon data to decide what should be visible, so attempting to render a scene from outside the bounds of any polygon simply crashes the engine. Unity, not being a portal engine, is not bound by this limitation, so you can use Forge+ to view an entire map at once from negative space. On the other hand, Forge+ is completely confused by “5D space” (two or more polygons occupying the same X/Y/Z space) and simply draws all walls.
Unfortunately, Forge+’s feature set is nowhere near as robust as Weland’s. It’s perfectly adequate for texturing, but without a hook to switch quickly back and forth between it and Weland, it’s more impractical than it should be. However, it’s still invaluable for providing a much better sense of the physical space various levels occupy.
Back to top · Table of contents · Advanced guide · Contact me · Website index
Comparisons of Texturing Utilities
- Vasara 1.1
NOTE: Since Vasara 1.1 was just released, I haven’t had time to evalute it properly yet. Expect further revisions to this section once I’ve done so.
- Seems to aim to be accessible to all mappers.
- Pros: Has the most straightforward interface; likely to be the least intimidating for new mapmakers.
- Cons: Vasara 1.0.3 included several bugs that weren’t present in VAF and/or Visual Mode.lua. I haven’t yet tested how many of these bugs Vasara 1.1 fixes; I’ll report back later. It is only updated sporadically (there were some eight years between version 1.0.3 and version 1.1). It also has fewer features than VAF (though for new mappers, this is probably not actually a negative).
- VAF
- Aimed primarily at experienced mappers who want more control over texturing.
- Pros: Fixes several of Vasara’s bugs and adds several new features (though a few are still works in progress). Visual Mode.lua does not (and may never) have some of this functionlity.
- Cons: Its interface probably will initially be more intimidating than Vasara 1.0.3’s, and beginning mapmakers won’t need many of its added features. It also isn’t up to date with Vasara 1.1 yet.
- Visual Mode.lua
- Seems to be aimed at experienced mappers who want a minimalist texturing interface.
- Pros: It’s extremely powerful and fast once you’ve learned its interface, lacks several of Vasara 1.0.3’s bugs, and has several features that aren’t present in Vasara 1.0.3 (but are present in VAF).
- Cons: It will probably intimidate new mapmakers due to its bare-bones interface; it’s missing (and will probably never have) several of VAF’s features.
- Forge+
- This was meant to be a full-featured map editor, but it never got past the “texturing maps” stage.
- Pros: Since it runs in Unity, it can view maps from negative space, which would cause Aleph One to crash; this provides a much more holistic view of the shape of a level.
- Cons: Unlike the other three options, Forge+ can’t be linked to Weland, so you’ll have to continually close and reopen the two apps, which is a pain. It also can’t view maps using hi-res textures, and it hasn’t been updated since 2022, so it’s missing features like Aleph One 1.7’s new transfer modes.
I recommend for new mappers to start with Vasara 1.1; then, once you’re comfortable with its features, try VAF and see if you find its added features useful.
Back to top · Table of contents · Advanced guide · Contact me · Website index
Marathon 1 Format
Unfortunately, Marathon 1 content editing is barely supported on modern OSes, with a few exceptions, the most noteworthy being two different physics converters: one by @magical_beetle_40501 on Discord that I’m hosting here myself, and the other being Solra Bizna’s Physics Eater (which is missing names but is otherwise more comprehensive. I intend to make a set of names at some point but have not had time yet).
A partial exception: You can extract M1 sound files’ contents by splitting them with Atque, but it won’t re-merge them into a format Aleph One reads as M1 sounds.
Technically, Hopper’s Perl utilities also count as support for shapes editing on modern operating systems; however, Perl requires a considerable amount of technical knowledge to use (it’s been jokingly referred to as a “write-only language”), and assisting users with getting it to work is well beyond this document’s scope.
The ‘Classic OS’ resources below require a Mac or emulator running Classic Mac OS (i.e., System 7 through 9). Setting one up is also well beyond this document’s scope.
- Maps:
- Physics:
- Shapes:
- Sounds and Terminals:
- ResEdit (classic OS). Terminals are TEXT resources in the Marathon application. Explaining the terminal format is beyond the current scope of this guide, though I may cover it eventually.
To make Marathon 1 content from the classic Mac OS work with modern Aleph One, you must run it through MacBinary (I’ve never gotten this to work) or extract it from an emulator disk image with a program like HFV Explorer (the method I used for my remastered Marathon 1 and Trojan sounds).
Back to top · Table of contents · Advanced guide · Contact me · Website index
Weland Setup
First Steps
- Setting up Weland can be confusing; this doesn’t aim to be an exhaustive list of the issues you may face in doing so. I can’t possibly hope to provide that here; you’ll find people who can help on the Discord.
- You’ll need either Gtk# or Mono, depending on your OS; the readme tells you which to get. (You’ll also need .NET on Windows, but all Windows 10 and 11 computers should already have this installed, and if you’re running an older version, you really should upgrade – running operating systems that are no longer being supported is a major security risk.) Installing the wrong one sometimes seems to make Weland not work, and they’re on the same webpage, so users can get one thinking they’ve gotten the other. Read carefully!
- I should perhaps note that several Windows users have reported only being able to get Weland to run correctly by using Gtk# 2.12.26 – a completely ancient release. No one has been able to produce a satisfactory hypothesis for why this is the case, but enough people have experienced it that it’s ceased to look coincidental. (For the record, I didn’t have to do this to get Weland to work on Windows; in fact, the setup process was quite painless for me.)
Configuring Weland’s Preferences
- After getting Weland to start, you’ll next want to set up visual mode to function from within Weland. Go to Edit > Preferences. You’ll want the Shapes and Visual Mode segments to resemble these settings:
- Shapes File: valid Marathon 2/Infinity-format shapes. Marathon 1 shapes probably won’t work, but I haven’t tested this. This affects what Weland uses in visual mode and the overhead texture view.
- Aleph One: the Aleph One app. EZ. My Windows examples use:
C:/Games/Marathon Infinity/Marathon Infinity.exe
For Macs, I use two examples:
Macintosh HD/Games/Marathon Infinity/Marathon Infinity.app
Macintosh HD/Games/Aleph One/Aleph One.app
The reason for this will become apparent below.
- Scenario: the folder you use within Aleph One to run the scenario you’re editing, which is usually the folder containing the Map, Shapes, Images, and Sounds files. (Rubicon X is an annoying exception; use the containing Rubicon X folder, not Rubicon Data.)
Back to top · Table of contents · Advanced guide · Contact me · Website index
Visual Mode Setup
Next, you’ll need to set up an editor for Weland’s visual mode, which (despite its name) can use either Visual Mode.lua, Vasara, or VAF. Whichever you choose, the scenario you wish to edit must have access to it.
I’ve separated the following steps for MacOS and Windows, since the steps for each are vastly different. I plan to add a detailed Linux guide eventually; for now, I’ll simply note that compiling Aleph One yourself is vastly easier than getting Weland to work with a flatpak.
Installing Visual Mode.lua, Vasara, or VAF (MacOS)
- Owing to how the Mac version of Aleph One is built, setting up Visual Mode on Macs may be confusing. Effectively, there are two ways to get Aleph One versions of the Marathon trilogy on MacOS:
- If you download the trilogy from the front page of Aleph One’s website, you get ‘all-in-one’ apps in which all game data are packaged within each game’s application.
- You can also download the game data by themselves and use the general Aleph One app to run them. (This is my recommended method.)
- This difference is really important on Macs, as it affects where to place Visual Mode.lua, Vasara, and/or VAF:
- Visual Mode.lua: It’s best to put this in the user data folder. Which user data folder, though?
- Infinity all-in-one app:
~/Library/Application Support/Marathon Infinity/Visual Mode.lua
- Standalone Aleph One app:
~/Library/Application Support/AlephOne/Visual Mode.lua
- Aleph One only makes this distinction on Macs, a design choice I’m not fully on board with.
- Note also that ~/Library is normally hidden in the Finder, so to place Visual Mode.lua in one of its subfolders, use ‘Go to Folder’. Weland should be able to see it with no problem, though.
- Vasara or VAF: You have multiple choices here.
- My recommended option is to ditch the all-in-one apps, grab the scenario files, and run them with the standalone Aleph One app in the scenario folder, allowing you to keep Vasara or VAF within said folder, as Yrro intended. If you’re in the middle of playing the trilogy and don’t want to move your files over (itself a complicated process that is beyond the current scope of this guide), you can always keep a copy of the all-in-one apps to play the games, and just use the data and the stand-alone app for Vasara or VAF.
- For the all-in-one apps, use the user data plugins folder. The all-in-one Infinity app uses:
~/Library/Application Support/Marathon Infinity/Plugins/Vasara.zip
The stand-alone Aleph One app uses:
~/Library/Application Support/AlephOne/Plugins/Vasara.zip
I note both locations because the Mac is the only platform that separates the trilogy’s user data folders from Aleph One’s (a design choice I’m not fully on board with). Again, ~/Library is also invisible by default (you must navigate to it with ‘Go to Folder’), hence my preference for option 1.
Back to top · Table of contents · Advanced guide · Contact me · Website index
Installing Visual Mode.lua, Vasara, or VAF (Windows)
- Visual Mode.lua is a solo Lua script, so it should go in the user data folder. My Windows 10 path for it is:
C:/Users/Aaron/Documents/AlephOne/Visual Mode.lua
Replace Aaron with your username to get yours. (If you’re running an older version of Windows, please get a new computer operating system: running an OS that’s no longer being updated is a major security risk that puts all your data in jeopardy. Windows 11, meanwhile, has the same path as Windows 10.)
- Vasara and VAF are plugins, so they belong in the Plugins folder (if there isn’t one already, make one called ‘Plugins’). This can be the scenario plugins folder:
C:/Games/Marathon Infinity/Plugins/Vasara.zip
Or, if you’d like it to be accessible to all scenarios, the user data plugins folder, e.g.:
C:/Users/Aaron/Documents/AlephOne/Plugins/Vasara.zip
This may be more convenient if, like me, you’re perverse enough to map for five scenarios at a time, but you’ll have to disable it outside Weland!Aleph One for all scenarios in which you aren’t using solo Lua.
Back to top · Table of contents · Advanced guide · Contact me · Website index
Configuring Weland!Aleph One
- These steps may be slightly confusing. Within Weland’s preferences dialog, click the ‘Edit Preferences’ button, which will launch Aleph One using the selected scenario. This is entirely intended!
- Within Weland!Aleph One, click Settings. This creates a new ‘Preferences Editor’ file that only affects the game’s behavior when Weland lanches it (e.g., launching Marathon Infinity from Weland creates a new ‘Marathon Infinity Preferences Editor’ file within your Aleph One preferences folder).
- For Visual Mode.lua: Go to Environment, make sure ‘Use Solo Script’ is checked, then select ‘Script File’ and find Visual Mode.lua in the user data folder (from which Aleph One usually navigates by default).
- For Vasara or VAF: Select it under Plugins; no other plugins that use solo Lua should be active, and ‘Use Solo Script’ in Environment should be unchecked. If Vasara doesn’t appear, make sure you copied it to the right location. If the top level of Settings has no Plugins button, update your Aleph One version.
- In either case, now select ‘Accept’, quit out of Aleph One, and select ‘OK’ in the Weland dialog box. If you’ve done everything correctly, you should now be able to launch visual mode in much the same way it launched from within Forge. If not, reread the above, try to ensure everything is set up as shown here, and if you still can’t solve the issue, you may wish to ask for help at one of the above resources.
Back to top · Table of contents · Advanced guide · Contact me · Website index
Mapmaking Basics
Tutorials & Resources for Beginning Mapmakers
Although the manual and video tutorials listed below are (obviously) for Forge, Weland has an almost identical interface, and 95% of their contents apply just as well to Weland once you have Vasara, VAF, or Visual Mode.lua set up. I’ve begun annotating the Forge manual to make it work better as a reference for Weland and to correct all its errata, but I’ve only annotated about a quarter of it as of this writing (2024-04-27), and I’ve yet to edit any of my annotations (some of them are currently way too technical for their positions in the manual). I’ve also documented the Forge manual’s most significant errata immediately below this section.
Essentially, you’ll use Weland for everything you’d do from Forge’s top-down view; you’ll use Visual Mode.lua, Vasara, or VAF for almost everything you’d do in Forge’s visual mode (currently, neither has an ‘align heights’ feature); and you’ll use Atque for merging and splitting maps.
The modern replacement for Anvil is ShapeFusion; its feature set is very nearly identical to Anvil’s, although it does a few things differently. Nonetheless, the annotated Anvil help balloons will be essential, since they’re one of the few Anvil features not integrated into ShapeFusion. The default Infinity physics model is also essential because the “Standard” physics model distributed with Marathon Infinity is actually a Marathon 2 physics model (thanks, Bungie), so if you want to edit VacBob or SMG physics, you’ll have to grab the one from Simplici7y.
Back to top · Table of contents · Advanced guide · Contact me · Website index
Forge Manual Errata & Omissions
- Platforms: The ‘Locked Door’ flag is broken and doesn’t do anything.
- Lights:
- The ‘Stateless’ flag is broken and doesn’t do anything.
- The manual says ‘Δ Period’ is ‘the maximum random amount of time added to or subtracted from’ the value of Period. In fact, the game never subtracts Δ Period from Period; it only ever adds them together.
- The manual’s statement that ‘Δ Intensity’ ‘does for Intensity what Δ Period does for Period’ is technically correct (the best kind of correct!), but since its description of Δ Period is wrong, I’m listing it here for completeness’ sake.
- Environment Types: The manual’s description of ‘Rebellion’ is completely outdated; it is a correct description of ‘Rebellion (M1)’.
- The ‘Rebellion’ flag strips all players’ weapons and ammunition, and if their health is above 37 (full 1x shields would be 150), the game strips their health to 37. The converse is not true: if their health is below 37, it won’t be restored to 37.
- Furthermore, if the ‘Extermination’ mission type is set on a ‘Rebellion’ level, all monsters set as ‘Alien’ in the physics must, without exception, either be killed or (perhaps counterintuitively) have teleported out for the mission status to be set as ‘Complete’.
- Both the rebellion health total and the starting health total can be customized with MML.
- Mission Types:
- ‘Rescue’ is broken. Use ‘Rescue (M1)’ if you want this behaviour. Additionally, ‘Rescue (M1)’ only affects whether the level completion state is set to ‘Failed’; it’s still up to mapmakers to set the ‘Finished’ or ‘Unfinished’ states in other cases. aperturegrillz’s speedrun of ‘Bob-B-Q’ shows us what can happen when a mapmaker neglects to set any mission types besides ‘Rescue (M1)’.
- ‘Extermination’ doesn’t require killing everything unless, as mentioned above, the ‘Rebellion’ flag is also set. Otherwise, the player gets a leeway of up to eight monsters marked as ‘Alien’ in the physics. The game doesn’t count monsters that are not marked as ‘Alien’, and it doesn’t matter whether they’re set as hostile to the player. (You can force players to kill all monsters of one or more specific types using MML.) Also, the game disregards monsters that have teleported out for the sake of extermination missions, likely to prevent players from being unable to complete a mission if too many teleport out.
- I cover ‘Exploration (M1)’ (potentially useful) and ‘Repair (M1)’ (probably not) in my advanced guide.
- Sound Objects:
- ‘Is On Platform’ overrides the selected sound with the platform’s ambient sound.
- ‘Δ Volume’, ‘Δ Period’, ‘Δ Pitch’, and ‘Δ Direction’, like the similar light values above, are only ever added to, respectively, Volume, Period, Pitch, and Direction; they are never subtracted. Additionally, for these values (but, curiously, not for the similar light variables), the game will never select the maximum delta value. Thus, if both Period and Δ Period are 30, the game selects a value from 30 to 59, inclusive.
- While this isn’t truly an erratum, ‘Δ Direction’ deserves further mention for a questionable design choice that can create the misleading impression that, for a sound to play from a constant direction, Δ Direction should exactly match Direction: in fact, Δ Direction should be 0°. (If Direction and Δ Direction are both 135°, for example, the results will range from 135° to 269° (nice), inclusive.)
- Polygon Types:
- The manual’s description of the ‘Invisible Monster Trigger’ was probably the intended behaviour of the polygon type, but in practice, it is the same as the ‘Dual Monster Trigger’: it activates all monsters in a zone, not just teleporting ones.
- Only players can trigger Platform On/Off Triggers, but both players and monsters can trigger Light On/Off Triggers.
- Monsters can’t move over Teleporters and won’t cross them (this doesn’t apply to Automatic Exits).
- Although monsters usually can’t move in Monster & Item Impassable polygons, they can if the player is in the same polygon they are. Also, they have been known to disregard the polygon type occasionally and enter it, although I’m not at all sure what causes this; and of course, they can get pushed in.
- Monsters never drop items if they die on Item Impassable, Monster & Item Impassable, Platform, or Teleporter polygons, or on the edges of steps/ledges/cliffs.
- Minor Ouch, Major Ouch, Glue, Glue Trigger, and Superglue exist for legacy Marathon 1 compatibility. I address them in my advanced guide; beginning mapmakers probably needn’t bother with them.
Back to top · Table of contents · Advanced guide · Contact me · Website index
Mapping Issues in Weland
Weland has some differences from Forge and a few (mostly minor) bugs. It’s worth being aware of these issues:
- Forge threw an error if you attempted to enter Visual Mode or save a map with any concave polygons. Weland just lets you do it. However, Forge’s more aggressive treatment of the matter was justified in that the engine crashes if a player ever enters those polygons. By default, Weland colors concave polygons orange in Draw Mode, but if a lot of your polygons overlap in X/Y space, concave polygons may not be visible at a given time. Thus, be especially careful when moving lines, points, or polygons.
- In the top-down texture view, if you have a texture selected from any collection except the one specified in Special → Set Level Parameters → Environment, ‘Undo’ always sets the selected texture to the latter environment’s first texture. (The Landscape collection is not immune to this bug.)
- In all other top-down views except Draw Mode, ‘Undo’ always sets the selection to the palette’s first item.
- ‘Remember Deleted Sides’ is a wonderful Weland addition that preserves sides’ texturing and lighting when you delete a polygon and refill it (e.g., with lines divided differently). Unfortunately, it doesn’t always work.
- ‘Split Lines Attached to Polygons’, another wonderful Weland addition, currently always results in lines being marked solid and transparent, regardless of whether they were originally.
Back to top · Table of contents · Advanced guide · Contact me · Website index
Texturing Issues in Visual Mode.lua, Vasara, & VAF
A few problems occur when texturing in Aleph One that were not problems in Forge. These include:
- When you exit visual mode, tags should be in the state they’re meant to start the level in. Thus, if you tabbed a tag switch that starts the level inactive so you could open some doors, reset the tag to inactive. Take special care with wires and chip insertion switches – messing them up can render levels uncompletable. This is one of several reasons I’d recommend avoiding tags where possible – this is just the tip of the iceberg (you don’t need to worry about the other reasons until later).
- In Visual Mode.lua and Vasara 1.0.x, walking on a Must Be Explored polygon (or even looking at it if Exploration (M1) is set) resets it to Normal. (I have not yet tested whether Vasara 1.1 fixes this; I will report back later.) Be sure to reset these after texturing (or just don’t set them until you’ve finished texturing).
- By default, VAF fixes this in a fairly hacky way⁽²⁾ that has the cost of making it impossible to complete Exploration mission types while VAF is running. However, VAF is a texturing app above all, and this is much closer to the Forge behaviour mapmakers are likely to expect.
- In old versions of Aleph One (prior to 1.6, if memory serves), frame interpolation could cause textures to jitter if you placed them without paving first. Some players also reported that placing textures without first paving could cause crashes (I never experienced this, and it was also supposedly fixed in the same Aleph One update). However, paving occasionally crashes Weland (I haven’t isolated the cause, but it seems to be an index mismatch), so it’s ideal to save, pave, then go into visual mode.
- By necessity, texturing always loads all textures, so you may sometimes want to avoid using hi-res textures while texturing. You’ll probably want to run through the map with hi-res assets on once you’ve finished your initial pass, though; when you do, I recommend keeping as few other programs open as possible.
- Visual Mode.lua did not handle wires correctly until version 3.0.2, released on 2024-01-19. If you’re having trouble getting them to work correctly, upgrade to the latest version or use Vasara or VAF.
- Forge’s “align heights in visual mode” feature doesn’t exist in any modern editor; it’s necessary to exit visual mode, change the polygon’s heights, then go back to visual mode to texture it (or use Lua to do that, if you know it; one of several reasons I added overlays to VAF was to facilitate this). If you’re on the obsessive-compulsive spectrum like me, you probably hated Forge’s implementation of this feature because it didn’t actually align heights correctly (see my discussion in in VAF’s readme for specifics). However, I plan to add a less sloppy implementation to VAF once I’m satisfied with my UI design. (I’m not a UI specialist and have long held that UI is far too important to be left up to programmers that aren’t UI specialists.)
- Occasional issues with platforms’ texture alignment.
- If you’re using a version of Aleph One prior to 1.6:
- Upgrade, for the love of Pthia.
- When you exit visual mode (or type .save level), platforms that extend From Ceiling or From Both must be in the same position they start the level in, or you’ll get texture misalignments.
- Aleph One 1.6 largely fixes this and a related platform alignment bug that occurred even in the original engine. Slight misalignments – 1/1024 of a standard texture repetition, if I’m not mistaken – may still occur if you close the editor while the platform is moving, but it seems to be entirely fine if the platform is at rest. To keep this section from getting too far into the weeds, I’ve moved possible solutions for platforms that must move continually to an endnote.⁽³⁾
Further Texturing Issues in Vasara and VAF
- Vasara 1.0.x gets weird with more than 56 lights. If you have both ‘Apply Light’ and ‘Apply Texture’ selected with a light ≥ 56, the HUD disappears; reduce the light value to something < 56 and hit the action key to restore it. If one is selected, but not the other, the HUD functions normally.
- VAF fixes the Lua error spam. It currently does not display previews of lights greater than 55 correctly, but it lists lights from 0 to 97 in its options screen.
- If you leave visual mode (or type .save level) while a polygon is flashing and highlighted on the map for the player to teleport to, this will be set as a Major Ouch polygon and the floor’s transfer mode will change to Static. So… don’t do that. This occurs because Vasara and VAF highlight the polygon on the map by changing it temporarily to a Major Ouch polygon (and physically change its appearance in the game world to create the static effect on its floor).
- Fixing this would require not highlighting the polygon on the map, and after trying that for a bit, I found it more annoying than the current behavior. I’m working on a possible compromise.
Back to top · Table of contents · Advanced guide · Contact me · Website index
Further Reading
Advanced Tutorials & Resources
I can’t vouch for the accuracy of all of this info (except, I hope, my own page), and you definitely shouldn’t worry about most of this stuff until later – you need to familiarize yourself with the fundamentals before moving onto more advanced techniques. (If you don’t know how to play a paradiddle, you aren’t ready to cover a Neil Peart solo.) Hastur’s Workshop is listed first here because it’s the first advanced tutorial you should read – while not all of it is still relevant, you can still find helpful nuggets even in the seemingly irrelevant bits (e.g., viewing distances are no longer limited to 30 World Units, but the tips on that page can still be helpful for making spaces seem larger than they are, which is especially helpful since there are really only about 63 usable World Units in each direction).
- Hastur’s Workshop (advanced tips from Marathon Infinity’s creators)
- My advanced mapmaking page
- Forge tutorials from the Battle Cat, Jason Harper, Even Steven, & Chris Komarnicki
- Anvil references from Hamish Sanderson, Quartz, Mark Levin, Claude Errera, & Raúl Bonilla
- Current Aleph One scripting documentation:
- File format info (note: parts of this now appear to be outdated, but parts may still be helpful)
- M2-flavored Infinity shapes
- If you want to make Marathon 2 maps, I recommend configuring Weland to use Marathon Infinity as the scenario and this as the shapes. Vasara, VAF, and Visual Mode.lua look for the Jjaro collection by default, and weird things happen if they don’t find it. (You can edit them to prevent this, but this prevents the need for that, or for changing Weland’s scenario from Marathon Infinity to Marathon 2 and back.)
M2-formatted M1 shapes
- Note that this won’t actually run with Marathon 1. It’s useful if you want to use M1’s shapes as a base for editing, but you’ll have to convert it back to M1 format afterward if you want to use it with M1.
Back to top · Table of contents · Advanced guide · Contact me · Website index
Game Files
Hi-Res Graphics
Bespoke Graphics
- Global
- Marathon 2/∞: MaraToon by Juzo-kun (a crisp, clean, modernized look for all game assets; extremely high-quality work)
- Landscapes
- Monsters
- Scenery
- Textures
- Weapons
- April Fool’s Jokes
Upscaled Game Assets
Communities
Story & Lore References
- Marathon’s Story Page (if you have story questions, for the love of Yrro, go here first – 90% of them can be answered with a quick search here)
- Marathon Lore Archive (searchable archive of terminals from the trilogy and ARG material from Bungie’s upcoming game; mobile-friendlier, but excludes fourth-wall-breaking content like credit terminals)
- Scenarios on Lochnits (links, maps, terminals, & level flowcharts for major & many obscure fan scenarios)
Gameplay Resources
Wikis
- CyberAcme (Marathon wiki; while this is still getting started, it at least has actual standards for its articles. Please don’t link to Pfhorpedia; not only is it a Fandom wiki, but it’s so full of misinformation as to be entirely unsalvageable.)
- Wikipedia’s Marathon Trilogy article
- TV Tropes:
Music & Sound Resources
Back to top · Table of contents · Advanced guide · Contact me · Website index
Author Biography & Contact Info
I began mapping for Marathon Infinity in 1997 and have since worked on a long list of projects; the best known are probably Apotheosis X (sounds, scripting) & Eternal X (levels, music, sounds, scripting, writing, etc.). See my portfolio for an exhaustive list, or my About Me page for my contact information & a more detailed biography.
As mentioned, I also have an advanced mapmaking page that goes into much more depth. You may also be interested in my Marathon soundtracks page. My discography page features additional Marathon-related music, and I’ve written detailed commentary on my recent music. Additionally, my notes on my remastering process may be helpful to those working on sounds or music.
Back to top · Table of contents · Advanced guide · Contact me · Website index
Acknowledgements
- Jason Karns and Davide Cannizzo on Stack Overflow for the CSS table of contents, which is beyond my relatively competent level of CSS ability.
- Solra Bizna for an incomprehensible amount of programming help, including the code that makes this exact page show up differently if you’re using dark mode.
- The numerous Marathon mapmakers I’ve learned from or been influenced by over the years. I can’t possibly hope to list them all, but James Hastings-Trew, CryoS, hypersleep, RyokoTK, windbreaker, Don-Martin Antell, Drictelt, Mike Trinder, Jason Harper, Chris Lund, Courtney Evans, Frank Rooke, Devon Belcher, Borzz, Rich Dierkes, Shebob, Jason Jones, Greg Kirkpatrick, Randy Reddig, Antonio de Llamas, and FrigidMan undoubtedly number among them.
- The numerous people who’ve helped maintain Aleph One and its editors over the years.
- Bungie, for obvious reasons.
Back to top · Table of contents · Advanced guide · Contact me · Website index
Endnotes
# |
Note |
1 |
By my standards, at least! |
2 |
Namely, when VAF loads the map, it makes a table containing all polygons marked as “Must Be Explored”, then in Triggers.idle , Triggers.postidle , and Triggers.cleanup , it scans that list, and if any polygons have been set as “Normal”, it resets them to “Must Be Explored”. If this doesn’t make sense to you, don’t worry; it’s in a footnote because it’s far beyond the scope of this guide. |
3 |
- Tie the platform’s activation to some specific action on the map, such as a “platform on trigger” on the player’s spawn polygon; then X+click to load the level from elsewhere when you go to texture.
- Set the “platform on trigger” as something besides the starting polygon that players must walk on before they can see the platform; then teleport around the map to avoid walking on it.
- Another solution is reportedly to type
.save level in the Lua console rather than to close visual mode; you’ll then have to (re)load the version you saved (which will show up here) in Weland.
- If you use any of the above solutions, you’ll need to remember to repeat it each time you open visual mode. If you’re comfortable with Lua, you can save yourself the trouble by simply having the level’s Lua script activate platforms in
Triggers.init . (I strongly recommend never using polygon IDs in Lua scripts, since you’d have to rewrite them after deleting polygons with smaller IDs; instead, put goal objects on them with checkpoints set to a memorable number you won’t use for anything else.)
|
4 |
Trojan, EVIL, Tempus Irae, RED, Eternal X, Rubicon X, Phoenix, Mararthon Yuge, Apotheosis X, and Istoria.
- I’d unconditionally recommend Tempus Irae, Eternal X, Phoenix, and Apotheosis X, but I feel ethically obligated to note the small caveat that I may be biased as a contributor in some fashion to current or forthcoming releases of all four: I remastered Phoenix’s music; wrote Apotheosis X’s Lua and remixed/remastered some of its sounds; and did too many things to list for Eternal X and Tempus Irae Redux. However, I was listing all four of these scenarios on what was, at the time, my top five list long before I worked on any of them, so that caveat is so small you’d need a microscope to see it.
- Rubicon X and Istoria round out my top six with the caveats ‘don’t play Rubicon X above Normal unless you think LASO is fun’ and ‘the Flame IADD fight can heck right off’.⁽⁵⁾
- If you’re attuned to Yuge’s irreverent humour, it’ll reward you with fantastic gameplay and a remarkable demonstration of procedural level design.
- Trojan is great for those who wish Marathon 1 had been longer. Even if you don’t play it, check out the OST, which slaps. (Also, I remastered the music and sounds for the standalone edition; unfortunately, its fork of Aleph One is years behind its current feature set).
- RED’s execution can be sloppy, and it’s probably too difficult, but it has some fantastic ideas and artwork, and it’s remarkable for having been made almost entirely by a single person – a teenager at the time, to boot. It’s little surprise that he later became a professional game and webcomic artist with credits including the Slime Rancher series, Spiral Knights, Three Panel Soul, and Mac Hall.
- Lastly, EVIL’s strengths include professional-quality sprites; fantastic sounds, monsters, and weapons; and sometimes brilliant (if frustratingly inconsistent) level design.
|
5 |
To be fair, Istoria 1.1, which I haven’t played yet, rebalances the Flame IADD fight – what I’ve read leads me to suspect that I’ll find the redesigned version somewhat less obnoxious.
…Also, I’ve technically contributed to Rubicon X as well, though I’m uncredited; on 2022-09-21, I released a plugin that was effectively integrated wholesale into the game on 2024-04-25. I’m not especially fussed about being uncredited; the plugin can’t have taken me more than thirty minutes to make, and it’s easily the least significant of my contributions to what, at the time I wrote it, were my top five scenarios.
I can’t say that I’ve contributed to all my favorite scenarios, though, because my top five is now a top six. I haven’t contributed in any way to Istoria and doubt I ever will; I can’t imagine them ever needing my help. |
Back to top · Table of contents · Advanced guide · Contact me · Website index