@idle-screens/saver-metaquarium 0.18.0 → 0.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-G2ZD33CA.js → chunk-Y3TSBXXY.js} +33 -26
- package/dist/{chunk-G2ZD33CA.js.map → chunk-Y3TSBXXY.js.map} +1 -1
- package/dist/dolphin-ZNNAKAZX.js +5 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.js +3 -3
- package/dist/lofi-tank-326H7DJC.js +781 -0
- package/dist/lofi-tank-326H7DJC.js.map +1 -0
- package/dist/{manifest-Un8QX6mf.d.ts → manifest-CJ8ptUlH.d.ts} +14 -1
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.js +1 -1
- package/dist/{tank-6NRVGZW5.js → tank-IDB2TKVQ.js} +250 -95
- package/dist/tank-IDB2TKVQ.js.map +1 -0
- package/package.json +2 -2
- package/dist/dolphin-Y3YT2IBD.js +0 -5
- package/dist/lofi-tank-TBPZU3KE.js +0 -504
- package/dist/lofi-tank-TBPZU3KE.js.map +0 -1
- package/dist/tank-6NRVGZW5.js.map +0 -1
|
@@ -2926,16 +2926,17 @@ var PARAM_DOCS = {
|
|
|
2926
2926
|
cameraAzimuth: "Orbit bearing in degrees. 0 looks at the village from the front.",
|
|
2927
2927
|
cameraElevation: "Degrees above the floor. 8\u201315 is eye level with the fish; 40+ looks down on a castle.",
|
|
2928
2928
|
cameraDistance: "Distance from the tank centre. 80 is a close-up, 170\u2013220 a village, 300+ a landmark.",
|
|
2929
|
-
shot: "A named framing
|
|
2929
|
+
shot: "A named framing: `orbit` (default), `hero` (three-quarter), `front` (level, long lens), `low` (among the plants, looking up), `top` (the floor as a map), `surface` (the water's underside), `macro` (close on the nearest landmark). Azimuth and autoRotate turn it; distance scales it.",
|
|
2930
2930
|
cameraFollow: "Ride with one fish (cast slot, 0 = first); -1 is the orbit camera. Orbit params are ignored while following. Pair with `followSpot` on the same slot for a spotlit chase.",
|
|
2931
2931
|
followAngle: "Where round the followed fish the chase camera stands, degrees: 0 behind (default), 90 beside, 180 in front looking back at its face.",
|
|
2932
|
-
followDistance: "How far behind the followed fish the camera rides
|
|
2932
|
+
followDistance: "How far behind the followed fish the camera rides (40\u201370 is a chase). Under ~18 it is the fish's eye and the fish is hidden; a floor walker (Dot, crab, octopus, snail, starfish) sees from its own head height.",
|
|
2933
2933
|
autoRotate: "Turntable speed, degrees/second. 0 holds the shot (stages, vignettes); 1\u20132 is a slow reveal. frame.state.camera.bearing: where it stands now.",
|
|
2934
|
+
followAvoid: "Keep the followed fish in view, 0\u20131 (default 0): when something is in the way the chase camera rises over low clutter or pulls in, eased. For long walking takes through a village. No effect in the fish's own eye (followDistance under about 16).",
|
|
2934
2935
|
// cast
|
|
2935
2936
|
fishCount: "How many fish when `fishMix` is empty (all are `fishUrl`).",
|
|
2936
2937
|
finish: "A final full-screen pass: gentle grade, soft vignette, dither against banding, and restrained bloom on high-end devices (0 = none; never on the low tier).",
|
|
2937
2938
|
fishUrl: "The single model used when `fishMix` is empty. ipfs:// or https.",
|
|
2938
|
-
fishMix: "The cast: `id[:count][@style]`, comma-separated
|
|
2939
|
+
fishMix: "The cast: `id[:count][@style]`, comma-separated: `100:2@drift, 257:1, seahorse:3, shark:1@patrol`. Minted breeds plus bundled creatures: shark crab dori glowfish babyfish hackerfish blowfish starfish octopus snail dot dolphin. Floor walkers keep their own pace (swimSpeed does not hurry them): crab (climbs rocks, forages, pinches, waves), starfish (walks upright too; dances with `starfishDance`), snail (very slow; hides in its shell). `dot` (experimental) is Dot the courier, a box on two legs with a screen face; `dolphin` (experimental) chatters, flips and blows bubbles. Both act out vignette gestures. Overrides fishCount/fishUrl.",
|
|
2939
2940
|
dracoPath: "Where the Draco decoder lives; leave empty on a channel.",
|
|
2940
2941
|
swimSpeed: "Global swim speed multiplier. 0.4 is contemplative, 1 lively.",
|
|
2941
2942
|
swimStyle: "How the cast swims unless a fishMix entry says otherwise (`@style`). `auto` picks by breed.",
|
|
@@ -2955,15 +2956,15 @@ var PARAM_DOCS = {
|
|
|
2955
2956
|
shoalSpeed: "How fast the school travels (0.3\u20132, default 0.8), independent of `swimSpeed`. It swims above the plants, across the front of the shot unless the camera orbits.",
|
|
2956
2957
|
// look
|
|
2957
2958
|
fishLighting: "`lit` (default) lights fish with a studio rig and their own glow parts; `flat` is the unlit original.",
|
|
2958
|
-
fishAmbient: "The water's light on the fish in lit mode
|
|
2959
|
+
fishAmbient: "The water's light on the fish in lit mode (backs, flanks, bellies, metal plates). Fixes fish reading dark; 0.6\u20131 in bright tanks. Dims with a follow-spot's house lights.",
|
|
2959
2960
|
fishGlow: "How strongly GLOW- parts of a fish bloom and light their neighbours and the floor.",
|
|
2960
2961
|
fishMetal: "`on` (default) gives METAL- parts a polished, reflective finish.",
|
|
2961
|
-
snailShell: "
|
|
2962
|
-
starfishDance: "Starfish dance: `aerobics
|
|
2962
|
+
snailShell: "The snails' shells: `banded` (as drawn), `pearl` (iridescent nacre), `gold`, `glow` (a spiral that breathes light; best at night); `mix` (default), each its own. Lit fish only: flat lighting and the neon look keep the banded coat. frame.state.fish[i].shell says which.",
|
|
2963
|
+
starfishDance: "Starfish dance: `aerobics`, a class facing the camera with an instructor, in unison; `freestyle`, each its own move every eight counts; `duet`, couples face to face (basic, sway, twirl, dip, lift), best with `spotRig: 0/#ffd27a*26, 1/#ff8ad0*26`. `off` (default): they crawl and wave on their own. Cast a few (`fishMix: starfish:7`); best with `shot: front`, `autoRotate: 0`, a bright room. The class faces the live camera every frame (a follow camera uses cameraAzimuth).",
|
|
2963
2964
|
danceTempo: "Beats per minute for the starfish dance (60\u2013180, default 128). Glides on the beat.",
|
|
2964
2965
|
fishLook: "`neon` dresses the bundled creatures (crab, glowfish, shark\u2026) for blacklight: near-black coats, eyes and a crab's mouth glowing a neon of their own. Best in a dark room (abyss, void) with `finish`. `natural` is the default.",
|
|
2965
2966
|
swimWave: "Fish bend as they swim: a wave runs nose to tail and the body curls into turns (0 = rigid wiggle). Skips the turtle, crab and fish that already have a skeleton; the seahorse gets its own motion instead \u2014 fin, tail and nod.",
|
|
2966
|
-
fishAvoid: "Fish make way for each other
|
|
2967
|
+
fishAvoid: "Fish make way for each other: a pair about to meet parts a second ahead, the smaller giving more, over or under before round. 1 (default) on, 0 pass-through. `inspect().crowding` counts pairs still touching.",
|
|
2967
2968
|
eyeLife: "Eyes blink, look, and emote (0 = painted on). Redraws each token's own pixel-grid eye; black and white only.",
|
|
2968
2969
|
// water and room
|
|
2969
2970
|
fogColor: "The water colour; also the background. Dark blues and purples make light sources read.",
|
|
@@ -2977,9 +2978,9 @@ var PARAM_DOCS = {
|
|
|
2977
2978
|
moteDensity: "Suspended motes.",
|
|
2978
2979
|
moteColor: "Their colour.",
|
|
2979
2980
|
environment: "A room preset (floor, ceiling, light shafts). `void` for the mineral-world scenes.",
|
|
2980
|
-
floorKind: "Floor shape: `auto` follows the environment, `flat
|
|
2981
|
+
floorKind: "Floor shape: `auto` follows the environment, `flat`, or terrain `dunes`, `ridges`, `basin`, `shelf` (the town on a terraced plateau), `trench` (a deep channel across the front), `terraces` (tiers behind the town).",
|
|
2981
2982
|
waterY: "Height of the water ceiling; -1 = the environment's own.",
|
|
2982
|
-
rayStrength: "Light shafts from the surface
|
|
2983
|
+
rayStrength: "Light shafts from the surface, within device budget: 5 on the high tier, 2 on standard, none on the lowest tier in a room with a water surface (reef, kelp, ice, lagoon; abyss, vent and universe keep 2). Where dropped, perceiveChannel reads room.rayStrength 0.",
|
|
2983
2984
|
caustics: "The dancing net of light from the surface on the floor, rocks, plants and fish (0 = none). Sharp near the top, soft and dim deep down.",
|
|
2984
2985
|
causticScale: "Size of the caustic cells: below 1 a fine shimmer, above 1 broad slow bands.",
|
|
2985
2986
|
surfaceMirror: "The surface from below: a window up to the light and a rippling mirror of the tank around it (0 = the plain sheet). Needs reef, kelp, ice or lagoon; pays off on the `surface` and `low` shots. High tier reflects the real tank, mid tier the deep water.",
|
|
@@ -2995,27 +2996,27 @@ var PARAM_DOCS = {
|
|
|
2995
2996
|
rockVeins: "Crystals bursting out of the rocks: each crown broken open, chips on the rim, a colony of the same crystal growing from the breach. 0 is plain stone.",
|
|
2996
2997
|
geodeHomes: "Geode houses (0\u20133) in a crescent: a village. Their doors are vignette marks `home1`\u2026, `home1in`\u2026. Capped at 2 on basic/minimal tiers (3 on standard/high); a dropped house takes its homeN/homeNin marks, and indoors there are none.",
|
|
2997
2998
|
interior: "`geode` sets the whole scene INSIDE a geode home: furniture, chandelier, marks like `table`, `bed`, `door`.",
|
|
2998
|
-
floraDensity: "Voxel plants
|
|
2999
|
-
geodes: "Wild geodes about the floor (0 = none): split geodes
|
|
2999
|
+
floraDensity: "Voxel plants: one tank-wide budget (density \xD7 36/72/108 by tier) shared among crystals and geodes (or six bare spots), so more crystals means sparser gardens. What grows is `floraMix`; empty, the room picks (coral on a reef, kelp in the kelp forest, glow caps in the abyss).",
|
|
3000
|
+
geodes: "Wild geodes about the floor (0 = none): split geodes and thunder eggs, amethyst cathedrals, crystal clusters, one mega cavern. They glow and pulse with the crystals (crystalGlow, crystalPulse), take the nearest crystal's mineral, grow flora like a crystal, and wake when a fish comes close.",
|
|
3000
3001
|
geodeMix: "Which geodes: `kind[:weight]`, comma-separated. geode cathedral cluster cavern (the cavern is one at most).",
|
|
3001
|
-
geodeMineral: "What they are made of: amethyst agate celestine citrine carnelian rose emerald quartz smoky. Empty = the mineral nearest in colour to the
|
|
3002
|
+
geodeMineral: "What they are made of: amethyst agate celestine citrine carnelian rose emerald quartz smoky. Empty = the mineral nearest in colour to the nearest crystal; `world` = two from the seed; or a list.",
|
|
3002
3003
|
fountain: "The town square's fountain where the paths meet: `vent` (a hot-vent chimney crusted with crystal, glowing at the mouth) or `geode` (a great geode basin on a plinth). A bubble column, a pebble plaza, a light of its own, and a vignette mark `fountain`.",
|
|
3003
|
-
signs: 'Underwater signage, `kind[@place][>target][/#color][*size][:text]`:
|
|
3004
|
-
signFlicker: "How unstable the lit signs' power is (neon and LED
|
|
3004
|
+
signs: 'Underwater signage, `kind[@place][>target][/#color][*size][:text]`: `plank` on a post, `arrow` pointing at another place, life-`ring` with a plaque, lit `porthole`, glowing `neon` lettering, scrolling `led` board. Each stands beside its place facing the front; with no @place, in the open. Original words only. `plank@gate:"Welcome to the reef", neon@home1/#ff4fa0:OPEN, arrow@hub>gate:Castle`.',
|
|
3005
|
+
signFlicker: "How unstable the lit signs' power is (neon and LED), 0\u20131, default 0.4: hums, stutters, a dead row for a moment, now and then a reboot. Each sign has its own supply; 0 is steady. Flash-safe at any setting.",
|
|
3005
3006
|
streetLamps: "Crystal streetlamps along the paths (0 = none, 1 = about 24): slate posts with a crystal crown in their nearest crystal's colour, a halo and light on the floor. Needs paths.",
|
|
3006
|
-
townProps: "The village's small things, comma-separated kind[:count][/style]: fence (a yard round every home
|
|
3007
|
-
floorCover: "What the village lays on its floor, comma-separated kind[/style]: lawn (
|
|
3008
|
-
pyramids: "Pyramids built of cubes
|
|
3009
|
-
pyramidMix: "
|
|
3007
|
+
townProps: "The village's small things, comma-separated kind[:count][/style]: fence (a yard round every home with a gate; driftwood coral stone crystal, none = each home its own), mailbox (by every gate: post, clam or bottle; vignette marks mailbox1\u2026), bench[:n] (round the fountain or hub; shell stone), sock[:n] (a current sock). Fences and mailboxes need geodeHomes.",
|
|
3008
|
+
floorCover: "What the village lays on its floor, comma-separated kind[/style]: lawn (each home's yard; stripes checks), mosaic (a compass rose round the fountain or hub; stone shell glass), mat (at every door; kelp stripe), steps (stepping stones down every walk; slate sand moss, none = the walk's own ground), ripples (the open sand; fine broad). Lawns and mats need geodeHomes, steps need paths, a mosaic needs a fountain, paths or homes. Mats and stones lie only on flat ground.",
|
|
3009
|
+
pyramids: "Pyramids built of cubes like the fish (0 = none, 1 = about a dozen complexes): symmetric stacks, a great pyramid and its queens, the great ones at the back. Flat ground only: use floorKind: flat (none on dunes, ridges or a basin).",
|
|
3010
|
+
pyramidMix: "Shapes and stones: `shape|stone[:weight], \u2026`. Shapes giza step bent djoser mayan frame; stones sandstone limestone obsidian jade gold lapis coral crystal nacre basalt, and lit led (white and rainbow) and neon (magenta and cyan), every cube a lamp in the light show. Empty = every shape in the room's stone.",
|
|
3010
3011
|
pyramidLayout: "field = complexes over the floor; stage = one monumental pyramid in the middle of the camera's orbit (lit if the mix has led or neon, else stone with lit trim), a small one at each side, the field behind. Needs flat ground in the middle.",
|
|
3011
|
-
pyramidShow: "The lit pyramids'
|
|
3012
|
+
pyramidShow: "The lit pyramids' show (led, neon or trim in pyramidMix): empty or auto = the whole field as one wave through every routine; solo = each its own; a routine (rings beam edges equalizer rainbow twinkle faces rain spiral breathe ripple); or a looping cue sheet `8s:rings, 8s:beam, 16s:equalizer`. Steered live, no rebuild.",
|
|
3012
3013
|
pyramidBpm: "The light show's tempo, 0\u2013140 (0 = free-running): the motion steps on the beat and each beat lifts the lamps a little \u2014 never a flash.",
|
|
3013
|
-
geodeLayout: "`field` (default) scatters them; `gallery`
|
|
3014
|
-
floraLayout: "`garden` (default) grows
|
|
3015
|
-
floraPalette: "One colour scheme for the garden
|
|
3016
|
-
floraMix: "Which plants: `species[:weight]`, comma-separated
|
|
3014
|
+
geodeLayout: "`field` (default) scatters them; `gallery` lines them up, a row per kind and a column per mineral, the mega geode behind. Frame with cameraDistance 400, elevation ~26, nothing else in the scene.",
|
|
3015
|
+
floraLayout: "`garden` (default) grows plants round the crystals; `gallery` plants one of each species in two rows across the front (low before tall). With `floraMix` set, only its species. Frame with `shot: front` or `cameraDistance` ~260.",
|
|
3016
|
+
floraPalette: "One colour scheme for the garden: `world` picks a hero hue, a neighbour and an accent from the seed; or give up to six `#rrggbb`. Each colony is pulled most of the way to one of them. Empty = every species its own colours.",
|
|
3017
|
+
floraMix: "Which plants: `species[:weight]`, comma-separated: grass tube bulb fan kelp anemone staghorn brain whip barrel shelf seapen clam bubble elder curl pod (giant clam: two at most; elder, a lantern tree: one). Colonies share a colour. `kelp:3, whip, seapen` is a kelp forest; `staghorn:2, brain, anemone:2, clam` a reef. Empty = the room's own garden. Needs floraDensity > 0.",
|
|
3017
3018
|
bubbleVents: "Bubbles from chimneys, fissures and crystals.",
|
|
3018
|
-
bubbleStyle: "How vent bubbles live: `classic` loops puffs; `live` grows each bubble at the vent,
|
|
3019
|
+
bubbleStyle: "How vent bubbles live: `classic` loops puffs; `live` grows each bubble at the vent, rises it to the surface (if there is one) and pops it, resting the vent now and then. Distant bubbles dim instead of fattening.",
|
|
3019
3020
|
pearling: "Oxygen pearls on the plants: beads grow on the leaves over half a minute or more, sway with them and let go (0 = none). Needs floraDensity > 0; with no flora there is nothing to pearl on.",
|
|
3020
3021
|
co2Mist: "A fine haze of tiny bubbles from the vents, drifting on a slow current (0 = none).",
|
|
3021
3022
|
marineSnow: "Drifting lit particles; gives the water depth.",
|
|
@@ -3524,7 +3525,7 @@ function dependencyProblems(params) {
|
|
|
3524
3525
|
}
|
|
3525
3526
|
if (set("danceTempo") && dance === "off") out.push({ path: "danceTempo", also: ["starfishDance"], message: "does nothing while starfishDance is off" });
|
|
3526
3527
|
if (follow < 0) {
|
|
3527
|
-
for (const k of ["followDistance", "followAngle"]) if (set(k)) out.push({ path: k, also: ["cameraFollow"], message: "does nothing while cameraFollow is -1 (the orbit camera)" });
|
|
3528
|
+
for (const k of ["followDistance", "followAngle", "followAvoid"]) if (set(k)) out.push({ path: k, also: ["cameraFollow"], message: "does nothing while cameraFollow is -1 (the orbit camera)" });
|
|
3528
3529
|
} else if (follow < cast) {
|
|
3529
3530
|
for (const k of ORBIT_PARAMS) if (set(k)) out.push({ path: k, also: ["cameraFollow"], message: `ignored while cameraFollow rides with slot ${follow} \u2014 they return when it is -1` });
|
|
3530
3531
|
}
|
|
@@ -3753,6 +3754,12 @@ var METAQUARIUM_PARAMS = {
|
|
|
3753
3754
|
* it (the default), 90 at its side, 180 in front looking back at its face
|
|
3754
3755
|
* — a hackerfish's screen, a crab's smile. */
|
|
3755
3756
|
followAngle: { type: "number", default: 0, min: -180, max: 180, ease: "smooth" },
|
|
3757
|
+
/** Keep the followed fish in view (sightline.ts): when a home, a wall, a lamp
|
|
3758
|
+
* or a kelp stand comes between it and the chase camera, the camera rises a
|
|
3759
|
+
* little to look over low clutter and otherwise pulls in toward the fish, as
|
|
3760
|
+
* a game camera's spring arm does — eased, never a snap. 0 (default) is the
|
|
3761
|
+
* plain chase camera; 1 the full arm. Not the fish's-eye view (it has none). */
|
|
3762
|
+
followAvoid: { type: "number", default: 0, min: 0, max: 1, ease: "smooth" },
|
|
3756
3763
|
/** Continuous orbit speed, degrees/second. Zero by default: the tank is
|
|
3757
3764
|
* still, letting the fish movement carry the scene. Steer up for an orbit. */
|
|
3758
3765
|
autoRotate: { type: "number", default: 0, min: 0, max: 12, ease: "smooth" },
|
|
@@ -4385,4 +4392,4 @@ export {
|
|
|
4385
4392
|
paramSpaceWith,
|
|
4386
4393
|
coerceNum
|
|
4387
4394
|
};
|
|
4388
|
-
//# sourceMappingURL=chunk-
|
|
4395
|
+
//# sourceMappingURL=chunk-Y3TSBXXY.js.map
|