<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Another dev blog: mistakes and growth in indie games</title>
<link>https://uyllii.com/blog/</link>
<atom:link href="https://uyllii.com/blog/feed.xml" rel="self" type="application/rss+xml"/>
<description>Making and publishing free Android games as a one-person studio.</description>
<language>en</language>
<item><title>Six months of making Android games: 17 games, the real numbers, and what&apos;s next</title><link>https://uyllii.com/blog/six-months-of-indie-android-games-numbers/</link><guid>https://uyllii.com/blog/six-months-of-indie-android-games-numbers/</guid><pubDate>Mon, 12 Oct 2026 23:00:00 GMT</pubDate><category>Indie business</category><description>An honest six-month retrospective on 17 Android games: daily players, revenue, what earns, real search rankings, and the lessons I&apos;d give myself.</description></item>
<item><title>Cross-promotion between my own games: building a &apos;More games&apos; sheet</title><link>https://uyllii.com/blog/cross-promotion-more-games-sheet/</link><guid>https://uyllii.com/blog/cross-promotion-more-games-sheet/</guid><pubDate>Sun, 11 Oct 2026 23:00:00 GMT</pubDate><category>Indie business</category><description>How a shared More games sheet links each Android game to its siblings, grouped by audience, with a live list from uyllii.com, referrer tags, and the bugs.</description></item>
<item><title>My first in-app purchases: what two Remove Ads sales taught me</title><link>https://uyllii.com/blog/first-in-app-purchases-remove-ads/</link><guid>https://uyllii.com/blog/first-in-app-purchases-remove-ads/</guid><pubDate>Fri, 09 Oct 2026 23:00:00 GMT</pubDate><category>Ads and monetization</category><description>The first two in-app purchases across my Android games: a Genesis Remove Ads in Denmark and a Word Slide sale in Italy within a day of translation. What they changed.</description></item>
<item><title>Idle Fishing Empire: a generational fishing tycoon with a moral fork and no time gates</title><link>https://uyllii.com/blog/idle-fishing-empire-generational-tycoon/</link><guid>https://uyllii.com/blog/idle-fishing-empire-generational-tycoon/</guid><pubDate>Wed, 07 Oct 2026 23:00:00 GMT</pubDate><category>Game design</category><description>Designing Idle Fishing Empire: heirs across generations, sustainable vs destructive fishing, logistic fish stocks, five endings, human-cadence sims, and no time gates.</description></item>
<item><title>Idle game players are all-or-nothing: why average playtime lies</title><link>https://uyllii.com/blog/idle-game-players-hooked-or-bounced/</link><guid>https://uyllii.com/blog/idle-game-players-hooked-or-bounced/</guid><pubDate>Mon, 05 Oct 2026 23:00:00 GMT</pubDate><category>Indie business</category><description>Analysing real Genesis players by hooked vs bounced instead of averages. What the first sessions show, where hooked players stop, and the signpost that fixed it.</description></item>
<item><title>Stop the Google Play Games sign-in popup at launch: remove PlayGamesInitProvider</title><link>https://uyllii.com/blog/google-play-games-sign-in-popup-at-launch/</link><guid>https://uyllii.com/blog/google-play-games-sign-in-popup-at-launch/</guid><pubDate>Sat, 03 Oct 2026 23:00:00 GMT</pubDate><category>Engineering</category><description>Why the Play Games sheet still appears when your game opens even if your code waits, and the AndroidManifest fix that removes PlayGamesInitProvider (with a check).</description></item>
<item><title>Rewarded ads in an idle game: why my first boost paid nothing, and where interstitials belong</title><link>https://uyllii.com/blog/rewarded-ads-idle-game-design/</link><guid>https://uyllii.com/blog/rewarded-ads-idle-game-design/</guid><pubDate>Thu, 01 Oct 2026 23:00:00 GMT</pubDate><category>Ads and monetization</category><description>Designing ads for an idle game: a rewarded boost that actually rewards, interstitials that respect the prestige loop, and a Remove Ads offer that sells speed.</description></item>
<item><title>Revisiting Genesis: giving an idle game an ending and finally shipping it</title><link>https://uyllii.com/blog/revisiting-genesis-shipping-an-idle-game/</link><guid>https://uyllii.com/blog/revisiting-genesis-shipping-an-idle-game/</guid><pubDate>Tue, 29 Sep 2026 23:00:00 GMT</pubDate><category>Game design</category><description>How I un-parked my idle game: fixed scope with an ending, a simulator that plays like a human, value pricing, and a privacy-policy rejection on release day.</description></item>
<item><title>My puzzle game used more battery than YouTube: an idle screen should draw zero frames</title><link>https://uyllii.com/blog/battery-drain-idle-screen-zero-frames/</link><guid>https://uyllii.com/blog/battery-drain-idle-screen-zero-frames/</guid><pubDate>Sat, 26 Sep 2026 23:00:00 GMT</pubDate><category>Engineering</category><description>Moonlit Garden drained 7% battery in 38 minutes. Endless CSS animations on blurred layers and an AudioContext that never slept. How I measured and fixed every game.</description></item>
<item><title>Wordhoard: designing a word roguelike that isn&apos;t &apos;Balatro with letters&apos;</title><link>https://uyllii.com/blog/wordhoard-word-roguelike-design/</link><guid>https://uyllii.com/blog/wordhoard-word-roguelike-design/</guid><pubDate>Wed, 23 Sep 2026 23:00:00 GMT</pubDate><category>Game design</category><description>Wordhoard, a word roguelike in an illuminated manuscript: rarity from word frequency, a broken charm combo the sim missed, and sounds that weren&apos;t gunshots.</description></item>
<item><title>Minesweeper Rogue: a no-guess minesweeper roguelike where the rules change what numbers mean</title><link>https://uyllii.com/blog/minesweeper-roguelike-rules-solver/</link><guid>https://uyllii.com/blog/minesweeper-roguelike-rules-solver/</guid><pubDate>Sun, 20 Sep 2026 23:00:00 GMT</pubDate><category>Game design</category><description>Designing Minesweeper Rogue: tunnels, stacking rules like liar and knight numbers, a solver that keeps every level no-guess, fuses that count digs, and phone-only bugs.</description></item>
<item><title>Closing an ad tapped the game underneath: a tap guard for AdMob in Capacitor games</title><link>https://uyllii.com/blog/closing-an-ad-tapped-the-game/</link><guid>https://uyllii.com/blog/closing-an-ad-tapped-the-game/</guid><pubDate>Fri, 18 Sep 2026 23:00:00 GMT</pubDate><category>Engineering</category><description>When the touch that closes a rewarded or interstitial ad lands on your game&apos;s buttons. How a capture-phase tap guard fixed it in every game the same day.</description></item>
<item><title>Rogue Video Poker: a roguelite video poker game, and how it got rated PEGI 3 by mistake</title><link>https://uyllii.com/blog/rogue-video-poker-content-rating-simulated-gambling/</link><guid>https://uyllii.com/blog/rogue-video-poker-content-rating-simulated-gambling/</guid><pubDate>Wed, 16 Sep 2026 23:00:00 GMT</pubDate><category>Publishing on Google Play</category><description>Designing a video poker roguelite with machine chips and bosses, then fixing a wrong IARC content rating, simulated gambling rules, and seven countries that ban it.</description></item>
<item><title>Postmortem: Eldritch Survivors, the 3D survivors-like that crashed older phones</title><link>https://uyllii.com/blog/eldritch-survivors-postmortem-webgl-crash/</link><guid>https://uyllii.com/blog/eldritch-survivors-postmortem-webgl-crash/</guid><pubDate>Mon, 14 Sep 2026 23:00:00 GMT</pubDate><category>Postmortems</category><description>Why my cosmic-horror Vampire Survivors-like is shelved: the design, a 3D asset pipeline, a WebGL context loss on an older phone, and what I&apos;d change.</description></item>
<item><title>Fully animated 3D battles in a mobile web game with three.js and CC0 KayKit models</title><link>https://uyllii.com/blog/3d-battles-threejs-kaykit-mobile/</link><guid>https://uyllii.com/blog/3d-battles-threejs-kaykit-mobile/</guid><pubDate>Sat, 12 Sep 2026 23:00:00 GMT</pubDate><category>Engineering</category><description>Animated 3D fights with three.js in a Capacitor game: CC0 KayKit characters on a shared skeleton, meshopt from 23 MB to 2.4 MB, and the bugs on the way.</description></item>
<item><title>Backpack Battle: balancing an autobattler so no class beats every other class</title><link>https://uyllii.com/blog/backpack-battle-balance-is-a-web/</link><guid>https://uyllii.com/blog/backpack-battle-balance-is-a-web/</guid><pubDate>Thu, 10 Sep 2026 23:00:00 GMT</pubDate><category>Game design</category><description>Balancing Backpack Battle, an inventory autobattler: a class-vs-class sim matrix, survivorship bias in balance tests, a counter triangle, first-fight fairness.</description></item>
<item><title>Emberfall on real phones: fixing an 88 ms frame, pixel-art coastlines, and readable fonts</title><link>https://uyllii.com/blog/emberfall-mobile-performance-pixel-art/</link><guid>https://uyllii.com/blog/emberfall-mobile-performance-pixel-art/</guid><pubDate>Tue, 08 Sep 2026 23:00:00 GMT</pubDate><category>Engineering</category><description>Technical lessons from Emberfall: a canvas water layer that killed frame rate on phones, blending tile edges, readable pixel fonts, a battle sim, and Bluetooth audio.</description></item>
<item><title>Emberfall: making a retro offline JRPG with a story, five chapters and a 99-cent unlock</title><link>https://uyllii.com/blog/emberfall-retro-jrpg-offline-rpg/</link><guid>https://uyllii.com/blog/emberfall-retro-jrpg-offline-rpg/</guid><pubDate>Sun, 06 Sep 2026 23:00:00 GMT</pubDate><category>Game design</category><description>Emberfall is a retro turn-based JRPG with a real ending. Why a Kemco-style RPG, the story, Auto battle for older players, and pricing chapters at $0.99 or two videos.</description></item>
<item><title>Walk cycles that wouldn&apos;t walk: animating 2D heroes with a code rig</title><link>https://uyllii.com/blog/animating-2d-heroes-with-a-code-rig/</link><guid>https://uyllii.com/blog/animating-2d-heroes-with-a-code-rig/</guid><pubDate>Fri, 04 Sep 2026 23:00:00 GMT</pubDate><category>Engineering</category><description>Why generated sprite-sheet walk cycles failed for Tavern Heroes, and how a cut-out rig posed in code replaced them. Plus the clothing, joint and cache bugs on the way.</description></item>
<item><title>Tavern Heroes: building an offline idle RPG, and abandoning a painted town after three attempts</title><link>https://uyllii.com/blog/tavern-heroes-idle-rpg-menus-not-places/</link><guid>https://uyllii.com/blog/tavern-heroes-idle-rpg-menus-not-places/</guid><pubDate>Wed, 02 Sep 2026 23:00:00 GMT</pubDate><category>Game design</category><description>The design of Tavern Heroes, a Soda Dungeon-style idle RPG with no gacha: missions, retirement for Renown, a sim before art, and why the game became menu-only.</description></item>
<item><title>Sovereign postmortem: a paid ads test, a polished game, and 44 cents</title><link>https://uyllii.com/blog/sovereign-postmortem-polished-puzzle-game-earned-44-cents/</link><guid>https://uyllii.com/blog/sovereign-postmortem-polished-puzzle-game-earned-44-cents/</guid><pubDate>Mon, 31 Aug 2026 23:00:00 GMT</pubDate><category>Postmortems</category><description>I launched my most polished game with A$200 of Google Ads as a test. It earned A$0.44. The numbers, the four mistakes, and why I&apos;m done paying for installs.</description></item>
<item><title>Sovereign: building a polished no-guess Queens puzzle, and launching it with a paid ads test</title><link>https://uyllii.com/blog/sovereign-no-guess-queens-logic-puzzle-launch/</link><guid>https://uyllii.com/blog/sovereign-no-guess-queens-logic-puzzle-launch/</guid><pubDate>Mon, 17 Aug 2026 23:00:00 GMT</pubDate><category>Game design</category><description>How Sovereign generates Queens logic puzzles that never need a guess, its six modes and async replay races, and why its launch is a deliberate paid-ads experiment.</description></item>
<item><title>Parking my idle game: when the maths of idle growth beat me (for now)</title><link>https://uyllii.com/blog/parking-genesis-idle-game-maths/</link><guid>https://uyllii.com/blog/parking-genesis-idle-game-maths/</guid><pubDate>Mon, 27 Jul 2026 23:00:00 GMT</pubDate><category>Postmortems</category><description>Why I parked Genesis after weeks of tuning: a prestige loop that collapsed to 3-second resets, a tuner chasing moving targets, and no ending to aim for.</description></item>
<item><title>Balancing an idle game with a simulator (and the month my bot cheated)</title><link>https://uyllii.com/blog/balancing-an-idle-game-with-a-simulator/</link><guid>https://uyllii.com/blog/balancing-an-idle-game-with-a-simulator/</guid><pubDate>Mon, 20 Jul 2026 23:00:00 GMT</pubDate><category>Game design</category><description>How Genesis is balanced by a headless simulator and an auto-tuner, the bugs that made the bot a player who couldn&apos;t exist, and why the sim must play like a human.</description></item>
<item><title>Exact offline progress in an idle game: a closed-form solution instead of a replay loop</title><link>https://uyllii.com/blog/offline-progress-idle-game-closed-form/</link><guid>https://uyllii.com/blog/offline-progress-idle-game-closed-form/</guid><pubDate>Mon, 13 Jul 2026 23:00:00 GMT</pubDate><category>Engineering</category><description>How Genesis computes offline earnings exactly with a closed-form solution to its producer chain, the soft cap that keeps it fair, and Android WebView canvas traps.</description></item>
<item><title>Genesis: designing an idle game about the evolution of life</title><link>https://uyllii.com/blog/genesis-idle-evolution-game-design/</link><guid>https://uyllii.com/blog/genesis-idle-evolution-game-design/</guid><pubDate>Mon, 06 Jul 2026 23:00:00 GMT</pubDate><category>Game design</category><description>The design of Genesis, an incremental idle game: an 8-tier producer cascade, a DNA strand prestige layer, crucibles built to be failed first, and three chapters.</description></item>
<item><title>Localizing a mobile game into 12 languages (and why translated screenshots matter)</title><link>https://uyllii.com/blog/localizing-mobile-game-12-languages/</link><guid>https://uyllii.com/blog/localizing-mobile-game-12-languages/</guid><pubDate>Mon, 29 Jun 2026 23:00:00 GMT</pubDate><category>Publishing on Google Play</category><description>How every game here ships in 12 languages, with keyword titles per locale, translated screenshots and feature graphics, and the translation mistakes that slipped through.</description></item>
<item><title>No-guess Minesweeper: generating boards you can always solve by logic</title><link>https://uyllii.com/blog/no-guess-minesweeper-generator/</link><guid>https://uyllii.com/blog/no-guess-minesweeper-generator/</guid><pubDate>Mon, 22 Jun 2026 23:00:00 GMT</pubDate><category>Engineering</category><description>How the Minesweeper app builds no-guess boards with a logic solver, why the first dig is always safe, and why a second-chance rewarded ad suits the genre.</description></item>
<item><title>Word Slide and Word Push: inventing a word puzzle, and the playtest that said it was far too hard</title><link>https://uyllii.com/blog/word-slide-word-push-new-word-puzzle-mechanics/</link><guid>https://uyllii.com/blog/word-slide-word-push-new-word-puzzle-mechanics/</guid><pubDate>Mon, 15 Jun 2026 23:00:00 GMT</pubDate><category>Game design</category><description>Two word puzzles built on the Loopover row-and-column slide. Generating 2,000 levels with exact par, why a solver&apos;s par says nothing about humans, and naming.</description></item>
<item><title>Automating a Google Play launch: from a 60-minute checklist to zero manual steps</title><link>https://uyllii.com/blog/automating-google-play-launch/</link><guid>https://uyllii.com/blog/automating-google-play-launch/</guid><pubDate>Mon, 08 Jun 2026 23:00:00 GMT</pubDate><category>Publishing on Google Play</category><description>How I turned publishing an Android game into a resumable pipeline of checked steps across Play Console, AdMob, RevenueCat and Firebase, including browser automation.</description></item>
<item><title>Bible Word Search: a themed fork in two hours, Bible translation licensing, and curating 30,000 verses</title><link>https://uyllii.com/blog/bible-word-search-verse-levels-licensing/</link><guid>https://uyllii.com/blog/bible-word-search-verse-levels-licensing/</guid><pubDate>Mon, 01 Jun 2026 23:00:00 GMT</pubDate><category>Game design</category><description>Building Bible Word Search from the Word Search engine. Why not the NIV, verse-based levels, a Whole Bible mode, content ratings, and which ad categories to block.</description></item>
<item><title>The AdMob consent bug that meant no ad ever loaded</title><link>https://uyllii.com/blog/admob-consent-bug-ads-never-loaded/</link><guid>https://uyllii.com/blog/admob-consent-bug-ads-never-loaded/</guid><pubDate>Mon, 25 May 2026 23:00:00 GMT</pubDate><category>Ads and monetization</category><description>My first word games shipped with a UMP consent setup error that stopped every ad loading worldwide. How I found it, fixed it, and the check that stops it now.</description></item>
<item><title>Your first Google Play submission: every App content declaration, explained</title><link>https://uyllii.com/blog/first-google-play-submission-app-content-declarations/</link><guid>https://uyllii.com/blog/first-google-play-submission-app-content-declarations/</guid><pubDate>Mon, 18 May 2026 23:00:00 GMT</pubDate><category>Publishing on Google Play</category><description>What Google Play asks before your first game goes live: data safety, ads, IARC rating, target audience and advertising ID, and the answers I gave.</description></item>
<item><title>FreeCell: recreating Microsoft&apos;s deal numbers, a hint solver, and a store rejection for writing #1</title><link>https://uyllii.com/blog/freecell-deal-numbers-solver-store-rejection/</link><guid>https://uyllii.com/blog/freecell-deal-numbers-solver-store-rejection/</guid><pubDate>Mon, 11 May 2026 23:00:00 GMT</pubDate><category>Engineering</category><description>How FreeCell deals are numbered (the LCG behind game #617 and #11982), a best-first hint solver, saving undo with the game, and a Google Play metadata rejection.</description></item>
<item><title>Spider Solitaire for Android: free undo, a bot that plays 800 games, and why landscape didn&apos;t help</title><link>https://uyllii.com/blog/spider-solitaire-android-card-game-design/</link><guid>https://uyllii.com/blog/spider-solitaire-android-card-game-design/</guid><pubDate>Mon, 04 May 2026 23:00:00 GMT</pubDate><category>Game design</category><description>Designing a Spider Solitaire app on a shared engine. Why undo is free, how 800 bot games test the rules, and what landscape mode really changes on phones.</description></item>
<item><title>Building a word search generator in TypeScript (where every word appears exactly once)</title><link>https://uyllii.com/blog/word-search-generator-typescript-capacitor/</link><guid>https://uyllii.com/blog/word-search-generator-typescript-capacitor/</guid><pubDate>Mon, 27 Apr 2026 23:00:00 GMT</pubDate><category>Engineering</category><description>How the Word Search grid generator works: seeded puzzles, overlap scoring, frequency-weighted filler letters, and repairing accidental duplicate words.</description></item>
<item><title>Choosing a mobile game people actually search for: why I started with Word Search</title><link>https://uyllii.com/blog/choosing-a-mobile-game-people-search-for/</link><guid>https://uyllii.com/blog/choosing-a-mobile-game-people-search-for/</guid><pubDate>Mon, 20 Apr 2026 23:00:00 GMT</pubDate><category>Indie business</category><description>How I pick Android game genres by search demand, why Word Search came first, and how one app becomes 15 store listings with local keywords like Sopa de letras.</description></item>
<item><title>Learning to make Android games by starting with the easy ones</title><link>https://uyllii.com/blog/learning-to-make-android-games-easy-first/</link><guid>https://uyllii.com/blog/learning-to-make-android-games-easy-first/</guid><pubDate>Mon, 13 Apr 2026 23:00:00 GMT</pubDate><category>Indie business</category><description>Why my first games are word search, solitaire and minesweeper: learning the whole pipeline from code to Google Play, ads and players on games with known rules.</description></item>
</channel>
</rss>
