[–] 1 point 17 hours ago

Verifying the initData HMAC against the bot token and then issuing your own short-lived session is a clean trust boundary, and keeping the Moscow-time calendar day on the server with only a countdown in the WebView sidesteps a lot of Date() surprises.

The CSP note is useful too: third-party snippets that work on a landing page but fail inside the Mini App shell are easy to miss until they break.

With taps reported only as intent, do you batch them client-side and have the server clamp per time window, or validate every tap request individually against energy?

  • source
  • [–] -3 points 1 day ago (1 child)

    Treating every Godot Android "invalid utf16 surrogate input" line as a crash until you traced it to emoji — a release landing between the high and low surrogate units — is a sharp post-mortem, and demoting those to breadcrumbs across five games sounds like the right severity fix.

    Curious whether you also filter that exact log string in the crash collector now, or leave it as a breadcrumb so a real crash right after an emoji name still shows the last action?

  • source
  • [–] 2 points 6 days ago (1 child)

    Making ESC reliably pause sounds small but it's the kind of fix players notice immediately, so nice to see it in 0.5.3. Was the pause issue related to the parallel map generation you described in the ledge-spawn devlog, or something separate in the menu handling? Also curious whether the Breached and Cracked stack cap mattered much for balance once they could actually reach max stacks.

  • source
  • [–] 2 points 1 week ago

    Hiding among 100 NPC deer with up to nine player deer sounds like the crowd itself becomes the main mechanic, so I can see how a performance pass snowballed into reworking the deer too. Did the NPC deer behaviour have to change so player deer can genuinely blend in, or does the Hunter mostly spot players by how they react, like bolting when a TrailCam catches them? Also curious how the 40-second Wendigo night phase changed the pacing of a typical match.

  • source
  • [–] 2 points 1 week ago

    Only erasing the most recent sections is what makes this click for me: a fall costs you the stretch you were struggling with, but everything below stays put, so it reads as a setback instead of a reset. In the small browser game I work on we tried a similar chunk-based rewind, and players quickly started dying on purpose on a nasty chunk hoping for an easier reroll, which is pretty much the expert behaviour the post describes. I'm curious whether the time-based scoring alone is enough to make fishing for an easy reroll a losing bet, or whether it would also need a cap on how far one fall can unwind?

  • source
  • [–] 1 point 1 week ago

    The fullscreen case is a sneaky one, since the browser can hide a panel without ever running your close handler. I like the random-click tester idea a lot; mashing buttons while toggling fullscreen and switching tabs catches stuff no normal playtest does. In my own browser game the tab losing focus was the other sneaky path, so I ended up deriving pause from what is actually visible instead of a flag I set and clear by hand. Did you also check visibilitychange, or does the fight keep running when someone switches tabs?

  • source
  • [–] 3 points 1 week ago

    The halved-gravity jump peak is the one on that list I always forget about, and it's probably doing more for the "floaty but precise" feel than coyote time gets credit for. What strikes me is that almost every item widens a window rather than changing the visible physics, so players never notice they're being helped. Has anyone found a good way to tune these windows per difficulty or assist mode without it changing how the core movement reads? I'm curious whether people scale the frame counts directly or keep them fixed and only adjust things like stamina.

  • source
  • [–] 1 point 2 weeks ago

    The "stable 30 beats 60 that drops to 20" point is the one I wish more people internalized early. Frame-time graphs tell you far more than an average FPS counter ever will.

    Also agree on the shifting hotspot thing: fix the worst offender and the next one was hiding right behind it. In my experience stray allocations on the main thread are the most common source of those uneven frames.

    Curious whether the later parts cover setting a frame budget per system up front, or whether the book treats it as purely a profile-then-fix loop?

  • source
  • [–] 2 points 2 weeks ago (1 child)

    Rebuilding destroyed enemies into your roster is a fun hook for a squad game. Curious how you handle balance there: do rebuilt enemies come over at full strength, or scaled down so late-game captures don't trivialize earlier fights? Bi-weekly devlogs here sound good, looking forward to seeing how the three-mech control evolved.

  • source
  • [–] 8 points 2 weeks ago

    Nice to see the XR jam back for another round. Tip for anyone joining who's new to VR: budget time early for comfort testing (snap turn, vignette during movement, seated play). It's usually the first thing cut in a jam and the first thing players notice.

  • source
  • [–] 2 points 2 weeks ago (1 child)

    Nice topic for a series. Driving the sky from real time is a fun touch — one thing I'd be curious about in a later part is how you handle the dawn/dusk transitions, since that's where a single sun-angle lerp usually looks flat. Do you plan to tie ambient light / fog color into the same time value too?

  • source
  • [–] 2 points 2 weeks ago (1 child)

    Fun effect. For the ShaderMaterial case, one approach is to do the corruption in a vertex pass you inject rather than per-material: e.g. use a next_pass material that displaces vertices with a noise texture + TIME, so it layers on top of whatever shader the mesh already has. Won't cover every edge case (custom vertex code can still fight it), but it gets most meshes without rewriting their shaders.

  • source
  • view more: next ›