Ignatius Rocketfrock Manual
Quick reference for starting, moving, fighting, and using the in-game menu.
Start
The game opens on the title card. Press a key, click, tap, or use the Start button to begin. That first interaction also unlocks the browser audio system.
The Manual link is available from the title card before the game starts.
Graphics compatibility
The game uses WebGL2 for its main sprite and scenery rendering when the browser supports it. On systems without WebGL2, it automatically falls back to the Canvas 2D renderer. The visual content and gameplay rules are the same in both modes, though performance may differ on scenery-heavy levels.
Gameplay physics continue to run at a deterministic 60 updates per second. Rendering blends moving actors, rockets, platforms, camera motion, scale, fades, and simulation-driven enemy animation between those fixed updates, so ordinary movement remains smooth when display-frame timing lands between simulation ticks. This visual blending does not change collision, targeting, jump height, or other gameplay results.
Goal
Guide Ignatius through the cave, survive hostile creatures and hazards, operate useful devices, and reach the exit door.
Controls
| Action | Keyboard | Pointer or Touch |
|---|---|---|
| Move | Left/Right or A/D | Press the playfield and drag left or right. |
| Jump | Up, W, or Z | Drag upward from the touch point. |
| Double-jump kick and hover | Press jump again in the air, then hold jump. | Drag upward again, then keep holding upward. |
| Trim an ordinary jump | Hold Down or S while Ignatius is still rising. | Drag downward during the rising half of the jump. |
| Drop through a green platform | Freshly press Down or S while standing on it. | Swipe or drag downward. Holding Down after the drop keeps fast-fall gravity but the next green line remains solid. Yellow lines and areas always remain solid. |
| Launch rocket | Space, X, K, or either Ctrl | Right-click once, or quick double-tap the playfield. |
| Lunge | Hold either Alt or either Shift for 0.25 seconds. | Keyboard or gamepad only. |
| Interact | Down, S, Enter, or Numpad Enter | Use keyboard input for interactions that still require a button. Levers and keyholes activate automatically when Ignatius comes close. |
| Menu | Escape | Click or tap the score-and-bars panel or the minimap. |
| Skip to the next numbered level | F8 | Keyboard only, and only while the product-development flag is compiled in. |
On a gamepad, either trigger launches the equipped weapon. Xbox X or PlayStation Square charges a lunge. Green walkable lines are one-way for Ignatius: he lands on them from above, and a fresh Down press while standing on one drops through only that support. Continuing to hold Down does not pass through the next green line. Flight is the exception: while flying, holding Down still allows continuous descent through green lines. Enemies never intentionally drop through green lines. Player and enemy shots pass through green walkable lines. Yellow blockable lines and areas remain solid from every direction and stop shots.
Ignatius’s ordinary ground jump rises exactly 200 world pixels. Holding Down doubles gravity during both ascent and descent: from takeoff it brakes the apex to 100 world pixels, while later presses allow intermediate jump heights and faster falls. Down also retains its green-platform drop-through role, but dropping a grounded green support is press-edge driven: after landing on another green line, Down must be released and pressed again to leave it. If the body-slam attack is available and off cooldown, holding Down while airborne at a speed that would already cause fall damage commits the slam; merely tapping Down to pass through a green platform does not commit unless Down is still held after the fall becomes dangerous. The launch speed is derived from gravity, so the designed apex does not change with display or simulation frame rate; rocket-assisted movement remains variable. Quick jump taps and the airborne release-and-press gesture are buffered until the next gameplay step, so the double-jump does not depend on display frame timing.
Minimap
The upper-left score-and-bars panel and the upper-right minimap scale down together whenever the screen is too small to contain them. If the minimap is hidden, the score panel can use the released space and remain larger. The minimap matches the rendered height of the score panel, never grows wider than it, and shows the gameplay perimeter boundary, horizontal platform surfaces, the live camera window, Ignatius’s current position, and the exit marker. Click or tap either upper panel to open the pause menu. The minimap can be hidden in Settings; the score panel and Escape still open the menu. In a product-development build, clicking a point inside the displayed gameplay perimeter teleports Ignatius there instead of opening the menu. If a checkpoint is within 4000 px of the clicked world position, the development teleport snaps to the nearest such checkpoint instead. Browser and native level_temp playtests launched from the Level Editor retain this teleport even when the product-development flag is disabled; clicks outside the perimeter still open the pause menu.
Rocketfrock
- The rocket pack can boost, slow falls, fire homing rockets, and propel Ignatius in a horizontal lunge.
- Lunge: while grounded, hold either Alt/Shift key or Xbox X/PlayStation Square. Ignatius stops and bends forward while charging; Left and Right may still turn him. After 0.25 seconds he launches automatically in the direction he faces, travelling up to 720 pixels at 1440 px/s. The movement phase therefore lasts up to 0.5 seconds when unobstructed. Solid blockable terrain stops the burst, but he does not need ground beneath him until it ends. A lunge costs the same fuel as the double-jump kick, deals 45 damage to every enemy crossed once, emits heavy rocket smoke, and makes Ignatius immune to ordinary damage only while he is moving. Other actions, mailbox interaction, and cutscene triggers are locked during the movement phase.
- Lunge has a separate 5-second cooldown. Charging is allowed while it is cooling down; after the 0.25-second charge Ignatius remains crouched and smoking while the button stays held, then launches automatically when the cooldown expires. Releasing while waiting cancels the pending lunge. Releasing before 0.25 seconds also cancels it. Knockback during charging may reposition Ignatius without cancelling the charge.
- Body slam / impact blast: while airborne, hold Down once Ignatius is falling fast enough that landing would cause fall damage. New games begin with the slam available on a 2.5-second cooldown. If the attack is unlocked and its cooldown is ready, the slam commits immediately, even if Down was first pressed after that speed had already been reached. Once committed, the descent cannot be cancelled with a jump, rocket kick, or hover and Down no longer needs to remain held. Holding Down continues to double gravity; releasing it returns to normal gravity without cancelling the committed slam. Ignatius gains the same blue-tinted ordinary-damage immunity as Shield for the committed descent and for 0.45 seconds after landing; fall damage itself still bypasses this protection. The landing triggers a red Bigbomb-style AOE at Ignatius's feet, dealing 60 damage independently to every enemy inside. Ordinary accidental falls never trigger the AOE. The separate permanent fall-damage talent reduces all fall damage by 50 percent, but as its tradeoff it doubles the body-slam cooldown to 5 seconds.
- Rocket launches have no firing cooldown. Each distinct launch press fires immediately whenever enough fuel is available.
- When a gamepad is the active control device, supported controllers rumble strongly when Ignatius is hurt and more gently for rocket fire, the double-jump kick, and sustained hover. Keyboard or touch control keeps controller vibration silent.
- Fuel normally begins recharging after Ignatius returns to the ground. Overdrive and Flight provide the same smaller passive recovery even in the air and during ordinary recharge delay.
- Homing rockets only lock onto enemies that are at least partly visible on the current screen. They prefer visible active targets in the direction Ignatius is facing, and release a target that leaves the screen. When no enemy or authored target dummy exists, rockets launch without a target; gameplay no longer creates a marker or hidden fallback target.
- A standard rocket deals 20 damage to the enemy it directly hits. Its small impact splash deals exactly 1 damage to other nearby enemies within a diameter of about two wizard heights. While Flight is active, standard rockets fired without a wrench deal half direct and splash damage: 10 damage to the direct target and 0.5 splash damage to nearby enemies. Overdrive retains this splash; wrench rockets keep their authored damage and use only their own behavior.
- The old target dummy is now the stationary
enemy_900training enemy in the normal enemy pipeline. It has no contact damage, no attacks, and it shakes briefly before fading out when destroyed.
Power-ups
- Collected power-ups disappear and return after 60 seconds, so it can be worthwhile to revisit an earlier part of a level.
- Collectable power-ups and permanent upgrades hover and gently pulse to distinguish them from scenery. Treasure chests remain grounded and stationary. Rocket-fuel canisters are displayed at 60 percent of their former size.
- Automatically generated levels aim for roughly one treasure chest per 500 pixels and one genuine power-up per 1,000 pixels of route travel at the default Reward density. Chests may appear on the main route, lower recovery routes, upper access steps, or reachable upper perches. Power-ups are placed directly on a walkable surface for easy collection; about half are authored wrench pickups, with the remainder split evenly between Shield and Overdrive.
- Generated static platforms that overlap horizontally keep their walking surfaces at least 180 pixels apart vertically.
- Generated vertical lifts reserve a full rider-height corridor and dock beside solid yellow platforms rather than carrying riders into their undersides.
- The top-left Power bar shows the highest-priority active effect and its remaining duration. Any active wrench upgrade is shown first, followed by Flight, Shield, and Overdrive; all compatible effects remain active at the same time.
- Flight is granted by a rocket-fuel canister and lasts 30 seconds. With no vertical control Ignatius hovers at a steady height. Hold Up to ease into a climb and Down to ease into a descent; releasing either control eases back toward a hover. Left and Right retain running-style acceleration and braking at 50 percent above the normal movement speed. Flying itself costs no fuel. Fuel instead replenishes continuously at the same 90%-of-hover-drain rate as Overdrive, while every fired rocket still pays its normal fuel cost, allowing rapid but not unlimited shooting.
- Shield lasts 10 seconds and blocks all ordinary incoming damage. The pickup glows blue, and Ignatius flashes blue while protected. The blue flash takes priority over the red critical-health flash.
- Overdrive lasts 20 seconds and halves the fuel cost of each launch. It also recovers fuel continuously at a minimum rate equal to 90% of hover consumption, including while hovering or during the ordinary recharge delay. Normal grounded recovery may be faster, but the two rates do not add together. Rocket firing itself has no cooldown. While active, Ignatius also gets a small yellow spark shimmer around his body.
- Magic Ring lasts up to 30 seconds. Ordinary enemies cannot see Ignatius while it is active, and Ignatius is drawn 50% darker without becoming transparent. Taking damage, committing a lunge attack, or committing a body slam immediately ends the concealment. Firing a rocket also ends it unless the persistent Stealth Rocket talent has been unlocked. Running, jumping, and rocket-assisted hovering do not break concealment. If a still-concealed Ignatius damages an enemy, that enemy panics for 10 seconds, moving and attacking without knowing his hidden position; another concealed hit refreshes the panic timer. Homing missiles remain able to track Ignatius through the concealment.
- Wrench power-ups last 20 seconds and replace any other active wrench. A wrench pickup has an authored type selected in the Level Editor; if the field is missing, it defaults to the blue Homing Triple wrench.
- Rockets modified by a wrench carry a fuzzy outline in that wrench's colour, so the current payload remains visible even after launch. The six powered rockets use precomposited atlas frames, avoiding first-shot stutter and extra glow drawing during play.
The following table shows the installed 100% game-tuning values before permanent Speed upgrades, Flight damage reduction, or Overdrive fuel reduction. Range is the authored projectile travel budget, while duration is the corresponding nominal lifetime at the listed speed. The development Rocket duration percentage scales these lifetimes/ranges, and Rocket damage percentage scales the listed direct damage values.
| Rocket / wrench | Volley | Range | Speed | Duration | Damage each | Direct volley damage | Fuel cost | Behaviour |
|---|---|---|---|---|---|---|---|---|
| Standard (no wrench) | 1 | 400 px | 500 px/s | 0.80 s | 20 | 20 | 30 | Launches upward briefly, then homes. A direct impact also produces the separate 1-damage secondary splash against other nearby enemies within about one wizard height of the impact. |
| Fivefold (yellow) | 5 | 1800 px | 1000 px/s | 1.80 s | 4 | 20 | 15 | Five small non-homing rockets across a fixed 15-degree fan. The centre line is aimed toward the nearest forward enemy at launch; the authored launch angles do not jitter. |
| Dart (cyan) | 1 | 1800 px | 1000 px/s | 1.80 s | 20 | 20 | 15 | Fast forward launch with weak heading-based homing toward the easiest enemy ahead. |
| Target (green) | 1 | 1200 px | 1000 px/s | 1.20 s | 20 | 20 | 15 | Non-homing. Aims once toward the nearest forward enemy when fired; otherwise travels straight ahead. |
| Bigbomb (red) | 1 | 1200 px | 250 px/s | 4.80 s | 80 | 80 | 60 | Large, slower homing rocket. Its impact applies the same 80 damage throughout an area with radius two wizard heights. |
| Boomerang (magenta) | 1 | 1200 px outbound budget | 500 px/s | 2.40 s outbound budget | 20 | 20 | 15 | Homes outward, then returns if its target disappears, is destroyed, or the outbound lifetime expires. With no target it starts returning after about 0.32 s. Catching it refunds 7.5 fuel; the return phase may continue for up to about 4 s. |
| Homing Triple (blue) | 3 | 1200 px | 500 px/s | 2.40 s | about 6.67 | 20 | 15 | Three small homing rockets at fixed -12, 0, and +12 degree launch angles, with separate targets when possible. Their guidance receives small deterministic meander turns during flight rather than launch-angle jitter. |
Yellow Fivefold and cyan Dart deliberately retain the longer 1800-pixel range; the other wrench rockets use 1200 pixels. Homing target acquisition is limited separately to 1500 pixels, so a projectile may retain travel range after it can no longer acquire a new target. Permanent Speed upgrades and Flight scale player-fired rocket velocity; projectile lifetime is shortened inversely so the authored travel range remains the same. Flight halves the direct damage and secondary splash of the standard no-wrench rocket only. Overdrive halves the fuel cost of every launch without changing the table's underlying rocket profile.
Permanent upgrades
- Permanent upgrades are remembered for the current playthrough across level transitions, level restarts, autosaves, and manual saves. Starting a genuinely new game begins with no upgrades.
- Every placed upgrade is remembered by its level ID together with its local entity ID. Once collected, that exact pickup remains consumed when its level is revisited or restarted, while another level may safely use the same local entity ID.
- UpgradeHealth currently uses the purple herb artwork. The first pickup adds 20 maximum Health; later pickups add 20 percent of the remaining gap toward twice Ignatius's base maximum Health, so each gain is smaller and the permanent bonus never exceeds 200 percent of base. Collecting one also adds only the newly gained capacity to current Health without healing other existing damage.
- UpgradeFuel currently uses the blue herb artwork. Each level adds 20 maximum rocket fuel and raises the ordinary grounded recharge cap by the same amount. Collecting it adds the newly gained capacity to current fuel.
- UpgradeRegen currently uses the yellow herb artwork. Each level increases both delayed Health regeneration and ordinary fuel regeneration by 15 percent of their base rates.
- UpgradeSpeed currently uses the red mushroom artwork. The first pickup adds 10 percent movement speed and acceleration; later pickups add 10 percent of the remaining gap toward twice the base movement scale, so the permanent movement bonus approaches but never exceeds 200 percent. Player-fired rocket velocity follows the same permanent movement scale, while the separate attached-boost thrust is unchanged.
- The gameplay names are independent from the current herb and mushroom pictures, allowing those visuals to be replaced later without changing levels or save data.
- Collecting one displays a short confirmation: Max health upgraded!, Max fuel upgraded!, Regeneration upgraded!, or Speed has been upgraded!.
Score and treasure chests
- The line above the Health bar shows the current level number, level title, and Score.
- Treasure chests begin open with their riches visible. Walking close awards the authored Score value exactly once.
- After collection, the treasure disappears and the matching open-empty chest remains behind. A small +N popup confirms the award.
- Score survives ordinary death and respawn, level transitions, and save/restore. Starting a genuinely new game or restarting the level resets it.
- Score is not a Gold currency. A future upgrade economy may introduce Gold separately.
Health
- Damage briefly grants invulnerability, shown by the health meter feedback. The Shield power-up grants a separate ten-second invulnerability window and makes Ignatius flash blue.
- Health regenerates after a delay if Ignatius avoids further damage.
- Some hazards are damaging; explicitly lethal hazards may defeat Ignatius immediately.
- The authored world rectangle is a four-sided lethal limit. Crossing its left, right, top, or bottom edge defeats Ignatius through the normal death and respawn sequence. The rectangle does not create blocking walls, and levels no longer use a separate vertical reset plane.
- After the death sparks burst, the camera remains on the death site for two seconds before Ignatius respawns.
Menus and saved games
The title screen provides five primary actions:
- Start New Game begins at Level 1 and replaces the hidden autosave without deleting any manual save slot.
- Resume Game restores the hidden autosave. It is unavailable until an autosave exists.
- Load Game opens the three manual save slots.
- Settings opens the same gameplay and display controls available while paused.
- Exit to Desktop closes the Electron or SDL application. An ordinary browser may require you to close its tab or window manually.
During play, open the pause menu with Escape or either upper HUD panel. It provides Save Game, Load Game, Settings, and Exit to Title. Every non-title menu has a top-right Back button. From the top-level pause menu, Back resumes the game.
There are three visible manual slots and one hidden autosave slot. Entering a level currently acts as a checkpoint. Saves therefore restore the beginning of the saved level rather than an exact mid-action frame, while Score and permanent upgrade progression are restored from the playthrough record. Future authored checkpoints can use the same save slots.
Settings
- Effects volume controls sound effects.
- Music volume controls looping OGG level music.
- Difficulty currently changes only incoming damage to Ignatius.
- Effects quality changes visual particle density without changing gameplay timing or collision.
- Fullscreen uses a 1920×1080 reference composition and scales it to fill the display without bars. Higher display resolutions show sharper artwork rather than more of the level; non-16:9 displays crop the reference view to fill. The native SDL application opens maximized when it starts in windowed mode; later window resizing may change the visible world area. Browser fullscreen entry may require a click or key press.
- Minimap controls whether the upper-right minimap is visible.
- Hardware regular uses WebGL2 with live scenery.
- Hardware + speedhack uses WebGL2 with baked scenery tiles.
- Software regular uses Canvas2D with pixmap pyramids and live scenery.
- Software + speedhack uses Canvas2D with pixmap pyramids and baked scenery tiles.
- Development features... opens optional testing aids: Asset guides, Enemy guide, Game tuning, Recording, Playback, a compact Debug panel, and Debug logging.
- Game tuning provides matching compact controls in both versions for run speed, lunge speed, jump height, gravity, percentage-based rocket damage and duration, and Double jump physics. Changing lunge speed preserves the current lunge movement duration by scaling its travel distance with the speed. Fixed impulse adds the rocket kick to current vertical momentum. Consistent apex reaches the same total height when activated during ascent, or cancels a fall and begins a fresh jump. Changes are saved automatically for the current user; Reset clears the complete saved tuning-override object, including any keys not currently shown in the menu, and returns to the installed
resources/config/tuning.json.
Most development guides apply only to the current run. Game-tuning overrides, Debug logging, and Recording are persistent preferences. When no saved preference exists, Debug logging and Recording default to the product DEVELOPMENT setting. Debug logging starts a fresh structured log for each application launch and records one snapshot per second while enabled; SDL writes under logs/, while the browser downloads the collected log when logging is switched off. Recording starts a fresh gameplay recording for each level session while enabled, finalizing the previous level before the next one begins. Asset guides show walkable geometry in green and blocking geometry in yellow. Enemy guide shows enemy hitboxes, awareness fields, and AI states.
Rendering-mode changes take effect after the game is reloaded. Explicit development URL options may still override the saved browser renderer while testing.
Ranged enemy attacks
Ranged enemies may begin an attack as soon as Ignatius is inside their awareness range and facing cone, even while they are still moving toward their preferred combat distance. They do not deliberately fire through solid scenery, and they cancel the projectile release if the shot becomes blocked or Ignatius leaves their current view during the wind-up. Skeleton Casters launch green undeath orbs with a bubbly trail. The Tri-fireball Goblin launches three slightly smaller, non-homing fireballs in a straight ±15-degree fan; it commits to the volley when at least one of the three real trajectories can reach Ignatius without hitting solid scenery first. Each fireball deals the same damage as the ordinary Fireball Goblin's homing shot. Dwarf axethrowers hurl large, rapidly spinning axes along straight non-homing paths. Bombing bats keep circling in a broad individual swarm above Ignatius and release rocks only while crossing directly over him, provided the falling path is not blocked by a platform or other solid obstacle.
Level authoring: automatic enemies
The Level Editor can enable Auto spawn enemies for a level. The percentage is checked once each second. A successful check creates one eligible enemy outside the forward edge of the screen, between one tenth and one full screen width away, normally in the direction of the exit door.
- The feature switch is disabled by default. New Level Editor levels prefill a 10% chance, so checking the box immediately gives a moderate reinforcement rate.
- The default pool is
1-900. Higher IDs are reserved for special/manual actors unless an author explicitly enters them. - The pool uses the generator format: comma-separated numbers and ranges, with
!exclusions. For example,1-9,!2,!4. - Ground reinforcements spawn on a safe support and immediately hunt the player's last-seen position. Flying reinforcements retain their flying attack behavior and also begin already aware of the player.
Enemy spawner is a separate placeable entity for scripted fights such as boss encounters. It is invisible during play and uses the same per-second percentage and numbered enemy-pool format as automatic spawning. Each spawner rolls independently only while its authored area is inside the current camera view. Off-screen spawners do not roll or accumulate time. A successful roll teleports one already-alert enemy onto the spawner point with a brief purple-blue flash. Ground enemies require a nearby safe floor, and a blocked or occupied spawn attempt is skipped. An optional Disable signal stops future rolls once that named channel becomes active.
Level authoring: bosses and signal gates
Any placed character enemy can be marked as a Boss encounter, given a display name, and assigned an optional defeat signal. It remains an ordinary enemy underneath, so its scale, health, movement, projectile, and attack overrides continue to define the fight. Enemy scale is one uniform multiplier: it enlarges the Character Editor hitbox, rendered character, artwork offsets, and projectile radius together, and updates immediately while typed in the Level Editor. When the boss notices Ignatius or takes damage, a prominent current/max-health bar appears at the top of the game view. Defeat hides the bar, emits the boss event, and activates the configured signal channel.
A boss uses the weighted drop table authored directly on that boss entity. This table replaces the ordinary drop table of the underlying monster and can produce at most one item. If its probabilities total less than 100 percent, the unused remainder means nothing drops. The current four-way permanent-upgrade table totals 100 percent, so one upgrade is guaranteed.
Every wizard exit door automatically remains closed while any living boss exists in the current level. Once the last boss is defeated, the ordinary proximity-opening sequence works normally. Level authors therefore do not need a separate gate merely to keep the player inside a boss encounter.
Hanging Gate and Spiked Gate entities can listen to a named signal channel for authored barriers. They begin closed and blocking when Blocks player is enabled. When the channel activates, their closed artwork fades away in place over 0.75 seconds instead of raising or sliding out of the way. The gate remains solid during that visible fade, then the gate entity and its blocking collision are removed together when the fade completes. A named signal is broadcast to every listener on that channel, so the same lever, keyhole, boss defeat, or scripted event can activate a gate and one or more moving platforms at the same time.
Level authoring: Background and Foreground
Placed artwork can use a cosmetic Background layer behind terrain and actors, ordinary Terrain, or an inert Foreground layer in front of them. In the Asset palette, choose Layer for new assets, then use the single Place asset tool. Background and Foreground automatically disable atlas collision and moving-platform behavior. Background artwork remains behind ordinary scenery regardless of its stack-order value.
The dedicated Layers panel contains matching Foreground and Background groups for each cosmetic layer's Parallax X, Parallax Y, Brightness, and Scale. Parallax X controls horizontal drift and Parallax Y controls vertical drift independently. Background defaults to approximately 0.925926 on both axes, the exact reciprocal of the Foreground default 1.08. Set either axis to 1.0 when it should move exactly with the playable world; values down to 0.01 are accepted for almost stationary artwork on that axis. Background brightness and scale normally begin at 1.0. Foreground displays its complete treatment directly, normally about 0.36 brightness and 2.0 scale, so there is no additional hidden darkening or enlargement. Hover over a field for a compact explanation. These settings affect the whole layer, including generated perimeter artwork on Foreground. Existing levels were converted by copying their former single parallax value to both axes, preserving their previous appearance. The separate Perimeter panel contains only cave-shape, feather, spline, and perimeter-population controls.
The Level Editor always evaluates Background and Foreground parallax from the centered 1920 × 1080 fullscreen gameplay camera, even when the editor workspace is zoomed out to show a much larger area. In the View panel, Show 1920 × 1080 gameplay camera frame draws a green live viewfinder around the exact reference composition without opening a separate preview. It is enabled by default and draws at 50% opacity. An unobtrusive nine-pixel green + marks the exact camera centre, and two five-pixel green × markers show where the wizard would rest while stationary and facing right or left. Show gameplay camera rulers is also enabled by default and draws cyan rulers immediately left and below that frame so you can quickly measure wizard height/width plus default jump, double-jump, and hover reach (`WH`, `JH`, `DH`, `HH`, `WW`, `JW`, `DW`, `HW`). Panning changes the gameplay camera position continuously; zooming changes only how much authoring workspace surrounds the frame. Show gameplay perimeter boundary is also enabled by default and draws the orange player-interaction contour.
Level authoring: cave perimeter
Manual and generated cave windows default to a 200-pixel Feather to full black distance. The fade can be made organically uneven with Gradient waviness, Wave period, and Gradient seed. Wave period accepts 10-500 pixels and defaults to 50; waviness also defaults to 50 pixels. The smooth cyan perimeter remains unchanged so automatic stalactites and stalagmites keep stable inward directions. Only the opacity contours inside the feather wobble, while navigation and the rendered full-black contour remain unchanged. Gameplay bakes a separate interaction contour 20% of the feather distance farther into the darkness. Floor-facing portions remain lethal after the wizard fully crosses them; ceiling and wall portions block outward movement instead. The query follows both Foreground parallax axes without rebuilding the baked contour. Independently of that cave interaction, the rectangular world border is always a simple lethal mask: once any part of the wizard leaves the authored world bounds, he dies and respawns. Keep the world bounds outside every intended playable and cave-interaction region. Automatic perimeter decoration defaults to a 2.0 asset scale and places about 40% of each formation inside the cyan opening, with slight deterministic variation. The Level Editor's Inward coverage % field adjusts that overlap before repopulating the perimeter. Formation spacing is calculated automatically from each asset's rendered size so the decoration remains densely overlapped through the full-black boundary. Manual Populate perimeter deliberately reserves no gameplay clearance: foreground formations may cover platforms, doors, enemies, pickups, or the wizard so level authors can create passages that are partly hidden behind stalactites and stalagmites. The editor warns about hidden gameplay geometry only when the placement's actual collision lines and areas lie completely beyond the full-black contour, evaluated with the gameplay camera aimed at the placement center and with Foreground parallax applied.
Level authoring: proximity text
Select TEXT in the Entity palette to place a one-shot message directly in the level. The text is always bold and may contain multiple lines. Its content, world-space letter size, dark-blue-by-default fill, font family, optional outline color and thickness, trigger radius, one-second-by-default fades, and five-second-by-default display time are editable in Selected object. The visual text and trigger do not have to occupy the same place: drag the circular trigger handle in the level view, or edit its X/Y offsets numerically. When Ignatius comes within the trigger radius, the message completes its fade-in, display, and fade-out sequence once. Trigger guides are visible only while authoring and never appear during gameplay.
Level authoring: selection and assets
Use Shift-drag on the canvas to select every fully enclosed entity or asset. Ctrl-click toggles one object, and Ctrl+Shift-drag toggles all objects enclosed by the rectangle. The last selected object remains the primary white-outlined object whose properties appear in Selected object; the other gray-outlined objects participate in group movement and clipboard actions. Position, size, angle, layer, mirror settings, entity state, and other inspector controls commit directly, so there is no Apply button. X, Y, W, H, angle, and enemy scale update while edited. Timed power-up pickups can optionally enable a per-instance Custom duration; when it is unchecked, the level omits durationSeconds and uses the built-in duration. The toolbar provides standard Cut, Copy, Paste, and Delete actions for either one object or a multi-selection. The corresponding Ctrl/Cmd+X, Ctrl/Cmd+C, Ctrl/Cmd+V, Delete, and Backspace shortcuts work whenever a text field is not being edited. The first paste after Cut restores the objects at their original coordinates; copied objects paste with a small snapped offset, and repeated pastes continue to cascade. The Asset palette lists every asset from every loaded atlas, so no separate atlas dropdown is needed. Both the Asset and Entity palettes use matching two-column thumbnail cards, compact filter fields, and their own full-height scroll areas. Thumbnail rows keep a useful fixed height and scroll rather than being compressed to fit; previews use the displayed card aspect ratio and are centered from the final visible artwork, including complete composed enemy poses. Selecting an asset card enters Place Asset mode; choosing an entity card enters Place Entity mode, while the toolbar placement buttons reuse the current palette choices without duplicate dropdowns. Newly placed assets start with Blend overlaps disabled; the selected-object inspector can enable it when a particular composition benefits from overlap smoothing. Moving over the canvas shows the selected item as a snapped translucent preview. One click places it, after which both asset and entity placement return automatically to Select mode. While Colormap controls are being adjusted, the palette preview remains visible and every selected map asset also previews the pending hue rotation or Color Exchange directly on the level canvas, including multi-selections; the level changes only after Apply.
Palette thumbnail cache: The Level Editor uses one generated resources/palette/thumbnails.png sheet for its Asset and Entity palettes. The cache uses compact 64 × 64 cells by default, while full-resolution atlas artwork loads only after you select an asset or open a level that uses it. After changing atlas or entity artwork, start the local server, open devel.html, choose palette-builder.html, rebuild the cache, and reload the editor. The page reuses the JavaScript character runtime, so enemy thumbnails keep their assembled pose and colour replacement, and the cell size can still be switched to 128 × 128 without changing the editor.