A supplement to my advanced Marathon Aleph One mapmaking guide, though if you’re new to mapmaking, you should definitely start with my beginners’ guide. This is also something of a follow-up to a case study I wrote on map complexity.
Please contact me if you notice any errors or omissions.
A problem that has plagued every creator of sufficiently complex Marathon Aleph One maps is its limit of 65,536 map indices – is its primary cap on map complexity. I explain the matter at greater length in my general guide, but in short, each vertex, each line, each polygon, each line shorter than 0.5 World Units (polygon exclusion zones, used to denote lines players can’t cross), each platform, and each polygon within a 10 World Unit X/Y radius of each sound object uses a map index. (Note: Take this list and all map index totals listed here with a grain of salt: the list may be incomplete, and I may not have every factor exactly right. I plan to do a deep dive into the source code within the coming weeks.) 65,536 initially sounds like a lot, but this all adds up quickly!
Unfortunately, if you run out of map indices, your only choice is to simplify your level – otherwise, it won’t even load due to an assertion failure. If you have an easy way to split it into two levels without compromising the mission or the flow, that’s by far the optimal choice, as it allows you to leave its detail intact. (The sole caveat is that you’ll need to be sure any geometry shared between both levels remains consistent, or it’ll spoil the effect of them being connected.)
If that isn’t an option, you’ll have to reduce the level’s count of one or more of the following:
It may seem tempting to prune sound objects first, as they are by far the largest user of map indices, but I’d advise caution in doing so – sudden transitions from one ‘sound region’ to another can be jarring. Aleph One 1.7’s new OpenAL sound engine actually lessens this problem somewhat by preventing sounds from suddenly cutting off when the player crosses from one boundary to another; however, they still suddenly start up, so only half the problem has been solved.
More importantly, though, you almost certainly didn’t fill polygons as efficiently as you could’ve. I mentioned in my case study on map complexity that ‘Monument to All Your Sins’ (a massive level from RyokoTK’s brilliant net map pack Starlight) has 1,843 polygons. In addition, it has 3,277 vertices and 5,171 lines.
Before I proceed here, I want to be extremely clear that the following is not in any sense meant to throw shade at Ryoko, who’s one of the most prolific and consistently brilliant Marathon level designers in history. I’m not on his level and doubt I ever will be. That said, the solo adaptation I created for Marathon Chronicles, from which I removed none of the original’s visual complexity, contains 1,784 polygons, 3,271 vertices, and 5,106 lines (a savings of 59 polygons, 6 vertices, and 65 lines). The image below (click to enlarge) compares the two versions to show where I pruned polygons:
The fact that I only found 59 polygons to prune is actually quite impressive. Here are a few levels from various editions of Where Monsters Are in Dreams with their initial polygon counts, the polygon counts I pruned them to, and the number of polygons I pruned. (In all cases, the levels’ appearance was not visibly changed.)
Level | Ante | Post | Δ |
---|---|---|---|
We Were Speaking of Fate | 1,705 | 1,500 | −205 |
Cause & Effect (first iteration) | 2,466 | 2,222 | −244 |
Burning Memories | 2,217 | 2,020 | −197 |
Cast Your Fate to the Stars | 1,950 | 1,768 | −182 |
I’m not letting myself off the hook for inefficient polygon use here: ‘Cast Your Fate to the Stars’ is my level!
In any case, I’m not saying this because I think it demonstrates any kind of talent on my part (for one thing, as El Estepario Siberiano, arguably the greatest drummer alive, has argued, talent is a lie); it simply requires attention to detail and understanding of geometry, both of which can be learned. I’m revealing this solely to indicate how many polygons can often be removed without negatively impacting a map’s appearance. Furthermore, not merely will pruning polygons reduce a level’s map index use, but it will also improve its performance.
Back to top · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index
These principles have served me well:
Back to top · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index
There are, of course, potential pitfalls as well:
With all this in mind (not to mention what a pain it is to retexture areas after deleting and remaking polygons – Weland’s ‘Remember Deleted Sides’ only works some of the time), I can’t blame anyone for not finding polygon pruning to be the most attractive solution. Ideally, you can prevent the need to prune by looking closely at your geometry before you even begin texturing. However, I’m surely not the only person who’s planned one thing for a level, then wound up doing something entirely different that required fewer polygons than expected.
In any case, as time-consuming and frustrating as this process can be, it’s still – to me at least – far preferable to having to sacrifice map complexity. Hopefully this helps.
Back to top · Mapmaking (basic) · Mapmaking (advanced) · Contact me · Website index