Perpendicular Layout
What it is
A multi-projectile spawn pattern in which every shot in a single fire event travels parallel along the same aim direction, but spawns from points offset sideways from the ship along the axis perpendicular to that aim. The result is a wall of simultaneous shots rather than a cone of angular spread or a tight stack at one muzzle. Spread is positional, not angular — every projectile flies the same heading.
Geometry
Each shot i of count shots gets a perpendicular offset along the axis 90° from the aim direction. The line is centered on the ship, with shots evenly spaced.
| Quantity | Formula | Notes |
|---|---|---|
| Perpendicular axis | aim angle + 90° | rotates with facing |
| Per-shot offset | (i − (count − 1) / 2) × spacing | centers the line on the ship |
| Center shot offset (odd count) | 0 | sits on the ship’s aim line |
| Total line width | (count − 1) × spacing | grows linearly with shot count |
| Shot heading | aim angle | identical for every shot |
For weapons that arc to a landing point (cannon-style), the landing positions receive the same perpendicular offset as the spawn positions, so impacts land in a line at the target as well — the whole volley moves as a rigid bar from muzzle to target.
Spacing source
| Source | Used when | Value |
|---|---|---|
Explicit perpSpacing on weapon spec | Set on the weapon | The literal pixel value |
| Direct-fire fallback | perpSpacing unset, direct path | clamp( 50 / count, 7, 50 ) px |
| Arc-mortar fallback | perpSpacing unset, arc path | 18 px |
Explicit spacing means the line grows wider with each added shot. The direct-fire fallback shrinks per-shot spacing as count grows, keeping the total line width roughly constant.
Which weapons use it
| Weapon | Spacing (px) | Shots at L1 | Shots at L20 | Notes |
|---|---|---|---|---|
| Cannon | 18 | 1 | 8 | Arc path; lands as a line at the target. Inherits 25% double-shot chance, which doubles the whole volley. |
No other base weapon in the current weapon table enables this primitive. Shotgun-style multi-pellet weapons use angular spread instead (see Spread).
Interactions
| Interacts with | Effect |
|---|---|
| Spread (angular) | Heading stays locked to aim regardless of any spread value — angular spread is bypassed by this primitive. |
| More Projectiles (horizontal modifier) | Adds shots to the volley. With fixed spacing the line widens; total damage on a single packed target rises only if shots can stack on the same enemy. |
| Double-shot chance | Rolls once per fire event; on proc the entire perpendicular volley fires twice, producing two parallel lines (cannon: 25% chance). |
| Random spawn offset | Applied on top of the perpendicular offset — jitters each shot’s spawn point after the line is laid out. |
| Stagger delay | Forced to 0 when this primitive is active — the whole line fires on the same frame. |
| Target mode | Aim direction is chosen by the weapon’s target mode first; the line is then drawn perpendicular to that resolved aim. Flanking target mode pairs naturally because the line sweeps across sideways crowds. |
| Shell speed variance | Per-shot ±10% speed jitter still applies — the line stays straight at launch but desyncs in flight. |
EXTRACT-CANDIDATEs
EXTRACT-CANDIDATE: weapons/cannon.md— Cannon-specific page should reference this primitive and list its perpSpacing of 18 px alongside shellCount progression.EXTRACT-CANDIDATE: concepts/spread.md— Angular spread concept page should contrast itself against this primitive (angular vs positional spread).EXTRACT-CANDIDATE: concepts/double-shot.md— Double-shot proc page should note that perpendicular volleys double as whole lines, not as duplicated single shots.EXTRACT-CANDIDATE: concepts/horizontal-modifiers.md— More Projectiles entry should call out the line-widening effect on perpendicular-layout weapons specifically.