authoring
Turns the code in `game.airframe.runnermesh` into the assets the world carries: thirteen `.mesh` folders under `meshes/`, ten `.material` folders under `materials/`, and the plating texture the hull wears.
airframe/authoring — writing the runner into the world
Turns the code in game.airframe.runnermesh into the assets the world carries:
thirteen .mesh folders under meshes/, ten .material folders under
materials/, and the plating texture the hull wears.
local Auth = require("game.airframe.authoring")
Auth.generateSkin() -- bake runner_plating.svg → runner_plating.texture
Auth.generate() -- meshes + materials, bound to the baked plating
It is idempotent: run it again after a change to the geometry or the palette and every asset is re-authored in place.
The plating
runner_plating is authored as an SVG — panel breaks, rivet runs, replaced
plates, soot trailing aft of the gun ports, hazard chevrons, walkway hatching
and stencilled numbers — and baked to a texture by the engine's svg→texture
importer. The stencil glyphs are drawn as bars rather than text so the bake
never depends on a font being installed wherever the world happens to open.
The same image is bound to both base_color_texture and emissive_texture
on runner_skin. That is the whole point: inside a supercell the only reliable
light is the storm's own and it is intermittent by design, so the panel breaks
and the rivet lines have to survive a frame where nothing is lighting the runner
at all.
It is authored with more contrast than a close-up would want, because the runner is read at about a tenth of the screen's width while it is being flown, and at that size a subtle panel line is no line at all.
The palette
Every colour comes from A.K.PALETTE, lifted by a gain the shaft's darkness
needs. emissive on the standard PBR shader is a full colour with its own
emissive_intensity, which is what carries the gun heat, the engine bell, the
visor and the nav strobes without a second texture.
Scoped to this part · feeds back into the world's score.