tinyworld-tinyverse-collectibles
GitHub管理Tinyverse收藏品功能,包括卡牌揭晓、岛屿快照保存及收藏展示。涉及认证门禁、免费包限制逻辑及旧版世界轮播归档处理,支持玩家获取并查看唯一生成的岛屿卡片。
Trigger Scenarios
Install
npx skills add jasonkneen/tiny-world-builder --skill tinyworld-tinyverse-collectibles -g -y
SKILL.md
Frontmatter
{
"name": "tinyworld-tinyverse-collectibles",
"description": "Tinyverse collectibles lane — pack reveal, frozen islands, play-mode visits. Universe carousel is archived but code stays in repo."
}
TinyWorld Tinyverse collectibles
Two app routes:
- Build / Freeplay — editable sandbox. World menu: Create new (blank grass), Create
default (
default_island.json). Generate-from-prompt stays. No pack economy, no collectible reveal, no gold scoring on this path. - Tinyverse — collectibles. Welcome Tinyverse goes straight to
card_reveal.htmlafter login + allowlist check (no profile form, no avatar picker, noWS.open()carousel). Island pulls usescripts/island-viewer-sequential-generator.jsonce, then save an immutable snapshot to the player's collection.
Archived (do NOT delete core code)
The legacy universe carousel and MMO picker live in engine/world/46-worlds-universe.js.
Mark it archived: welcome Tinyverse no longer calls WS.open(), but the module
stays loaded in tiny-world-builder.html. Dev, tests, and deep links may still invoke
window.__tinyworldWorlds.open() / enterWorld().
Related modules stay loaded (not archived for deletion):
47-worlds-room.js,48-worlds-harvest-hud.js— PartyKit room client when entering a published world roomcreateRandomIslandWorldFromMenu,randomIslandPreviewGenerate— kept; Build menu no longer calls random-island createisland-viewer.html— dev/standalone shell; not the collectible visit surface
Pack reveal + collection (card_reveal.html)
Do not load without auth. scripts/tinyverse-auth-gate.js blocks the page until
the user is signed in and /api/admin-users?action=tinyverse-access returns
allowed: true (same gate as welcome Tinyverse). Dark-launch allowlist lives in
netlify/functions/lib/tinyverse-access.mjs (default:
jason@bouncingfish.com, simongarthfarmer@gmail.com; extend via
TINYVERSE_ACCESS_EMAILS env). Non-allowlisted signed-in users see welcome
COMING SOON (is-soon on #welcome-tinyverse).
Canon Tinyverse entry. Loads:
scripts/island-viewer-sequential-generator.js— one-shot island pull per cardengine/world/26b-random-island-economy-profile.js— canonical Raw Yield economy (window.__buildIslandRawYieldEconomy) and Raw Yield-only generated island profile (window.__buildRandomIslandEconomyProfile). Pack cards, collection labels, island viewer, and builder reveal all recompute Raw Yield fromworld + seed; card labels read likeCommon - Raw Yield 169, nevergold/day, and do not append archetype.scripts/world-preview.js— isometric preview painted on island card facesscripts/tinyverse-collectibles.js— preview GOLD, pack purchase, immutable snapshots
Release preview (tonight): store hub → 3 free pack opens per signed-in email
(tinyworld:free-packs-opened.v1:<email>, limit FREE_PACK_LIMIT = 3) → 3D theater
→ 1 island per pack (no artifacts/stickers/bonus cards) → island auto-saved to
tinyworld:collectibles.v1 on open → flip/visit in play mode.
Hub (scripts/tinyverse-store-hub.js): free-opens counter, open pack CTA, inline
Your islands grid with Visit. Store button in theater returns to hub.
Builder chrome on card_reveal.html via scripts/tinyverse-chrome.js: wordmark
top-left, language picker bottom-left (styles/tiny-world.css + i18n), home +
logout top-right. Chrome stays visible on hub and auth gate; hides during the
dark pack theater.
Hub layout (scripts/tinyverse-store-hub.js): two-column on wide screens — main
pack/collection card left, Live opens activity rail right with simulated
player names + island pulls (preview placeholder until real multiplayer opens).
Catalog is a single island-pack SKU in scripts/tinyverse-store-catalog.js.
Generated-island card rarity/score/copy is Raw Yield only. Card-facing stats
and reveal resource rows omit zero values; the economy object can still retain
zero counts internally, but UI should not print empty resources. Do not put
archetype, best-use, Food/Materials/Commerce/Defense/Charm stats, potential,
or gold/day on card-facing records or reveal UI. Preview GOLD / artifact shop
are paused for this release.
Fish is a derived Raw Yield resource: every terrain: "water" cell rolls
seed + '|fish|' + x + ',' + z at 25%. Do not write Fish as a generated cell
kind or persist fish markers into v:4 saves.
Preview GOLD lives in tinyworld:tinyverse-gold.v1 (starts at 500). Server GOLD
can replace this later; do not delete the local path when wiring API spend.
Pack SFX reuse the repo sounds/ foley library via scripts/tinyverse-pack-audio.js
(same clips as engine/world/22-audio.js: whoosh burst, knock purchase, rustle flip,
ripple focus). Ambient loop picks a random music-horizon-*.mp3 after first gesture.
Respects builder mute/volume keys in tinyworld:audio:* localStorage when present.
Collectible island visit
Use the builder in play mode, not a separate viewer shell:
window.__tinyworldCollectible.enter({ id, world, profile });
Boot: bootCollectibleHandoffFromQuery() in 30-ui-boot-wiring.js reads
?collectible=<id> plus sessionStorage tinyworld:collectible-pending, then
calls enter() after applyState is ready.
- Forces play mode; locks build/play toggle (
body.tinyverse-collectible) - Recomputes economy profile from the applied world (
recomputeRandomIslandProfilein30-ui-boot-wiring.js) beforeopenNewWorldReveal(profile)so card stats match the rendered island - The first visit reveal shows a compact Raw Yield resource card: only nonzero resource rows/groups and nonzero score tiles render, so the card does not need an internal scrollbar.
- Blocks autosave onto the freeform build slot while active
- One-way fork:
importToBuildCopy(name)→ new editable draft in My Worlds; never write back to the collectible canonical snapshot
Do not
- Delete
46-worlds-universe.jsor strip its script tag to "clean up" - Remove generators (
26-ai-generation.js, sequential generator) when hiding UI paths - Replace collectible visits with
island-viewer.htmlas the primary player surface
Version History
- 2ffaf91 Current 2026-07-06 00:20


