POWER ROUTING PROTOCOL
ATTEMPTS
ENERGY
100
00:00
0
INVENTORY
ROUTING GRID AWAITING SIGNAL
ACTIVE PIECE
SELECT PIECE
SYSTEMS
SCORE
THIS SECTOR 0
CUMULATIVE 0
0
○=STUB ▶=FIRED
SECTOR 01 | PLACED 0 | SYSTEMS 0/1 | ENERGY 100 | | RSA T1 | CLICK=PLACE · PIECES PERMANENT
SETTINGS
ASHLIGHT SYSTEMS · ROUTING PROTOCOL
GAMEPLAY
RSA MODE
Persistent: noise carries between levels.
Reset: clears each sector (floor rises).
DIFFICULTY
Standard: normal RSA aggression.
Hard: +25% noise per action.
Roguelike: RSA gets extra turns.
UNDO
Allowed: use undo freely.
Disabled: committed placements only.
AUDIO
SFX VOLUME
Sound effects — placement, routing, loot.
Set files in sfx/ folder, then enable.
SFX
BG MUSIC
Ambient background music volume.
Add tracks to sfx/ folder.
BGM
ASH VOICE
Ash commentary on level events.
Mute to suppress all voice lines.
WAVEFORM
Live oscilloscope on bg music bus.
Responds to RSA tier. [earmark: waveform-visualiser]
BG TRACK
Select ambient music track.
Place .mp3/.ogg files in sfx/music/. [earmark: bg-music-select]
DEPTH · WIRE · VISUAL
PARALLAX
Depth layers below routing grid.
Mouse movement shifts layers.
PARALLAX RANGE
How much layers shift with mouse. 0=off 100=max
LAYER OPACITY
Base visibility of depth layers. 0=hidden 100=full
FOG DENSITY
Scanner fog darkness. 0=clear 100=max fog
FOG FADE SPEED
How fast fog creeps back after scan. 0=permanent 100=fast
SCAN INTERVAL
Auto-scan tick rate in seconds. 2=fast 10=slow
SCAN REVEAL SIZE
Radius of each scan reveal. 50=small 200=large
CELL OPACITY
Black cell background fill. 0=transparent 100=solid
DEBUG
Shows SFX tab, seed values,
probability logs in terminal.
WIRE COLOURS
UNLIT WIRE
Unpowered wire colour
UNLIT GLOW
0–12
POWERED WIRE
Active signal colour
POWERED GLOW
0–20
BOOSTED WIRE
Overload colour
BOOST GLOW
0–20
CHEVRON ALPHA
Flow indicator 0–100
SRC GLOW
Source node 0–40

THIS WILL WIPE ALL SESSION DATA,
RSA STATE AND PROGRESS. CONFIRM?

⚠ LEVEL SELECT — DEV ONLY
📡
SONIC EMITTER
"Broadcasts a targeted null-event burst across
active scan frequencies. RSA reports clean.
Effect duration: one scan cycle."
SUCCESS CHANCE: 70% · PARTIAL: 30%
CARD CONSUMED ON USE
SIGNAL RESTORED
SYSTEM ONLINE
0
SCORE
0
PIECES
EFFICIENCY
ENERGY
CODEX FRAGMENT
SYSTEMS · TERMINAL INCURSION · FIELD OPERATIONS
EXPLORE ENGAGE SURVIVE REPEAT
ASHLIGHT SYSTEMS v5.0 · SECURE BOOT PROTOCOL · LINK ESTABLISHED TERMINAL NETWORK · NODES: 0 / 7 · SIGNAL: ACQUIRING
OPERATOR ID: ASH-743C · CLEARANCE: 05 DATA ENCRYPTED · TRACE: MINIMAL
SONAR CHARGE
INITIALISING BOOT SEQUENCE
AUTH REQUIRED
ENTER AGENT DESIGNATION
MIN 3 CHARACTERS · PRESS ENTER
ASHLIGHT OS v5.0 ████████████ LOADING
Terminal Incursion · Field Operations
You are an early-deployed field operative with Ashlight Systems.
Vast infrastructure spans multiple sectors signalling anomalous behaviour.
Power routing has failed. Systems are offline. Agents are in the dark.

Your directive: Restore power to critical systems using whatever is at your disposal.
Work alongside ASH — autonomous support agent — and report to the Director.
The RSA is watching. Move fast. Leave no trace.
TUTORIAL COMPLETE
STAGE 1 · ALL SECTORS CLEARED · MEMORY CORE SECURED
0
CUMULATIVE SCORE
0
SECTORS
⬡ 0
SURPLUS TOKENS
ENTER YOUR CALLSIGN · 3 CHARACTERS
HIGH SCORES · LOCAL
⚙ ASHLIGHT
DEV TOOLS
ENCOUNTER DESIGNER
AGENTS
FOG OF WAR
FOG DENSITY 82%
FOG FADE RATE 0.0012
FOG COLOUR DEFAULT
CIRCLE GROW SPEED 0.018
WIPE DELAY (ms) 1500ms
PARALLAX DEPTH
PARALLAX ACTIVE
MOUSE RANGE 30
LAYER OPACITY 0%
LANE SPEED 0.018
AUTONOMOUS RETICLE
LERP SPEED 0.018
COOLDOWN (ms) 3500ms
PING RADIUS 110px
FIRE THRESHOLD 8px
TARGET BIAS
RETICLE STYLE
RETICLE COLOUR
PING RING COUNT 2
WIPE RITUAL
PING COUNT 10
STAGGER (ms) 140ms
TRIGGER WIPE NOW
COLOUR THEME
PRIMARY (--ash)
BACKGROUND
BORDER
AMBER (--amber)
SCANLINES
GLYPH OPACITY 25%
GLYPH SPEED 3
GLYPH COLOUR
SCREEN EFFECTS
VIGNETTE 60%
SCANLINE DENSITY
CRT CURVE
BOOT FLICKER
CHARGE BAR
STATUS TEXT
⊞ GRID
◈ MANIFEST
⬡ INVENTORY
◫ LOOT
↓ TEST / EXPORT
NO ENCOUNTER LOADED
▶ RUNTIME TEST ACTIVE
ENCOUNTER MOUNTED IN GAME — PLAY TO TEST
CELL TYPE
EMPTY
SOURCE
WIRE H
WIRE V
┌ W+N
┐ E+N
└ W+S
┘ E+S
BREAK
SOCKET
CACHE
SYSTEMS
DOOR
ENV
DRONE
COMM
GATE
CORE
SYSTEM MARK
COLS 10 ROWS 6
LIVE VALIDATION

GRID STATS
SRC0
SYSTEMS0
REQUIRED0
OPTIONAL0
BREAKS0
SOCKETS0
CACHES0
WIRE0

CELL
hover a cell

SYSTEMS
none
STARTING INVENTORY

Pieces available to the player at sector start. Adjust per difficulty intent.

MENDER
2
JOINER
3
CAP NODE
1
ROTATOR
1
STABILISER
internal: booster
1
RECYCLE BOT
0
SONIC EMITTER
0
TIME BOOST
0
LOOT CONFIGURATION

Caches are placed on the GRID tab. Configure cache rewards and probability modifiers here.

CACHE MOD — RARE CHANCE BOOST
RARE BONUS
Added to base 10% rare chance.
0.08 = 18% rare. 0.15 = 25% rare.
FEATURED ITEM
FORCE ITEM
Forces a specific item to appear on first roll.
LOOT PROJECTION PREVIEW
VALIDATE + TEST
— NOT VALIDATED

IMPORT
↓ DROP ENCOUNTER JSON HERE · OR CLICK TO BROWSE
EXPORT
schema: ashlight.encounter.v1
forward-compatible: manifest · rewards · ecs blocks preserved

⬡ ASHLIGHT AGENTS

This panel is for AI agents building Ashlight sectors. Download the Agent Bundle — everything needed to author valid encounters without touching the game source.

Agent Bundle

ASHLIGHT_AGENT_BUNDLE_v6.zip
Onboarding HTML · build reference · encounter contract · easy + hard demo JSON · systems, inventory + earmarks registries.

Single JSON in, single JSON out. An agent reads the bundle, then produces one ashlight.encounter.v1 JSON file. That single file contains the complete sector — grid, systems, inventory, manifest, narrative, loot, and forward-compat blocks. You import it into the Encounter Designer, validate, test, and it's done. No separate files, no multi-step assembly.

The Single JSON Contract

The registries in the bundle are reference documents — they tell an agent what's available. The agent's deliverable is always one JSON file per sector, shaped like this:

// One file. One sector. Import into Encounter Designer → Validate → Test → Done.
{
  "schema": "ashlight.encounter.v1",
  "authoring": { "tool": "AGENT", "author": "YOUR-NAME", ... },
  "encounter": {
    "_encounterId": "ENCOUNTER_010_NAME",
    "title": ..., "label": ..., "sector": ..., "stage": ...,
    "GW": ..., "GH": ..., "timer": ...,
    "grid": [ [...], ... ],       // the puzzle
    "systems": [...],             // system nodes
    "sockets": [...],             // socket nodes
    "caches": [...],              // cache nodes
    "inv": { ... },               // starting inventory
    "cacheMod": { ... },          // loot modifiers
    "tutorial": { ... },          // banner text
    "hints": [...],               // help text
    "frag": { ... },              // codex fragment
    "manifest": { ... },          // ALL narrative — Ash lines, win panel, objectives, tags
    "rewards": [],                // empty — future OS rewards
    "ecs": []                     // empty — future component overrides
  }
}
      

Everything lives in manifest — objectives, Ash dialogue, win panel, difficulty tags, briefing text. The registries in the bundle tell you what values are valid for each field. They are not separate deliverables.

What Is Ashlight

Ashlight is a single-file HTML routing puzzle game. No server, no build step, runs from file://. The player routes power through a grid to activate systems. It is a terminal authentication metaphor — the routing game is how you log in. Complete all sectors and the OS boots.

  • A SOURCE node emits signal in all four directions
  • Wire cells carry signal directionally — horizontal wires reject vertical approach
  • Break nodes block signal until a MENDER piece is placed
  • Socket nodes block until a ROTATOR TOKEN is installed
  • System nodes receive signal from any direction — powering them is the goal
  • Required systems must all be powered for the sector to complete
  • Score = energy×2 + placed×8 + unused×40 + system bonuses + time bonus

Earmarks Registry — Active Roadmap

Named future features. Agents building levels should be aware of P1/P2 items as they may affect scoring or inventory soon.

Quick Build Checklist

What an agent needs to deliver a valid sector:

  1. Exactly one SRC (7) in the grid
  2. At least one required system in systems[]
  3. Every SYS_*/SKT/MEM_CACHE cell has a matching array entry
  4. title, sector, _encounterId are non-empty strings
  5. inv has all 8 keys (zeros are fine)
  6. manifest has ash lines, objectives, winPanel title, difficultyBand
  7. ecs and rewards present as empty arrays

Import the JSON into the Encounter Designer → TEST/EXPORT tab → paste into Import field → IMPORT JSON → VALIDATE. Fix any errors flagged. Then TEST IN GAME.

TERMINAL CONNECTION ESTABLISHED