Achievements, Built to Reward the Whole Site, Not One Game
Per-game achievements tied to real skill, cross-game ones that nudge you toward games you'd never have tried, and retroactive unlocking done right.
Achievements went live today, and I built them to work at two different levels from the start — per-game achievements tied to a specific game's own mechanics, and cross-game ones that only unlock by engaging with the site broadly. That split mattered to me more than shipping achievements at all; a site with a dozen-plus games needs something that rewards exploring more than one of them, not just getting good at whichever one you already play most.
Per-game achievements had to reflect that game's actual skill, not a generic milestone
A generic "play 10 rounds" achievement is easy to implement identically across every game and says nothing real about a player's actual relationship with that specific game. I wanted per-game achievements tied to something meaningful in that game's own mechanics — surviving into Top Ace's later cloud atmospheres, reaching a specific floor in Abyss Delve, chaining a long combo in whichever game supports one. That meant writing genuinely custom achievement logic per game rather than one shared, generic milestone system applied uniformly everywhere, which is considerably more work but is the difference between an achievement that actually recognizes skill in that specific game and one that's just a disguised play-count counter.
Retroactive unlocking needed an honest answer, not an awkward silence
Someone who's already logged real hours across several games before today has technically already met the bar for some achievements without ever having a system in place to notice. I had to decide whether to retroactively scan existing play history and grant those achievements immediately, or let everyone start earning them fresh from today forward. I went with retroactive granting where the underlying data actually existed to support it, since penalizing someone's real prior effort just because achievements didn't exist yet when they did it felt like the wrong way to treat genuine, already-earned accomplishment.
Cross-game achievements needed a genuinely different design language
"Play 5 different games" or "reach a leaderboard top 10 in 3 different games" are achievements about the site as a whole, not about mastery of any single game, and they needed their own tracking layer sitting above every individual game's own systems. Building that meant achievements logic couldn't live entirely inside each game's own code — there had to be a site-wide layer watching for patterns across games, which is a genuinely different kind of system than per-game achievement logic and one I hadn't needed to build until achievements existed at all. Getting a player to try a game they wouldn't have otherwise touched, purely because a cross-game achievement nudged them toward it, is the actual goal this whole category exists to serve.
Points had to mean something consistent across wildly different achievements
Every achievement carries a point value, and calibrating those values consistently across achievements as different as "win your first Chess game" and "clear all 15 Critical Pressure chambers" meant developing an actual internal rubric for difficulty rather than assigning point values by gut feeling per achievement. Genuinely difficult, rare achievements needed to carry meaningfully more weight than easy, common ones, or the point total stops being a real signal of accomplishment and becomes just a count of how many achievements happen to exist. That rubric is necessarily somewhat subjective — there's no perfectly objective way to compare difficulty across totally different games — but having one consistent framework applied everywhere beats assigning arbitrary numbers achievement by achievement with no shared logic behind them.
Achievements had to be visible without being intrusive
Unlocking an achievement needed real, satisfying feedback in the moment it happens, without interrupting whatever the player was actually doing — a fullscreen modal congratulating you mid-dogfight in Top Ace would be actively unwelcome. I built the unlock notification as a small, self-dismissing toast that appears and fades without pausing gameplay or demanding a click to acknowledge it, so the celebration happens alongside continued play rather than instead of it. That restraint matters more for achievements than for almost any other kind of notification on the site, since achievements can trigger in the middle of exactly the moments a player least wants interrupted.
Retrofitting achievements onto games that already existed took longer than the system itself
Building the achievements engine itself was the smaller part of today's work. The bigger part was going back through every existing game and identifying what a meaningful achievement for each one should actually be, then wiring up tracking for events some of those games never needed to track before — a specific combo length, a specific floor reached, a specific survival duration. Games built before achievements existed had no reason to expose that kind of granular event data, which meant several of them needed small internal changes just to make an achievement trackable at all, not because the achievement system demanded anything unreasonable, but because nobody had needed that data surfaced until today.
What I'm not building yet, on purpose
There's no achievement showcase or comparison against friends yet, even though Friends already exists as a feature. I'm holding off specifically because I want to see which achievements actually feel meaningful to people once real players start earning them, before building a whole social layer around comparing them. Building comparison and showcase features around a set of achievements that turn out to need real rebalancing would mean redoing that social layer too, and I'd rather let the achievements themselves settle first.
It's fitting that this launched the same week as two game revamps built on the "ship small, validate, then extend" philosophy I keep coming back to lately. Achievements are following the exact same pattern at a system level — a real, working version today, with social and comparison features deliberately deferred until there's something proven worth building those features around, once real usage has shown which achievements actually mattered to anyone and which ones were just reasonable-sounding guesses on my part that didn't actually land the way I expected them to when I first wrote them down earlier today.
More from the Devlog