Nearly every track is one model repeated: cn3, a wall bar whose gauge image is two closed 25x5 rectangles. Five metres of wall thickness is finer than the plan can resolve, so each bar was landing as two parallel lines plus two end caps - several hundred times over, which is the hatching that swamped the arenas. Collapse a thin closed quad to the centreline between its short edges: one stroke for one wall. Walls stacked to build height coincide seen from above, so draw each distinct wall once. And drop placements standing alone more than 200 units from any other - fourteen tracks park a single bar at (1200,0,0) well off the course, and that one placement stretched the frame to twelve times the width of the track. The four tracks without it are exactly the four that always framed correctly. A real branch keeps its neighbours and stays: Paingod's second canyon is sixty bars out at x=-400.
73 lines
4.0 KiB
Smarty
73 lines
4.0 KiB
Smarty
<!doctype html>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Red Planet - the tracks</title>
|
|
<style>{css}</style>
|
|
|
|
<header class="top">
|
|
<div class="wrap">
|
|
<p class="eyebrow">Red Planet 4.12 · plans drawn from RPL4.RES</p>
|
|
<h1>Every track,<br><em>seen from above</em></h1>
|
|
<p class="lede">There are no track maps in the game's files — the console had
|
|
pictures of them and those pictures did not survive. But the game draws one every
|
|
race: the map screen in the pod renders the track from above. <strong>These plans
|
|
are that same drawing, reconstructed outside the game</strong> — the same
|
|
outlines, from the same placements, straight down.</p>
|
|
</div>
|
|
</header>
|
|
|
|
<div class="bar">
|
|
<div class="wrap bar__in">
|
|
<div class="seg" role="group" aria-label="Filter">
|
|
<button type="button" data-filter="all" aria-pressed="true">All</button>
|
|
<button type="button" data-filter="arcade" aria-pressed="false">Arcade</button>
|
|
<button type="button" data-filter="r411" aria-pressed="false">4.11</button>
|
|
<button type="button" data-filter="later" aria-pressed="false">Community</button>
|
|
<button type="button" data-filter="race" aria-pressed="false">Death race</button>
|
|
<button type="button" data-filter="football" aria-pressed="false">Football</button>
|
|
</div>
|
|
<input id="search" class="search" type="search" placeholder="Search track…"
|
|
aria-label="Search track">
|
|
<span class="count" id="count">{n} / {n} TRACKS</span>
|
|
</div>
|
|
</div>
|
|
|
|
<main class="wrap">
|
|
<div class="key">
|
|
<span><i style="background:var(--ink-mid)"></i>What the map screen draws — walls, structures, pit</span>
|
|
<span><i style="background:var(--sys)"></i>Offered for the death race</span>
|
|
<span><i style="background:var(--pilot)"></i>Offered for football</span>
|
|
</div>
|
|
|
|
<div class="grid">{cards}</div>
|
|
<p class="empty-state" id="nomatch" hidden>No track matches that.</p>
|
|
|
|
<p class="foot">{n} tracks: {arcade} shipped in the 4.10 arcade cabinets, {r411} added
|
|
in 4.11, {later} built by the community afterwards. Each plan follows
|
|
<code>NavDisplay::DrawStatic</code>: for every placement in the map's instance
|
|
stream, look up that model's <code>GaugeImage</code> — a small set of outlines
|
|
in world units, the same ones the pod's map screen draws — and lay it down
|
|
rotated and positioned. A placement whose model has no gauge image is skipped here
|
|
exactly as the map screen skips it, which is why a card can say fewer placements
|
|
carry map art than the track contains.</p>
|
|
<p class="foot">Two things are drawn plainer than the pod draws them, so the plan reads
|
|
as an outline. Nearly every track is one model repeated — <code>cn3</code>, a
|
|
wall bar whose gauge image is two closed 25×5 rectangles. Five metres of wall
|
|
thickness is finer than the plan can resolve, so each bar is collapsed to the
|
|
centreline between its short edges: one stroke for one wall, instead of two parallel
|
|
lines and two end caps several hundred times over. Walls stacked to build height land
|
|
on each other seen from above, and are drawn once. Placements standing alone more than
|
|
200 units from any other are dropped — fourteen tracks park a single bar at
|
|
(1200, 0, 0) far off the course, and one stray placement stretches the frame
|
|
to twelve times the width of the track. A real branch keeps its neighbours and stays:
|
|
Paingod's second canyon is sixty bars out at x = -400.</p>
|
|
<p class="foot">So the walls are the canyon walls and the chambers are real chambers,
|
|
but there is still no driving surface: the map draws what lines the route, never the
|
|
tarmac. Extent and relief are the span of the drawn outlines in world units, so a
|
|
long thin plan is a point-to-point run and a squat one a circuit or an arena.
|
|
Tracks marked NOT IN THE MENU exist in the resource file but the setup screen does
|
|
not offer them.</p>
|
|
</main>
|
|
|
|
<script>{js}</script>
|