r/devblogs • • 2h ago

tech & code Why our local best and online leaderboard told different stories (Stunt Pals devlog)

1 Upvotes

A player sent us what looked like a contradictory report: their runs were saved in local history, and the game showed a comparison rank during play, but their best run was missing from the leaderboard list.

This happened while working on Stunt Pals, our Android animal-launch game. We had three things that looked closely related: a record saved on the device, a rank estimated during a run, and a place confirmed by the online board. The screen needed to explain which one the player was seeing.

One board, with optional login

We moved from relying on the platform's public leaderboard to an app-owned board. Players enter a unique nickname and opt in; connecting Google is a separate, optional step for recovering their ranking identity. It isn't a full cloud save or purchase backup.

That added work: handling duplicate names, supporting Korean, English and Japanese input, and providing reporting, hiding and deletion controls. We also had to distinguish pending, confirmed and failed submissions. A successful button press alone doesn't tell the player whether the score was saved online.

Daily needs one shared clock

For a worldwide daily challenge, resetting at each phone's local midnight would put different people on different days under the same heading.

We gave that mode one reset time: midnight in Korea, UTC+9. Its map, conditions and leaderboard use the same day, with daily scores kept separate from all-time bests. Local daily missions can still follow the device's date.

We also added checks for late responses. A result from yesterday's board, or from the identity used before an account connection, should not replace today's list.

What we learned

Owning the board means more responsibility. For us, it helped to separate the player's local history, shared ranking identity and confirmed online result instead of presenting them as one thing.

If you've added online rankings to a small game, what helped you make pending versus confirmed scores clear without cluttering the result screen?

A short edited gameplay clip for context:

https://reddit.com/link/1x898dq/video/tw4e9cwnv0wh1/player

Stunt Pals is free on Android, with ads and optional in-app purchases.

Google Play: Stunt Pals – Animal Launch


r/devblogs • • 11h ago

tech & code More Screenshot From Development of my 2D ISOMETRIC/TOP-DOWN MMO Game Engine

Thumbnail gallery
1 Upvotes

This update brings a lot of new additions next week, including a whole new perspective for the engine!

I thought I was close to being done. I had added all the new features I wanted, and all that was left was to polish everything... until I saw the RPG Maker U2U trailer.

And I'm like, well, look at that... If my competition has upped their game, then so must I!

So, introducing MMO Studio 0.7.0: The Diorama Update!

I've been working day and night on this update, with the new 2.5D perspective taking center stage, along with a few other major additions to the engine.

The screenshots were taken while I was building out the system and trying to match what I saw in RPG Maker U2U. The update is still a work in progress, but I thought I'd share what I've got so far!

What's New

  • Turn-Based Combat: Player battles in both PvE and PvP.
  • Moves System: A new interface that l

r/devblogs • • 12h ago

tech & code Let's make a game! 516: Updating the board (Twine Sugarcube)

Thumbnail
youtube.com
1 Upvotes

r/devblogs • • 21h ago

tech & code progress update, the megakernel kept losing to plain kernel launches, so the plan changed

0 Upvotes

a coworker of mine has been making single-request decode for Qwen3.6-35B-A3B faster on one H100 where I work, and the megakernel he set out to build kept coming out slower than plain kernel launches

the idea was one persistent kernel that streams weights across operations and layers instead of stopping at hundreds of kernel boundaries. part of it worked, a persistent dense chain was 4.4% faster than separate launches. but the full MoE block was still about 4% slower after multiple rounds, and a full layer was 9.5% slower

the reason was that one kernel config had to serve very different operations, and it lost more per-op efficiency than it got back from prefetching across them

the launch cost settled it. inside a CUDA graph a launch boundary costs about 1 microsecond, so paying it was cheaper than the barriers needed to avoid it. the failed versions still paid off, they exposed a race condition and 2 measurement bugs

so the tuned kernels stay as separate launches, and the next big gain has to come from speculative decoding. with MTP the stack is already 50% faster than stock SGLang on the same GPU

feels close to the draw call batching argument, merging work only pays while it removes more than it adds. anyone hit the same wall in their own projects?

he wrote up what worked and what lost on our blog, if you want the details: https://www.coralbricks.ai/blog/ai-latency-engineering