

I’d have to go look. What I know for sure is that input the engine throws away no longer counts as an error. Whether the collector filters that string out completely or keeps it as a breadcrumb, I honestly don’t remember


I’d have to go look. What I know for sure is that input the engine throws away no longer counts as an error. Whether the collector filters that string out completely or keeps it as a breadcrumb, I honestly don’t remember


The logo was sitting right on top of the globe canvas in normal flow. Pulled it out with position: absolute and the next analyzer run just didn’t show the memory warning anymore


Sort of both. Sound sleeps on a set of reasons: ‘ad’ goes on at ad start and comes off in the SDK’s ad-end callback, and ‘app’ goes on when the page lifecycle says the tab is hidden. While either one is set, the <audio> element and the Web Audio context both stay asleep, so a tab switch mid-ad just adds a second reason and music waits for both to clear On the icon, we resubmitted with only that and GamePix hasn’t answered yet, so I don’t know if they’ll also want “Watch ad” text


Funders wanting a polished vertical slice, or a year of full-time work from the whole team, while Young Suns was still in production is the brutal bit. A 30 person studio can’t build two games at once, and Dabbous says they’ve never had a hit to pay for it


Option 1 behaves closer to Python’s setdefault, since it only writes when the key is actually missing. Option 2 calls set_value on every read, which is harmless, but anyone reading a call site later will assume something changed


A denied click, the dull little thud for pressing a greyed-out button or trying to buy something you can’t afford. Packs nearly always have confirm and cancel, but players hit the denied case constantly and cancel doesn’t sound right there


For the item farming problem you could seed the item roll by section index instead of by generation count. Falling would still reroll the terrain, but section 12 always hands out the same thing, so dropping down ten times just gets you the same pickup ten times and the first one is the only one that counts


Set of reason keys, and the fight only ticks when the set is empty. Each panel adds its own name on open and deletes it in every close path, so if something slips through you end up with one named leftover like “bank” in your error report instead of a bare true
Counters went bad for me in the mental model the moment open could fire twice and close once


Does the in-car view share the same steering sensitivity as the chase cam? Inside the car the pillars and dash swing across the screen, so the same input tends to feel twitchier, and a lot of driving prototypes end up with a slightly softer steering curve for the cockpit camera only. Might be worth swapping views mid-corner in a playtest to see if it feels like the same car.


Linking the patch notes in the first post back is a good way to restart. Question on the rebuild loop: when a mech comes over at the enemy’s level, does it keep the loadout it had in that fight, or does it arrive stripped so you still have to spend items on it? The stripped version gives each capture a cost, which might matter more once enemies start getting upgrades on higher difficulties.


On the logger: one thing that paid off for us is keeping the last ~200 lines in a ring buffer in memory and attaching them automatically to any bug report or crash, along with a small dump of game state. Most player bug reports are one sentence, and those 200 lines are usually where the actual answer is.
On the license: AGPL is a fair choice for your own game, but for a template it’ll scare off a lot of people, since anything built from it inherits AGPL. If you want others to start projects from it, MIT/Apache for the template (or dual licensing) is more common in the Godot world.
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.
Transfer, by a lot. We have one monorepo for about 20 small mobile and web games plus tools and no LFS at all. dist folders, web bundles and APKs never go in and just get rebuilt, and marketing videos sit in a folder outside the repo with only links committed What actually hurts is CI pulling the repo onto 3 self-hosted runners on our own Macs, and when the Mac is off the queue just sits there