n
This page tracks the first public release pass for Emoji Card Collector. Keep framework-level work in Release Sprint Plan and reusable APIs; this page is for game-specific release readiness.
Release Goal
Ship Emoji Card Collector as a small, complete card-battler demo that proves the framework's card, pack, shop, inventory, battle, collection, achievements, save, menu, theme, input, audio, and build-profile systems are ready for reuse.
Current Build Status
- Current MVP pass updated: 2026-09-10.
- The
emoji_card_collector build profile is seeded and marked single_game_ready.
- Main-branch CI now includes
emoji_card_collector in the active downloadable Linux/Windows build matrix.
- Itch deployment is enabled for
convanalytics/emoji-card-collector:html5. The Pages landing page links the Emoji Card Collector card to https://convanalytics.itch.io/emoji-card-collector.
all_demos web remains hosted through GitLab Pages, so the card game can still be played from the multi-game launcher.
- Local Windows web export is currently blocked on missing Godot 4.7 web export templates in
C:/Users/Nick/AppData/Roaming/Godot/export_templates/4.7.stable/. This is a local validation setup issue; the Emoji build profile itself validates.
- Release card-character art has been refreshed from the generated vibrant emoji set into the tracked
assets/sprites/cards/characters/ files. The current pass verifies 76 card PNGs with 76 unique file hashes, so release builds do not depend on ignored generated folders.
- The Card Collector submenu now includes Achievements and a compact How to Play page covering shop flow, locks, merging, battles, raids, and permanent card death.
- Card Collector shop, merge, battle roll/damage, win, and loss events now call reusable audio-manager SFX names. Real WAV/OGG/MP3 assets can replace the generated fallback tones by using the same basenames in
assets/sfx/.
- Card Collector Shop, Cards/Inventory, Set/Collection, Fight, Achievements, and How to Play screens have active compact-layout smoke coverage for the first release polish pass.
- The reusable page shell now treats the active tab as fixed viewport space: the outer page scroll is disabled, intended inner lists/grids/status panels own overflow, and the Set/Collection card detail popover renders on a compact local overlay layer instead of participating in page layout.
- Shared settings now migrate untouched legacy music volume from the old 70% default to the current 40% default while preserving intentionally customized user volume settings.
- Battle screen smoke coverage now verifies the pre-battle selection state, active fight state, visible HP bars, readable HP/roll-turn status text, floating damage feedback after a roll, and reusable three-fight raid progression rules.
- Smoke coverage now also verifies the broke/no-card rescue pack path plus reusable locked-card protections for shop sales and merge-material consumption.
- Reusable fallback SFX now cover purchase, sell, merge, battle roll, damage, card death, win, loss, and achievement unlock events. Authored SFX assets can replace them later by using the same basenames in
assets/sfx/.
- Tracked first-pass WAV assets now exist for the same ECC release SFX names, so web builds no longer rely only on runtime-generated fallback tones.
- Compact-layout smoke coverage now checks the ECC shop, inventory, collection, and battle pages at the 640x800 embed size with both medium and large text, including the rule that the outer page shell does not scroll.
- Local verification on 2026-09-10 passed the full headless smoke test and the
emoji_card_collector build-profile validation for web, Windows, and Linux. The remaining release gate is CI/export plus live browser review, not known local compile or layout-test failure.
Push Checklist
- Run the
emoji_card_collector build-profile validation before pushing. Last local pass: 2026-09-10.
- Confirm
BUTLER_API_KEY is set in GitLab before expecting the main-branch itch deploy job to publish the card game.
- Run the full headless smoke test before pushing; Windows may still report Godot cleanup warnings after a passing run, but the process exit code should be
0. Last local pass: 2026-09-10.
- Do not rely on ignored generated emoji folders for release builds. The tracked
assets/sprites/cards/characters/ files are the release inputs.
- Local web export requires the Godot 4.7 web export templates to be installed under the local Godot export-template directory. A missing-template failure is a workstation setup problem, not an Emoji Card Collector compile failure.
- After CI publishes, playtest the all-demos launcher and the single-game build once each to confirm the submenu background, How to Play page, save-slot flow, shop, battle, raid, achievements, and settings navigation still route cleanly.
Must-Have Validation
- Start menu routes into the Card Game submenu and back without trapping focus.
- Continue/new-save flow works for all three save slots.
- Shop shows packs and 3-5 singles, highlights the selected purchase, confirms buys, and reports total sell value for opened packs.
- Base rescue pack appears when the player has no cards and no money. Covered by smoke; replay once in browser for feel.
- Inventory list is stable, sortable, mobile-scrollable, and keeps text sizing consistent after selection.
- Selling acts only on the selected/currently confirmed card and respects locks. Locked sale protection is covered by reusable manager smoke.
- Merging protects locked/favorite cards, previews comparisons, and combines levels correctly up to the +5 cap. Locked material protection is covered by reusable manager smoke.
- Battle selection locks the active card during a fight, hides the selection list while active, shows both card names, icons, reusable HP bars, animated red/green impact feedback, clears old battle history between fights, and records rewards/losses at fight end.
- Raid mode runs three escalating fights with clear results and rewards.
- Collection screen shows unknown/discovered/owned/current-deck states.
- Achievements unlock globally and remain visible after starting a new save.
- Controller, keyboard, and touch navigation work in shop, inventory, battle, collection, settings, achievements, and save-slot screens.
- Each card should resolve to a unique emoji sprite mapping wherever possible. The current tracked card-character set is unique; future art swaps should keep this validation before a release candidate.
Polish Targets
- Review card/pack balance so rare, epic, and legendary cards feel exciting rather than routine.
- Replace the first-pass ECC WAVs with more polished authored SFX only if the release playtest finds them too plain or distracting.
- Playtest battle readability in browser: damaged emoji sprites flash/pulse, red/green health deltas animate from the reusable feedback manager, visible HP bars sit above each battler, and the compact status text remains readable at the release embed size.
- Confirm all card and pack artwork resolves through game-local sprite maps and shared sprite caches.
- Expand the compact help/info page only if playtesters still miss packs, singles, locks, merging, battles, raids, or permanent card death.
- Review mobile browser layouts with medium and large text after export. Smoke now covers the shell math, but the final release pass still needs visual browser review for feel, spacing, and readability.
- Reconfirm the 640x800 itch embed layout in a live browser after CI publishes; smoke coverage protects the sizing contract, but the release pass still needs eyes on the actual exported page.
Framework Touchpoints
cardInventoryAdapter should remain the owner of card row filtering, sorting, selected-state metadata, stat highlighting, and sell values.
inventoryList should remain the reusable table renderer for inventory and fight-pick lists.
battleSequenceManager should remain the source of standard/raid sequencing.
battleManager emits structured turn events and battleFeedbackManager converts those events into reusable floating damage/heal feedback and hurt flash timing for the scene to render.
resultsScreenController.show_popup(...) should be used for future battle or raid result dialogs when the current scene-local result text is migrated.
statsManager owns global achievement persistence and event-based unlocks.
Deferred Until After First Release
- Deeper deckbuilding rules beyond the current inventory/battle selection loop.
- Advanced collection filtering, card search, and multi-card batch operations.