ASF-79 · LIVING FRONT DOOR · P4B ULTRAWIDE DEFAULT
MENU SAFE
WINDOW APERTURE
LEFT SCREEN MASK
RIGHT SCREEN MASK
DESIGN CENTRE
—
ASHLIGHT FRONTIER
Endless Wave Runner
Locked for this run —
effects stack from the choice made at New Game. Quit to change it.
NEW HIGH SCORE
WAVE —
3–10 characters · letters, numbers, dash, underscore · blank is fine, just skip
HIGH SCORES
ASHLIGHT FRONTIER — UFO ENCOUNTER SYSTEMS
Training and Simulation Module — Ashlight Science and Exploration Division
Simulation initialized. This module runs an endless wave defense scenario: protect the
tagged non-synthetic life population from abduction while sustaining turret coverage across
escalating incursions. There is no scripted end state — the scenario runs until the defense
grid collapses. (Scoring: wave reached is what's ranked. Efficiency only breaks ties.)
You'll place turrets from inventory, manage possession-mode control of individual units,
and hold the line as pressure increases wave over wave.
Explore. Engage. Survive. Repeat.
— ASH
New Game shows only what a player should see — Dev Mode reveals every
tuning slider and test control built so far. Nothing is lost either way; this only changes
what's visible. Extras is a placeholder stub for the packaged build. Esc reopens this menu
once a run is active — Continue resumes, Quit ends the run and unlocks Settings again.
Created By SHANE TYAS — coding supported by Claude Sonnet 5 / GPT 5.5 High · 2026 Copyright. All rights reserved.
FPS-- UFO0 PROJ0 FX0
MINIMAP
CREDITS0
POWER
0/100
COMPUTE
0
RESEARCH
0
GLOBAL
ELEVATION
READY
2 PAINT TARGETSearmark
3 ORBITAL STRIKEearmark · CD
4 + SLOTunassigned
VFX TUNING — press ~ to toggle
RIPPLE
Width
Emission
Coverage
Speed
Decay
Flare
SHIELD FX
Opacity
Base color
Impact color
TURRET RANGE
Ring opacity
PLASMA LOCK
Mode
Core color
Glow color
Core emission
Glow emission
Core width
Glow width
Bend amount
Whip speed
Jitter amount
Jitter speed
Branch rate
Branch life
Pulse speed
Pulse depth
Attach emission
BOSS TESTING
Skips the wave-target requirement — spawns immediately regardless of run mode or current wave, for testing only.
MOTHERSHIP — BODY
Scale
Max HP
Hover height
Drift amount
EMITTERS — LAYOUT & HP
Radius
Height offset
HP each
Cooldown min
Cooldown max
Strike damage
Regen (HP/s)
Stubbed for now — not wired to actual regen logic yet. This first mothership stays permanently disabled once its emitters are destroyed.
EMITTER STRIKE — VISUAL
Ring count
Ring width
Ring decay time
Ring emission
Beam duration
DRONE TRICKLE
Spawn gap min (s)
Spawn gap max (s)
No cap on total drones spawned — this is rate only, deliberately free-running for pressure testing.
DISPLAY
Real theatre HUD element (top-right stack), not buried in the dev sidebar — visible during actual play regardless of the sidebar's own state. Turning this off skips the draw call entirely, not just the display, in case it's ever worth shaving off the frame cost.
Size
CONTENTS
Buildings never had a dot at all before this — turrets, UFOs, and animals were the whole picture. Facing compass is a small rotating wedge in the corner matching the free-look camera's current orbit yaw, not a full map rotation — cheap orientation cue without needing the map itself to spin.
STRUCTURE
Base radius
Platform radius
Platform height
Mast top height
Sphere radius
Live on the placement ghost and shop preview right now. Already-placed towers keep whatever shape they were built with — this doesn't retroactively reshape anything standing on the field.
MATERIAL
Steel color
Accent color
Accent emission
Brightened from the first pass by default — lighter steel base, and the housing shell around the emitter core now carries its own dim emissive tint instead of sitting flat dark.
COMBAT
Damage %/sec
% of the locked target's combined max HP + max shield, dealt per second of continuous lock. Percentage-based on purpose — self-scales with however UFO HP ends up tuned, rather than needing its own separate balance pass every time that changes. Deliberately the strongest single-target weapon in the kit; the real cost is the single lock itself, not the damage number.
STRUCTURE
Max structural HP
Applies to newly placed stations — doesn't retroactively resize an existing one's HP pool, same rule as the spire's own structure sliders.
SHIELD REGEN
Regen delay (s)
Regen rate (HP/s)
Same delay-then-regen pattern this game already uses elsewhere — a fixed no-damage window before the shield starts climbing back, not a continuous trickle-while-under-fire regen. Was previously two hardcoded constants; live-tunable now, applies to every station immediately.
VULNERABILITY
Global now, not per-station — moved off the individual building panel. Unchecked by default, so a fresh station is vulnerable out of the box; check this to protect every station on the field at once for testing.
SPAWN — WITH CLOAK ENTRANCE
Each one forces that exact variant (bypasses the normal spawn-chance rolls entirely) and drops it well inside the play area near center rather than the map edge, so it's on screen immediately. Arrives using the same cloak-in visual as the departure cloak abducting UFOs already use (fade-in, booster trail, settling spin) — same underlying function pair either direction, built as a real reusable snippet rather than one-off code for this button.
MOTHERSHIP
Spawn button lives on the MOTHERSHIP tab (Boss Testing) — confirmed still wired and untouched this pass, not duplicated here.
REGISTRY
One unified log now, not a UFO-only one with turrets/buildings bolted on separately — everything that dies in the theatre, most recent first: id, type, mission (UFOs only), cause, and whatever killed it. Bounded to the last 200 entries; last 40 matching the checkboxes above are shown. Refreshes live while this tab's open.
REINFORCEMENT POOL
Retreated/escaped survivors specifically — a real, distinct concept now, not an unlabeled subset of "everything inert." These are the units a future wave-condition trigger (every 10th wave, a budget system, whatever gets decided) would pull back in. For now, the button below calls all of them in manually, on demand.
GHOST POOL — MESH REUSE
Separate concern from the Reinforcement Pool above — ordinary kills, kept around purely for cheap mesh recycling on future spawns, not units waiting to be called back in. Not shown here as revivable "units," just the raw pool state per variant.
TARGET CLAIMS — LIVE
— claims · — turrets active
One row per live entry in the real claims Map — turret → UFO, with real time-to-expiry (soft claims lapse ~1.2s after a turret stops re-acquiring). Sanitized on the same real paths every other death/retreat event uses — destroy, cloak-exit start, cloak-exit complete, and Group Focus override — so a STALE row here means an actual gap, not expected behavior.
UFO STATE — LIVE
— live UFOs
The other half of the same picture — what every UFO is actually doing right now, read straight off its real task object: id, mission (task type, plus Saboteur's permanent missionLock where set), and current target. This is the exact state a future UFO-side claim system would need to read — nothing here is UFOs claiming anything yet, this is just making what they'd need to know visible first.
QUICK START
Jumps straight to the ready-to-place state — cancels the intro terminal outright rather than needing a turret placed to get there. For testing: go straight to dev bundles instead of watching the ceremony play out.
PERFORMANCE
FPS -- · UFO 0 · PROJ 0 · FX 0 · TURRETS 0
Same live numbers and thresholds as the corner monitor (amber under 50fps, red under 42fps) — this is a second read of the identical counters, not a separate measurement.
COMPUTE
Data Centre max HP
Data Centre power draw
Compute per wave (per T1 Data Centre)
Max Data Centres placeable
Global compute pool cap
A real hard placement cap, not a soft "only some contribute" rule — placing a Data Centre beyond the limit above is blocked outright, same red-ghost/toast treatment as any other blocked placement. Every Data Centre that exists is therefore always a real contributor when powered. Tier upgrades (not built yet) raise what each one produces, since the cap on count means that's the only lever left to scale output. Hitting the global pool cap auto-powers-down every Data Centre — Tech Labs do genuinely consume Compute now, but if production still outruns that conversion, the pool fills anyway and there's no reason to keep drawing power once it has.
TECH LAB
Tech Lab max HP
Tech Lab power draw
Research conversion (per T1 Tech Lab, per wave)
Converts stored COMPUTE into RESEARCH each wave, while powered — real subtraction from the Compute pool, not a free side-read of it. Uncapped placement on purpose: Research is downstream of an already-capped resource, so the same runaway-stacking risk that justified Data Centre's hard cap doesn't apply here yet.
FABRICATION FOUNDRY
Foundry max HP
Foundry power draw
Spends CREDITS to queue ground units, once any exist — no CREDITS-per-wave economy hook needed the way Compute/Research have, since this building only spends on demand rather than accruing anything of its own. Uncapped placement, same reasoning as Tech Lab.
POWER MANAGEMENT
Circuit breaker (default): powered entities are resolved in placement order — draw is allocated to the oldest-placed first, anything after the grid runs out browns out automatically, even if it's individually switched on. Simplest mode: if total draw from everything switched on exceeds capacity at all, everything browns out at once until you bring it back under budget yourself. Either mode, switching an entity off always frees its exact draw back to the grid immediately — the manual toggle lives on each turret/spire's own info panel.
WAVE FORCE-CLEAR
Real kills through the same registry pipeline as any other death (cause: combat, no killer) — not a fake/silent removal. If the mothership is present, sends it into its own real departure sequence instead of deleting it outright. Doesn't call wave-complete directly — checkWaveComplete() already gates on every UFO being dead/escaped and the boss not being mid-fight, so clearing the field genuinely triggers it for free, same as winning normally.
GOVERNOR OVERRIDE
Ignores both the default cap (10) and the Stress Test Governor's raised cap (30) entirely — genuinely unbounded placement. No safety net beyond your own judgment; watch the Performance readout above while you push it.
SHOP PREVIEW
PLACEMENT
Snapping sensitivity
DEV BUNDLES
5x turret, 5x MK2 upgrade, 5x each of the 4 laser modules — free, straight to inventory.
5x turret, 5x MK2 upgrade, 5x each of the 3 EMP modules.
5x turret, 5x MK2 upgrade, 5x each of the 3 ammo types.
5x Shielded Power Generator, 5x Arclight Spire, 5x Data Centre. Buildings only — room for more here as new building types get added.
Base value (this run's starting slider position) → each applied card's bonus, bracketed → live total. If the total doesn't match the base with no cards listed, something's stacking that isn't shown here — that's the bug this panel exists to catch.
Soft cap, not a hard wall — once the running total crosses this, remaining picks get proportionally less likely to add more, floored so nothing's ever fully locked out. This is the real fix for pathological stacking (evade + reinforcement + shields + retreat speed + Legendary survival all individually valid, combined unwinnable).
Running total this run: 0 / 40
MISSILE CAMERA FEED
feed disabled
TURRET ROSTER
FX / DATA REGISTRY
loading asset registry / previews…
AUDIO — PHASE 4B ECONOMY/LIFECYCLE
context: — · unlocked: —
CTX —
no events yet — click BEGIN or a test button to unlock audio
click stage to place turret · right-click removes · click turret for repair modal
TURRET
ID—
Type—
Power Output—
Power—
Health—
Shield—
Compute—
Research—
ORDNANCE — CLICK TO LOAD ON T
LASER MODULE SLOTS — CLICK TO ACTIVATE
EMP MODULE SLOTS — CLICK TO ACTIVATE
UTILITY SLOTS
COMPUTE MODULES — none built yet
DPS—
RATE—
RELOAD—
ACTIVE CARDS — THIS CLASS
Repair amount/cooldown are set in Dev Mode (Turret Handling)
— currently —. Not duplicated here on purpose; one real
source of truth instead of two sliders that could drift apart.
——RANK —
HULL
—
SHIELD
no module
DPS—
RATE—
RELOAD—
ORDNANCE — N TO CYCLE
ACTIVE CARDS — THIS CLASS
ENCOUNTER OVER
DEFENSE COLLAPSED
WAVE COMPLETE
REARM & RESUPPLY
Step 2 of the run loop — spend, then proceed to defense prep. Shop-only; not available in raw sandbox/Encounter Active testing.
DEFENSE PREPARATIONS
Arrange turrets, assign inventory, check the roster — battlefield's live below. Wave
begins automatically when ready hits zero, or press early.
Unchecked: place turrets, spawn waves, and test freely — no ending banners
fire, this is sandbox mode. Checked: resets to a clean slate and arms both the defense-
collapse loss condition and wave-complete win detection. This is the actual "begin
encounter" gate — nothing below counts as a real mission until this is on.
Off (default): wave size capped at 32, turrets capped at 10 — the sane,
conservative range. On: wave size up to 100, turrets up to 30, for deliberately finding the
real upper limit rather than guessing it. Watch the FPS readout — under 50 gets flagged
amber, under 42 logs a warning.
Encounter Setup
A curated run — its own starting turrets, credits, and wave target —
separate from the raw sandbox toggle above. Begin Run arms the exact same win/loss gate
Encounter Active does (same encounterArmed flag, same dev-button lockout, same
loss detection), it just configures the starting state before arming it. Nothing here
forks or duplicates that logic.
Presets fill the fields below — starting turrets, credits, credit rates,
wave target, and turret range — every value stays a real slider/input you can still
hand-tune after picking one.
Credits / wave
Credits / kill
Credits / protected
Defense prep timer
After the shop closes, this much time to arrange turrets/inventory with
the battlefield visible before the next wave auto-starts. Always skippable early.
Protect pays above kill on purpose — the original design goal was that
protecting animals should never be the worse choice versus just farming kills to end the
wave faster. First real numbers, not tuned by playtesting yet — that's what these sliders
are for.
Turret Placement
Inventory (dev)
Quick way to seed inventory for testing without buying from the shop. Turret
items place for real (same placeTurret() the quick-place buttons use). Shield
Core sockets for real too — same stats as Shield Generator MK1, click an empty utility slot
on a selected turret to attach it.
Wave Director
Wave size
Max abductors
UFO speed
UFO health
Shielded %
Saboteur %
Saboteur is a separate, additional roll — checked at spawn same as elite/shielded, not instead of them. Mission-locked to building destruction (power stations, Arclight Spires) for its whole life; only breaks the lock while confused, and only spawns at all if a valid building target actually exists.
Shield HP
Evade chance
Min height
Max height
Evade height
Evade drift
Spawn gap
Time limit (0=off)
Abduct lift
Abduct max alt
Abduct decay
Ring radius
Ring spin
Ring height
UFO damage
UFO fire rate
Wave director assigns tasks (scan/abduct/attack/retreat) to idle UFOs directly — no per-UFO state machine, one weighted pick per idle UFO per tick.
Missile Cockpit (hero mode)
Focus command ready. Lock a target, then press F or use the button.
Pointer-lock mouse aim. Reticle red = missile lock. Click/Space fires. M cycles missile camera. F = group focus command.
Cam height
Cam back
Cockpit camera sits at the turret base plus this much height, pulled back this
far along the aim direction — tune live to sit just above/behind the barrels instead of
inside them. 0 back / low height reproduces the old clipping position.
Missile Finesse
Rate
Damage
Speed
Fuel
Reacquire
Turn
Ammo box size
Rounds credited to a turret's own ammo stock each time a box gets assigned
(see the turret modal's ordnance chips). Confirmed default: 20 — same number the ammo
assignment earmark settled on.
Laser / EMP Finesse
Laser rate
Laser dmg
Laser speed
EMP rate
EMP radius
EMP proximity
EMP flash
EMP fall G
Turret Handling
Range
Track
Aim gate
Turret HP
Repair amt
Repair CD
Focus dur
Focus CD
HP bar size
Power grid capacity
Missile 8 · Laser 10 · EMP 14 kW base draw, MK2 ×1.5. 10 turrets at a
mixed MK1 loadout lands around 80-100 — the cap and the power budget hit close to the same
point on purpose, so the meter is the real reason for the cap, not a second arbitrary
number sitting next to it.