DEV Community

Cover image for One player profile for every game: building SpicaPlay
Spicanet
Spicanet

Posted on Originally published at spicanet.dev

One player profile for every game: building SpicaPlay

Most casual browser games treat you like a stranger every time you show up. You play, you get a score, the tab closes and the score evaporates. SpicaPlay is my answer to that small, petty injustice: a web-first casual gaming platform where one player identity follows you from game to game, carrying XP, achievements, streaks and leaderboard spots. It's live, there's a growing set of games you can play right now, and there's nothing to install.

Why I bothered

I didn't set out to compete with the giant game portals. They have huge catalogs and teams to match. I have a smaller ambition: make a set of quick games feel connected, so that a quick round of Reaction Tap counts toward something instead of disappearing.

The interesting design problem isn't any individual game. It's the layer between them. What does a profile mean when the games are this different? How do you reward someone for trying a puzzle game when they mostly play arcade? That's where most of my time went.

How one profile ties the games together

The loop a player goes through, whether they're signed in or not.

  1. Open spicaplay.com and start any game as a guest. No sign-up wall.
  2. Play. The game reports the result to the platform rather than keeping it to itself.
  3. XP and achievements land on your player profile.
  4. Time-windowed leaderboards and your daily streak update.
  5. The daily challenge and weekly missions nudge you toward a game you haven't tried.
  6. If you want to keep your progress, link a Google or email account.

What's actually in there

The catalog covers arcade, puzzle, adventure, strategy and sports. A few names, so you know I'm not describing vapour: Cosmic Dodge, Reaction Tap, Bubble Burst, Castle Siege, Cipher Vault and Circuit Link.

Before I call a game published, I check that it actually runs and can be played end to end, not just that its page loads. I do that with automated headless runs as well as by hand. It sounds obvious. It's also exactly the check that gets skipped, right before a game goes out with a lovely title screen and nothing behind it.

The meta layer in one table

Feature What it's for
One player identity Progress isn't trapped inside one game
XP and achievements Something to show for a quick session
Time-windowed leaderboards New players can still place this week
Daily streaks A reason to come back that isn't a notification
Daily challenge One shared goal for everyone today
Weekly missions Rewards for variety across genres
Guest play Try first and decide later

Guest first, on purpose. Account linking is optional. Forcing sign-up before the first game is the fastest way to lose someone who just wanted to kill a few minutes. Guest progress is the default; linking an account is how you keep it.

A small note on leaderboards

All-time leaderboards are a museum. Whoever got there first stays there forever, and everyone else learns not to look. Time-windowed boards reset the competition regularly, so a new player has a real shot at being on the board this week. It's a tiny decision that changes how the whole thing feels.

What's not there yet, honestly

The catalog is real and playable, but let's be adults about it: it's small next to the big portals, and I'm not going to pretend otherwise. The plan is to grow it slowly with games that actually work, not to pad it with unfinished ones.

Some games are deeper than others. A reflex game and a strategy game will never have the same replay value, and the mission system is my attempt to balance that rather than a claim that I've solved it.

I also don't have a grand story about multiplayer, tournaments or anything of the kind. If that ever happens, I'll write about it when it exists.

  • Catalog: small and growing carefully
  • Depth: uneven between genres
  • Social features beyond leaderboards: not there

If you're building something similar

  • Decide what a profile means before building the next game
  • Let games report results to a shared layer instead of storing them locally
  • Prefer time-windowed boards over all-time ones
  • Make guest play the default
  • Test that a game is playable end to end before you list it

A game that loads but can't be finished isn't a game. It's a screenshot with a loading bar.

— note to self, pinned above the catalog


Go waste a few minutes

If you've got a coffee break, try some games at spicaplay.com and tell me which one deserves a sequel. Everything else I'm working on lives at spicanet.net/products.


SpicaPlay: spicaplay.com. Originally published on spicanet.dev.

Top comments (0)