A devlog by Neeraj Kotwani, who builds every game on Elipar.
Flag Dash is a timed "name the flag" quiz, built because the Education category had exactly one game in it and that one was arithmetic. Thirty-four flags, four answers, three lives, and the timer gets shorter as your streak climbs.
Somebody sent me a photo of it on their phone with the bottom row of answer buttons cut off the screen. Not awkwardly placed — unreachable. A quiz where one of the four answers cannot be tapped.
I tested it in a viewport that does not exist
I had tested this game at launch in a 480 by 850 browser viewport. It looked fine, because at 850 pixels tall it is fine.
Games on this site do not run in a browser viewport. They run in an iframe inside the page, and a portrait game's frame is capped so it does not become a strip on a wide screen. Measured on a real 390-pixel-wide phone, that frame is 348 by 465 pixels.
So I had been developing against roughly double the vertical space the game actually gets. Everything in the stack — the top bar, the timer track, the flag card's padding, the prompt spacing, the answer button padding — added up to more than the real budget allows, especially once a longer country name wrapped a button onto two lines.
What makes this worth writing down is that a screenshot in a tall viewport is not a weaker version of the real check. It is a different check that happens to pass. The two can diverge by more than a hundred pixels, and the difference is exactly content that is clipped rather than content that merely looks cramped.
Measuring against the thing that actually constrains it
The method that found it, and the one every game built here since has been held to: get the real iframe's box from the page, then — inside the iframe's own document — take each interactive element's bounding rectangle and compare it against that document's own window height.
Measuring from the outer page is the mistake that hides this, because from out there the iframe is one element and everything in it is at coordinates the outer page does not share. You have to ask the frame.
The fix itself was unglamorous: tighten every margin and padding in the vertical stack, roughly 85 pixels of cumulative savings, plus overflow-y: auto on the game screen as a safety net for anything even shorter. Re-measured at the viewport from the bug report and at the smallest common phone size, and all four buttons now sit fully inside the frame with margin at both.
The safety net is explicitly the second line of defence, not the fix. A quiz you have to scroll to answer under time pressure is still a bad quiz.
That measurement is now run before a new game is considered finished rather than after a report. The Lightbot-style puzzle I built next came out with zero clipped controls at both phone sizes on the first try, because its CSS was written tight from the start instead of needing this pass.
Thirty-four flags, none of them images
The flags are inline SVG, generated by a handful of reusable functions — horizontal stripes, vertical stripes, a cross, a double cross, a disc, a canton with stars — which between them cover most real flag designs by colour and geometry alone. The ones that do not fit get bespoke renderers: Brazil, Canada, the UK, China, Turkey's crescent, Greece, Argentina, and India's 24-spoke wheel, drawn with a loop emitting a spoke every fifteen degrees rather than twenty-four hand-placed lines.
No image files and, deliberately, no flag emoji. Emoji flag rendering is notoriously inconsistent across operating systems and browsers — historically absent entirely on some common combinations — and a quiz where the question renders as a blank box or a two-letter code is not a hard quiz, it is a broken one.
Because the flags are generated, a malformed template string would render a blank card rather than throwing an error. So there is a test that parses all thirty-four into real DOM nodes and asserts each one has child elements. It caught nothing. It is still the right test, because the failure it guards against is silent.
The count in the copy was wrong
The design target was 32 flags. The array has 34.
I only noticed because the test printed the array length. Nobody recounted the list by eye and nobody would have. The shipped text said 32.
Fixed the copy rather than trimming two flags to match it — more flags is strictly better for this game. And it needed a rebuild to take effect, which is its own small lesson: the catalogue description is compiled into the page at build time, unlike a game's own files which serve live, so the site kept showing the old number until a fresh build ran.
One later change: Pakistan was swapped for India on request. A straight swap, count unchanged, and no copy edits needed because nothing in the shipped text names individual countries.
Flag Dash is free in a browser, no account, no download. All four answers are on the screen.