CYBRVILLAIN .PLANGREEN / NORMAL

05.29.2026

cybrvillain:~$ cat neon_chain_improvements.plan
Neon Chain - Improvements

Today was a busy day. Added Firebase Analytics and had a hell of a time getting it to work the way I wanted it to.

  • Added Firebase Analytics to the project — full setup including google-services.json placement, Gradle dependency wiring, and Custom Android Build integration
  • Added AnalyticsManager.gd autoload — calls Firebase directly via JavaClassWrapper, silently no-ops if Firebase is unavailable, never crashes the game
  • Tracking 15 custom events: app_open, mode_selected, game_start, game_over, score_submitted, leaderboard_opened, share_png_created, reward_ad_offered, reward_ad_started, reward_ad_completed, extra_life_used, timed_bonus_used, ad_failed, settings_opened, credits_opened
  • Key events carry parameters — game_over includes mode, score, combo, run time, and whether a rewarded ad was used; ad_failed carries failure reason
  • Added log_settings_opened() call in ModeSelect.gd when gear is tapped and log_mode_selected() call when a mode is launched — only two files changed from the original
  • Confirmed 42 total events flowing into Firebase DebugView in real time — all 15 custom events verified working end to end on device
  • Completed pre-release build audit — identified and resolved all release blockers: internet permission, test ad flag, placeholder production ad IDs, debug overlay, debug flags, stale APK name, fake interstitial draw, and dead SFX references
  • Removed dead SFX player infrastructure from Main.gd — six unreferenced .wav var declarations, _build_audio_players(), _play_sfx(), the _ready() call, and all call sites removed cleanly
  • Removed all debug prints from PromoBannerManager.gd — console is now silent on startup
Neon Chain