Spent a while thinking my tower climbing game had a real input bug on Android. The crash collector kept getting "invalid utf16 surrogate input", always two at once

It's emoji. Characters outside the BMP are two UTF-16 units, and Godot's Java text input wrapper sends press/release per unit, so a release gets in between the high and low surrogate and android_input_handler.cpp complains. The presses still combine. The emoji goes in fine

so my busiest "crash" was players putting emoji in their name lol

my fault for treating every engine error line as a crash. it's now just a breadcrumb (last action before a crash) across my 5 Godot games and old build reports are downgraded to lowest severity

edit: the game I'm mostly working on now is a browser life sim, https://playgama.ai/play/7hersnnnxaqs5l

 

"Live it" is the first button in One Life: Reborn Simulator. You get a birth country rolled from real UN birth rates, you press it, and then you live one line per year For about 5 days pressing it froze the whole tab

My save code wraps localStorage.setItem so every save also gets copied into Playgama's storage (their Bridge). The sandbox link has no portal storage, so Bridge just writes the value back with localStorage.setItem... which goes through my wrapper again, which sends it to Bridge again. Endless microtask loop, dead tab The first save happens the moment you press Live it, so pretty much everyone got stuck on screen one

I'd tested on the real portal and on my own phone, where the storage exists. I never once clicked all the way through the sandbox link I was posting in 4 different threads On the 5th someone I'd never seen commented that the page froze when they hit Live it. That's how I found out

The fix keeps every sent value in an in-flight list until it's done, and if the same value comes back it doesn't get sent again. Also added a test that reproduces the loop so it can't sneak back

It works now. Playgama wants 100 plays on the sandbox before the real review, so plays through this link help with that https://playgama.ai/play/7hersnnnxaqs5l

 

gamepix rejected one of our browser games last week. the background music just kept going while their ad was on screen

the ad break code only muted the phaser sound manager. this one is plain html with an tag for the music, so phaser never had anything to mute

i copied the ad handling over from another one of our games and never once sat through an ad with the sound on. i always test muted

now when an ad starts, the element and web audio both go to sleep. the same fix went into our other games too. they also flagged that the rewarded buttons didn't say they'd play an ad, so those have a little video icon now. resubmitted the new build

the game is One Life: Reborn Simulator, which i made. you get born somewhere based on real UN birth shares and then live it out one line per year https://dumbgamelab.com/play/one-life/?lang=en

 

GamePix bounced my browser game this week. background music just kept going right over the ad

my ad break code only muted the Phaser sound manager. this one isn't Phaser, it's plain HTML with an tag for the music, so nothing got muted at all

I copied the ad handling from another of my games and never once listened with an ad actually running. always tested with the sound off lol

now on ad start the element and Web Audio both go to sleep, and I pushed the same fix to the other games too. resubmitted with the new build

edit: they also flagged that the rewarded buttons didn't say they play an ad, so those have a little video icon now. game was One Life: Reborn Simulator if anyone cares

 

five hearts and a guest just stays. that's the part i built everything else around

you set up a little camp in the woods and animals come by. cook for them, and once one fills its fifth heart it moves into the camp for good. there are 12 kinds of animal guests and 16 dishes, each with its own name. seasons turn over every 7 days

it plays in the itch page, nothing to download. i made it

title screen

 

70 share button taps over three days. Zero people came in from a shared link, zero shared links even opened. 42 of those taps were in the Android app

The app runs the game in a webview and navigator.share just doesn't exist there. So it fell back to copying the text to the clipboard with no sheet and no message. People tapped share, saw nothing happen and moved on. I only ever tested sharing in a browser where the sheet pops up fine, so I never saw it

Last week I already thought I'd fixed this. 130 shares, 0 visits, and the cause was me stripping the url params before analytics read them. Fixed that and it was still 0. There were two bugs stacked on top of each other

The app calls the native share sheet now, and a game that calls navigator.share directly inside the app gets blocked before release. It's a native plugin so it only lands with the next app build

The game is One Life: Reborn Simulator. Your birth country gets rolled from UN 2024 birth stats across 124 countries, no rerolls, and if you send your end card to a friend they start with the same birth. Free in the browser https://playgama.ai/play/7hersnnnxaqs5l

 

I scored my hand-drawn camp a 5.7 when I held it up against screenshots of a farm game that sold well. Then I switched the whole thing to toy-looking 3D and the score went down to 5.2, which is worse than where I started.

It took four rounds to get it to 6.8 and then 7.7. The biggest fix was a dumb one. Empty farm plots looked like holes dug in the ground, so I filled them with grass blades and tiny flowers

It's free in the browser if anyone wants to look. Do the empty plots still look like holes to you?

 

Backing out of Idle Internet Cafe Tycoon on iPhone and the OS would kill the web view a bit later. GPU memory never got released

my fix was a setTimeout for 8 s after the app went to background

It never ran on real phones. JS gets frozen the instant the app backgrounds, so anything sitting in a timer is just stuck. Shipped it anyway without knowing, crash reports kept showing up build after build

Now the release happens right in the same call that handles going to background

The game itself is a little PC bang tycoon, rows of computers and customers, it runs in the browser and on Android/iOS

 

The share link carries a birth seed (?s=) so your friend starts on the same birth you got. On load the game wiped that and the utm tail out of the address bar so it looked tidy. Analytics loaded a moment later, saw a clean URL, and logged every shared visit as direct

We nearly cut the button over it

Second bug on top of that one. Sharing from inside the itch or CrazyGames iframe handed the friend the portal's internal iframe URL, so they landed on some bare embed page.

Now the real address goes to analytics before the cleanup runs, and shares always use the public URL. Game is One Life: Reborn Simulator, browser, your birth country gets rolled from UN 2024 birth tables and you live that one life out. I made it

 

https://playgama.ai/play/7hersnnnxaqs5l

your birth country is rolled from the UN 2024 birth tables over 124 countries, so where you land is weighted by how many babies are actually born there. then you live that one life out. no restarting the same character. no account.

i built it. last week someone told me nothing in it was proportional and they were right. every prop had its height typed in by hand on its own scale, so the radio on the back wall was 56cm, the bicycle 73cm, and the cat was as big as the dog. the main character card got measured separately and came out 9% bigger than everyone else. now it all reads off one real-cm ruler and the build fails if a size drifts.

it has ads. two are optional reward ads and one full-screen ad plays when you die. nothing to buy.

Chichi Brawl (dumbgamelab.com)
 

Not sure if a prototype is ok here, it's pretty rough

I made a 3v3 gem-grab shooter that runs in the browser, Chichi Brawl. The other team is an AI that trained on about 180,000 matches against itself, with reaction time capped at human speed (0.2s or slower). Only 3 characters and one mode so far. I'm trying to get 30 people through 10 matches each to see how often humans actually beat it, results are anonymous and there's no account. Mostly want to know if it felt cheap and what confused you in the first match

 

This is a 3v3 gem grab shooter that runs in the browser, no install and no sign up.

The bot learned by playing about 180,000 matches against itself. Its reaction time is capped at 0.2 seconds or slower, so it can't win on twitch reflexes alone. This link always puts you against the strongest generation it has

https://dumbgamelab.com/play/chichibrawl/?ht=1&lang=en

It's a prototype with only 3 characters and one mode, so expect it to be rough. I'm trying to get about 30 people to play 10 matches each and see how often humans actually win. Results are counted anonymously, no account and no personal data.

Mostly I want to know if it felt fair or cheap, and where the first match lost you.

Good luck

[–] 4 points 3 weeks ago (1 child)

For the AI profiles, a small set of numbers per driver goes a long way: reaction delay, following distance, how often they change lanes, and how late they brake. Mixing 3 or 4 profiles in the same traffic already reads as "people" rather than "cars on rails".

The thing to watch is fair vs unfair unpredictability. If a car swerves into you with no warning it feels like the game cheated. If it signals or drifts toward the line half a second first, the same move feels like a near miss you dodged. Telegraphing is what makes weaving through traffic a skill instead of luck.

  • source
  • view more: ‹ prev next ›