We will be undergoing planned maintenance on Oct 7th 6:00AM UTC / Oct 7th 2:00AM ET

TrashDash

A fast-paced, physics-driven sorting game that teaches real NYC waste disposal habits, one satisfying (and occasionally chaotic) round at a time.

Inspiration

We've all been there. You just finished eating from your favorite spot on campus, and now you're standing over four bins doing math in your head: does the plastic lining come out of this container before it's recyclable? Do I dump the last bit of soda before the can goes in with the cans? Do I scrape off the sauce first, or does that not even matter?

Sorting trash is something almost everyone deals with every single day, and almost nobody was ever actually taught how to do it. Paper, compost, plastic, landfill, combustibles — the categories multiply, the rules vary by material, and the "right answer" is rarely obvious just from looking at something.

It turns out that hesitation isn't a small thing at city scale. New York's own 2023 waste study found that while roughly three-quarters of residential waste could be diverted from landfill using programs the city already runs, the actual diversion rate came in at just over 20%. Contamination in the metal/glass/plastic recycling stream climbed from under 19% in 2017 to over 27% in 2023, and something as simple as a can that still has soda in it means a huge share of aluminum never makes it into the recycling stream at all. It's not just an efficiency problem, either — a New York–based study linked living within a mile of a hazardous landfill to a meaningfully higher rate of congenital health issues in children, one small reminder that where our trash actually ends up isn't abstract.

We didn't want to teach any of this with a poster or a quiz nobody would read twice. We wanted the habit to form the way habits actually form: by doing the motion enough times that it becomes reflexive. That's what TrashDash: NYC Echo is for.

What it does

  • Core disposal loop: drag trash items into the correct bin (paper, compost, plastic, landfill) against a countdown timer. Sort fast and correctly and you're rewarded with a velocity-based score multiplier; sort late, or sort wrong, and you eat a contamination penalty instead. A pulsing "lock-on" reticle appears the moment you pick an item up, so you always know exactly what you're about to commit to before you let go.
  • Interactable trash, not just icons: items that actually require the real-world prep step — emptying a soda can before it counts as properly disposed, peeling the plastic lining out of a food container, scraping food residue off a plate — so the muscle memory you build actually transfers.
  • CHI progression across real NYC venues: each location (starting with a campus cafe, then a Financial District office, then Times Square) tracks its own CHI meter. Sort well and it climbs, sort poorly and it drops — and the venue's environment visibly reflects it, degrading from clean to grimy to outright ruined if you keep missing, and unlocking the next location once you've earned it.
  • Difficulty that actually scales: beginner, intermediate, and expert tiers change the timer length, how many items are in play at once, whether hint text is visible, and — at the highest tier — let you sort two items at once instead of one.
  • Built to be legible, not just functional: every correct/incorrect signal pairs its color with a shape (a checkmark or an X), so the core feedback loop never depends on color alone.

How we built it

The game runs on Phaser 3 with TypeScript in strict mode and Vite for fast iteration. Every item, bin, and venue is defined in a Zod-validated JSON schema, so a malformed entry fails loudly at the data layer instead of quietly breaking scoring mid-round. A single GameState singleton keeps things simple rather than reaching for a state library the project doesn't need, and the scoring, combo, and CHI math all live behind Vitest unit tests, since that's the one layer where an invisible bug directly costs someone points they earned.

A lot of the build time went into "juice." A custom AudioLayerManager built on Howler.js layers in drums, bass, synth pads, and lead as your combo streak climbs, and cuts everything to a dramatic half-second of silence the moment you make a mistake before drums pick back up — a soundtrack that's actually reacting to how you're playing, not just looping in the background. Particle bursts and a satisfying squash-and-stretch tween scale up with your combo, and cross a five-streak and the entire UI border catches fire.

Because final hand-drawn art takes real time to produce, we built a placeholder art generator early that draws labeled, colored stand-ins for anything missing. That let the entire gameplay loop — dragging, dropping, scoring, combo, CHI, environmental decay — get built, tested, and played through end to end before a single final sprite existed, with real art dropping in file-by-file later with zero code changes required.

Challenges we ran into

Getting the "interactable" trash items to feel right took real iteration — we went through a stretch where the scoring system would occasionally over- or under-count points on an item that was actually sorted correctly, which meant tracing the exact drop-resolution logic step by step rather than papering over the symptom. We also caught a logic bug before it shipped: the default starting CHI value for a brand-new save would have let players unlock the second venue before ever actually playing the first one, since it started right at the unlock threshold — a five-minute fix once we noticed it, but the kind of thing that's easy to miss in early testing. Tuning exactly how fast the music should fade to silence on a mistake was its own balancing act: too abrupt and it just feels like a punishment, too slow and the "your combo broke" moment doesn't land. And because the color-coded correct/incorrect feedback was designed first and accessibility second, retrofitting shape-based signals onto it took more care than building it in from day one would have.

Accomplishments that we're proud of

We're proud that the entire gameplay loop — drag, drop, score, combo, CHI, environmental decay — was fully playable and testable before final art existed at all, which meant art was never a bottleneck for iterating on how the game actually feels. We're proud that the "interactable" trash steps aren't just flavor text; scraping, emptying, and peeling are real mechanics that mirror what you'd actually do at a real bin. And honestly, watching a venue visibly recover from "ruined" back to clean after a run of good rounds still feels satisfying every single time.

What we learned

Most contamination doesn't come from people who don't care — it comes from a handful of small, specific habits (soda left in the can, plastic lining left in the container) that nobody ever walked them through, and a game can rehearse exactly those habits instead of just testing whether you know the "right" bin. We learned that feedback timing — the juice — is doing as much work as the correctness mechanic itself in whether a game feels good or forgettable. We learned that building placeholder-first meant nobody was ever blocked waiting on art. And we learned that splitting the build into clearly scoped systems with documented handoffs made it genuinely possible to parallelize the work without people (or AI agents) stepping on each other's files.

What's next for TrashDash

Composite items are next — things like paper that needs to be shredded first in the office venue — along with a post-round breakdown screen that explains exactly why each mistake happened instead of just showing a score. We want a full hand-drawn art and environment pass across all three venues, including distinct "clean vs. increasingly polluted" versions of the level-select map itself. We're planning per-venue trash generation that actually mirrors real waste mixes — more paper at an office, more food waste at a hotdog stand. Longer term, we'd like to pull in live municipal recycling-rule data, so if the city changes what's recyclable, the game's bins update automatically instead of going stale. And we'd love to add more venues, a few power-ups, and a "Saboteur" mode for anyone who wants the chaos turned all the way up.

Share this project:

Updates

Submission history