<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rahim Khan</title>
    <description>The latest articles on DEV Community by Rahim Khan (@rahim_khan_3301).</description>
    <link>https://dev.to/rahim_khan_3301</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4199067%2F95301fcf-3bcf-4d5f-90c2-e4ef0d1efd73.png</url>
      <title>DEV Community: Rahim Khan</title>
      <link>https://dev.to/rahim_khan_3301</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rahim_khan_3301"/>
    <language>en</language>
    <item>
      <title>I remade my mobile game's trailer. Gameplay in a frame, text outside it.</title>
      <dc:creator>Rahim Khan</dc:creator>
      <pubDate>Fri, 30 Oct 2026 17:07:17 +0000</pubDate>
      <link>https://dev.to/rahim_khan_3301/i-remade-my-mobile-games-trailer-gameplay-in-a-frame-text-outside-it-4k0p</link>
      <guid>https://dev.to/rahim_khan_3301/i-remade-my-mobile-games-trailer-gameplay-in-a-frame-text-outside-it-4k0p</guid>
      <description>&lt;p&gt;This week I took every promo clip for my games off YouTube. They weren't broken. They were just too much: gameplay stretched edge to edge, big captions sitting on top of it, cuts so fast you couldn't follow the shot. My game is a puzzle game about one careful shot, and the clips felt like the opposite of that.&lt;/p&gt;

&lt;p&gt;So I rebuilt the trailer for Bloop: One Bullet Ricochet, one game at a time, with a few rules I'm keeping from now on.&lt;/p&gt;


&lt;div&gt;
    &lt;iframe src="https://www.youtube.com/embed/o8CB5OC4KlM" width="315" height="560"&gt;
    &lt;/iframe&gt;
  &lt;/div&gt;


&lt;h2&gt;
  
  
  Rule 1: the gameplay gets a frame, the text stays out of it
&lt;/h2&gt;

&lt;p&gt;The real game capture sits in the centre in a rounded card with a glowing border. Every headline lives in a band above the card, never on top of the gameplay. The card never moves out of place, only what's inside it changes, so the eye always knows where to look.&lt;/p&gt;

&lt;p&gt;The band isn't random. On a 1080x1920 video, TikTok, Reels and Shorts cover the bottom and the right edge with buttons and captions. Combining their published safe zones leaves roughly y 288 to 1248 and x 120 to 888 for anything you want people to read. All my text sits inside that box. The bottom of the gameplay card can go under the buttons; the words can't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 2: gameplay in the first second
&lt;/h2&gt;

&lt;p&gt;The video opens mid-ricochet, on a shot that says TRICK SHOT and DOUBLE in the first second. No logo first. Google Play's own guidance for preview videos points the same way: show the core of the game within the first 10 seconds, and keep at least 80% of the video as real gameplay.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 3: one line of voice per shot
&lt;/h2&gt;

&lt;p&gt;I wrote the voice-over before picking shots: 38 words, about 2.2 words per second over 18 seconds. Each line lands on the shot it describes: "Bounce it off the walls" on a bank shot, "Climb the global leaderboard" on the leaderboard.&lt;/p&gt;

&lt;p&gt;I made 8 AI voice samples with ElevenLabs and picked one. The first three sounded too flat for a game ad, so the next five used ElevenLabs' newer, more expressive model, and that's where the winner came from. I can't judge audio by eye, so every take went through speech-to-text before I listened: all words present, no stage directions read out loud, no clipping. The final mix got the same check.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 4: no slow motion on gameplay
&lt;/h2&gt;

&lt;p&gt;My first cut slowed down the 3-star ending to make it dramatic. It looked laggy, like the game was dropping frames, which is the worst thing a trailer can suggest about a game. Every clip now plays at real speed. The one exception is the level map scroll, which runs faster than real time; speeding up keeps it smooth, slowing down doesn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 5: cut on the beat, decorate the outside
&lt;/h2&gt;

&lt;p&gt;The music runs at about 119 BPM, and every cut sits on a beat. The extra polish all happens outside the card: a small glow that ricochets around the border on each cut, a shockwave behind the card when something pops, the border colour changing per shot, and a few Bloops peeking out from behind the frame. The gameplay itself stays untouched.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 6: one edit, more than one cut
&lt;/h2&gt;

&lt;p&gt;Google Play's preview video rules ask you to avoid calls to action like "Download now" and words like "Best" or "New". So the Play version is a separate render: the same edit, with the App Store mention removed from the end card and the voice-over, and a shorter end card so more of it is gameplay. Apple has its own rules for App Store previews (screen captures of the app only), so that one gets its own cut later.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;4 recording takes, about 11 minutes of footage, 7 shots used&lt;/li&gt;
&lt;li&gt;18 seconds for social, 16.5 for Google Play&lt;/li&gt;
&lt;li&gt;38 words of voice-over, 8 voice samples, 1 pick&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The game itself is free on Google Play and the App Store. I used AI tools for some of the art; the design, code and levels are mine. The trailer was built in Remotion with help from AI tools, and the voice-over and music were made with ElevenLabs.&lt;/p&gt;

&lt;p&gt;If you've made a trailer for a mobile game: what's the one rule you'd never break again?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.offroadinteractives.bloopbounceshooter&amp;amp;referrer=utm_source%3Ddevto%26utm_campaign%3Dbloop_130" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.offroadinteractives.bloopbounceshooter&amp;amp;referrer=utm_source%3Ddevto%26utm_campaign%3Dbloop_130&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;App Store: &lt;a href="https://apps.apple.com/app/id6804321336" rel="noopener noreferrer"&gt;https://apps.apple.com/app/id6804321336&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>gamedev</category>
      <category>indiedev</category>
      <category>marketing</category>
      <category>mobile</category>
    </item>
    <item>
      <title>We let a random tapper decide how hard each level of our cat puzzle game is</title>
      <dc:creator>Rahim Khan</dc:creator>
      <pubDate>Sun, 25 Oct 2026 14:32:21 +0000</pubDate>
      <link>https://dev.to/rahim_khan_3301/we-let-a-random-tapper-decide-how-hard-each-level-of-our-cat-puzzle-game-is-2oop</link>
      <guid>https://dev.to/rahim_khan_3301/we-let-a-random-tapper-decide-how-hard-each-level-of-our-cat-puzzle-game-is-2oop</guid>
      <description>&lt;p&gt;Kitten Box Parade has 150 levels. We made the first 10 by hand. A program made the rest, and it judges how hard a level is with an odd yardstick: how often a player who taps completely at random would win.&lt;/p&gt;

&lt;h2&gt;
  
  
  The game in two sentences
&lt;/h2&gt;

&lt;p&gt;Kittens wait in mixed-color lines, and only the one at the front can move. Tap it and it walks to its box, or, if its box isn't open yet, it waits on a window seat with only a few pillows. Run out of pillows and the level is lost.&lt;/p&gt;

&lt;p&gt;The board is small: at most 4 boxes, 4 lines and 20 kittens. That turned out to matter a lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  A solver that sees everything
&lt;/h2&gt;

&lt;p&gt;Because the board is small, our level tool can solve a level exactly. It walks every state the board can reach, so for any layout it knows for sure whether the level can be won, whether it can be lost, and the fewest window-seat visits a perfect player needs. That last number becomes the 3-star target.&lt;/p&gt;

&lt;p&gt;The generator throws a layout away unless:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it can be won&lt;/li&gt;
&lt;li&gt;it can be lost&lt;/li&gt;
&lt;li&gt;it needs planning (you have to use the window seat on purpose)&lt;/li&gt;
&lt;li&gt;every rule in it matters. If Cocoa is in the level, her roll to the back of the line has to change the result. If Pebble is there, the fact that he takes two pillows has to matter. A tangled line has to change the 3-star target or the odds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last filter stops a "new" level from being an old level with a decoration on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Difficulty = the chance a random tapper wins
&lt;/h2&gt;

&lt;p&gt;For every level that survives, we also store one number: the chance that someone tapping random front kittens wins.&lt;/p&gt;

&lt;p&gt;The real numbers from the game:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Levels 1 and 2 (the tutorial): 1.0. You can't lose.&lt;/li&gt;
&lt;li&gt;A normal level after 100: about 0.015, so a random tapper wins roughly 1 time in 66.&lt;/li&gt;
&lt;li&gt;Level 10, Grand Finale: 0.002, about 1 in 500.&lt;/li&gt;
&lt;li&gt;The hardest boss levels, 120 Bubble Bath Bonanza and 140 The Starry Parade: also 0.002.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's a strange measure, because nobody plays at random. But it's exact, and it counts something real: how many ways there are to mess a level up. When random taps win a quarter of the time, there's room for mistakes. When they win once in 500, you need a plan before the first tap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shaping 150 levels
&lt;/h2&gt;

&lt;p&gt;With one number per level, we can shape the whole game instead of tuning levels one by one.&lt;/p&gt;

&lt;p&gt;The levels come in chapters of 20, and each chapter has its own difficulty sawtooth: it starts easy and climbs to a peak at the 19th level. So every new room in the cottage opens with a breath before it gets hard again.&lt;/p&gt;

&lt;p&gt;From level 101 there's a rhythm inside each chapter too:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;every 5th level is a &lt;strong&gt;breather&lt;/strong&gt;: 4 pillows, short lines, random-tapper win 0.10 to 0.26&lt;/li&gt;
&lt;li&gt;every 10th level is a &lt;strong&gt;boss&lt;/strong&gt;: 4 boxes, 4 lines, 18 to 20 kittens and a chain of locked boxes 3 deep&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;New rules get a soft start too. From level 101, a rule's first level is made about 3 times easier than the ramp, with only 3 boxes and 3 lines. Level 101, where tangled yarn first shows up, sits at 0.173, against about 0.015 for a normal level. Cocoa's first level, 61, sits at 0.271.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpg4leqqb1jczxv1uzycw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpg4leqqb1jczxv1uzycw.png" alt="Random-tapper win chance for all 150 levels of Kitten Box Parade on a log scale, with a sawtooth in every 20-level chapter" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The tool plays with the game's own code
&lt;/h2&gt;

&lt;p&gt;A generator is only useful if what it checks is what the player gets. So the verify step doesn't use its own copy of the rules. It compiles the game's own lane rules and hint solver into the tool, then replays every level: following the in-game hint from the start has to win with exactly the 3-star number of window-seat visits.&lt;/p&gt;

&lt;p&gt;When we added Cocoa's roll, we checked that the game and the solver agreed on every line in the game at the time, all 355 of them.&lt;/p&gt;

&lt;p&gt;Generating levels 101 to 150 takes about 3 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shipped levels are frozen
&lt;/h2&gt;

&lt;p&gt;Once levels ship, they're frozen. Levels 1 to 100 are marked as done, and the generator refuses to write over them. New rules and new tuning only go into new chapters, so a level that's already out never changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the number can't tell you
&lt;/h2&gt;

&lt;p&gt;Random-tapper odds are a proxy, not the truth. Two levels with the same number can feel completely different. So the rule is: play them, and reseed or hand-edit any level that feels wrong, whatever the number says. When we first played the generated levels, they held up.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you're making a puzzle game
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;If your board is small, solve it exactly. Knowing "this can always be won" is worth a lot.&lt;/li&gt;
&lt;li&gt;Pick one difficulty number you can compute for every level, then shape the curve with it. Ours is crude, but it let us shape 150 levels instead of tuning each one by feel.&lt;/li&gt;
&lt;li&gt;Make the checker run the game's real rules, not a copy.&lt;/li&gt;
&lt;li&gt;Freeze what you ship.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The art and music were made with AI tools (Gemini and ElevenLabs), then picked and placed by us. We built the level tools with help from AI coding tools.&lt;/p&gt;

&lt;p&gt;Kitten Box Parade is free on Google Play. If a level feels unfair, tell us its number. We'd like to know whether the random tapper agrees.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.offroadinteractive.kittenboxparade&amp;amp;referrer=utm_source%3Ddevto%26utm_campaign%3Dkbp_launch" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.offroadinteractive.kittenboxparade&amp;amp;referrer=utm_source%3Ddevto%26utm_campaign%3Dkbp_launch&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>gamedev</category>
      <category>gamedesign</category>
      <category>csharp</category>
      <category>indiedev</category>
    </item>
    <item>
      <title>Only 29% of our players ever found the mini games. So we moved them.</title>
      <dc:creator>Rahim Khan</dc:creator>
      <pubDate>Wed, 21 Oct 2026 20:39:01 +0000</pubDate>
      <link>https://dev.to/rahim_khan_3301/only-29-of-our-players-ever-found-the-mini-games-so-we-moved-them-6df</link>
      <guid>https://dev.to/rahim_khan_3301/only-29-of-our-players-ever-found-the-mini-games-so-we-moved-them-6df</guid>
      <description>&lt;p&gt;Super Hero Maker is a character creator. You design a hero, pick hair, masks, armor and boots, and save it. There are also three small arcade games inside: Flappy Hero, Swarm Smash and Chalk Hero.&lt;/p&gt;

&lt;p&gt;In October we went through the game's analytics, and one number stood out.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the data said
&lt;/h2&gt;

&lt;p&gt;Only 29% of players ever opened a mini game.&lt;/p&gt;

&lt;p&gt;The ones who did played about 10 rounds each. So the games weren't the problem. People who found them liked them. Most people just never found them, because they sat a couple of taps deep, behind a button most players never pressed.&lt;/p&gt;

&lt;p&gt;To be fair to the number: it was one week of data (October 5 to 11) and about 65 players, so it's a signal, not a law. But it lined up with the rest of the funnel. About 78% of players started making a hero, and about 52% saved one. A lot of people were building a hero and then had nothing to do with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we changed in 3.0.2
&lt;/h2&gt;

&lt;p&gt;The mini games are now the Hero Arcade, a big card right on the home screen instead of a small button.&lt;/p&gt;

&lt;p&gt;And the hero you made comes with you. In Flappy Hero you fly your own hero, and in Swarm Smash your hero stands on the rooftop defending the city. Making a hero and playing with it used to be two separate things. Now it's one loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bug we found on the way
&lt;/h2&gt;

&lt;p&gt;While going through the numbers, we noticed there were zero reminder notification opens. Not low. Zero.&lt;/p&gt;

&lt;p&gt;The reason: the notification system wasn't loaded at all in any 3.x build. Reminders had been missing for the whole 3.x line. Nothing crashed, so it was easy to miss.&lt;/p&gt;

&lt;p&gt;3.0.2 brings them back, and keeps them polite: at most 4 reminders over 7 days, never more than one a day, only in the early evening, and they're cancelled as soon as you come back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now we wait
&lt;/h2&gt;

&lt;p&gt;3.0.2 went out to everyone on Google Play on October 11. The plan is to change nothing in the game for about a month, so the numbers stay clean.&lt;/p&gt;

&lt;p&gt;The goal: if more than 45% of players reach the arcade, the card works. If it's under 35%, the card needs rethinking.&lt;/p&gt;

&lt;p&gt;I'll share what happened once the month is up.&lt;/p&gt;

&lt;p&gt;I used AI tools for some of the art and audio.&lt;/p&gt;

&lt;p&gt;If you build apps: what's the feature you were sure people used, until you looked at the data?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.offroadstudios.superheromaker&amp;amp;referrer=utm_source%3Ddevto%26utm_campaign%3Dshm_302" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.offroadstudios.superheromaker&amp;amp;referrer=utm_source%3Ddevto%26utm_campaign%3Dshm_302&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>gamedev</category>
      <category>analytics</category>
      <category>mobile</category>
      <category>unity3d</category>
    </item>
    <item>
      <title>Our cat puzzle game wasn't fun until we added one rule</title>
      <dc:creator>Rahim Khan</dc:creator>
      <pubDate>Wed, 21 Oct 2026 20:38:10 +0000</pubDate>
      <link>https://dev.to/rahim_khan_3301/our-cat-puzzle-game-wasnt-fun-until-we-added-one-rule-3kbd</link>
      <guid>https://dev.to/rahim_khan_3301/our-cat-puzzle-game-wasnt-fun-until-we-added-one-rule-3kbd</guid>
      <description>&lt;p&gt;An early build of what became Kitten Box Parade had a big problem. We played it and couldn't find the fun.&lt;/p&gt;

&lt;p&gt;It wasn't even kittens yet. The board had little critters, colored homes to send them to, and a three-seat bench where a critter waited if its home wasn't open. Everything worked. It just wasn't a game yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it wasn't fun
&lt;/h2&gt;

&lt;p&gt;Every critter on the board could be tapped at any time. So the best move was always the same: tap them in the order the homes open. There was nothing hidden, the bench was hardly ever needed, and there was never a real choice to make.&lt;/p&gt;

&lt;h2&gt;
  
  
  One rule
&lt;/h2&gt;

&lt;p&gt;Critters (later kittens) wait in mixed-color lines, and only the one at the front can go.&lt;/p&gt;

&lt;p&gt;In today's game: tap one and the line steps forward, so you see who's next. If that kitten's box isn't ready, it waits on the window seat, and there are only three pillows. Run out of pillows and it's "Out of seats!", with somebody giving you sad eyes.&lt;/p&gt;

&lt;p&gt;That changes how you play. Before every tap you're asking: if I send this one, who comes next, and do I have a pillow for them?&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing it on one level first
&lt;/h2&gt;

&lt;p&gt;We didn't rebuild the game around the idea straight away. We built one test level: nine critters in three lines, three homes, and each home locked until the one before it was full.&lt;/p&gt;

&lt;p&gt;On paper, careful play wins using two bench seats at most. Sloppy play still wins, but fills all three. Reckless play loses, and you can see exactly which tap lost it. The test was simple: does the player start thinking about who's next? If not, the idea goes.&lt;/p&gt;

&lt;p&gt;It passed. After playing it I could finally feel the flow of the game. Then I put a build on a phone and showed it to other people, and they liked it too. That's when it went from prototype to a real game.&lt;/p&gt;

&lt;p&gt;That one rule is still the core of Kitten Box Parade.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then it got repetitive
&lt;/h2&gt;

&lt;p&gt;The second problem came later. About 30 levels in, the game started to feel repetitive. The puzzles themselves were good. There just wasn't a reason to finish all 100.&lt;/p&gt;

&lt;p&gt;So the levels got a story. Six cats are settling into Whisker Cottage and getting ready for the first Kitten Box Parade. There's a keepsake for the scrapbook every 5 levels, and the parade comes after chapter 5.&lt;/p&gt;

&lt;p&gt;New rules arrive with the cats. Cocoa joins at level 61. Pebble joins at level 81, and Pebble is big: on the window seat he takes two pillows. Each new rule gets a guided first level.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it is now
&lt;/h2&gt;

&lt;p&gt;Kitten Box Parade 1.0 shipped on Google Play with 150 levels in 8 chapters. No timers and no lives.&lt;/p&gt;

&lt;p&gt;The art and music were made with AI tools (Gemini and ElevenLabs), then picked and placed by us.&lt;/p&gt;

&lt;p&gt;If you've made a puzzle game: what was the rule change that finally made it fun?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.offroadinteractive.kittenboxparade&amp;amp;referrer=utm_source%3Ddevto%26utm_campaign%3Dkbp_launch" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.offroadinteractive.kittenboxparade&amp;amp;referrer=utm_source%3Ddevto%26utm_campaign%3Dkbp_launch&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>gamedev</category>
      <category>gamedesign</category>
      <category>indiedev</category>
      <category>unity3d</category>
    </item>
    <item>
      <title>I'm making a one-bullet puzzle game on my own. Here's what changed after players got their hands on it.</title>
      <dc:creator>Rahim Khan</dc:creator>
      <pubDate>Wed, 21 Oct 2026 20:00:49 +0000</pubDate>
      <link>https://dev.to/rahim_khan_3301/im-making-a-one-bullet-puzzle-game-on-my-own-heres-what-changed-after-players-got-their-hands-on-457b</link>
      <guid>https://dev.to/rahim_khan_3301/im-making-a-one-bullet-puzzle-game-on-my-own-heres-what-changed-after-players-got-their-hands-on-457b</guid>
      <description>&lt;p&gt;I'm the only developer on Bloop. Design, code, UI, levels and the store pages are all me. It's a mobile puzzle game where you get one bullet per level: pull back, bank it off the walls, and pop every Bloop on the screen with that one shot.&lt;/p&gt;

&lt;p&gt;It's live on Google Play and the App Store now, with 300 levels. It's also still a work in progress. This is what changed since the early versions, and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first question
&lt;/h2&gt;

&lt;p&gt;Before menus, ads or a single extra level, the first build had one job: answer "is shooting one bullet satisfying?"&lt;/p&gt;

&lt;p&gt;The aim preview and the real bullet use the exact same path code, so if the preview says the bullet goes there, it goes there. In a one-shot game, a preview that lies even slightly feels like cheating.&lt;/p&gt;

&lt;h2&gt;
  
  
  My finger was in the way
&lt;/h2&gt;

&lt;p&gt;The first aiming worked, but you aimed by touching near where you wanted to shoot, and a lot of the time your own finger covered the exact part of the board you were trying to read.&lt;/p&gt;

&lt;p&gt;So I switched to pull-back aiming, like a slingshot. You drag back, away from the target, and the board stays visible the whole time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6595tbqgcfbov79uxl27.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6595tbqgcfbov79uxl27.gif" alt="Aiming a shot in Bloop with pull-back controls, level 51" width="400" height="889"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  It looked dead
&lt;/h2&gt;

&lt;p&gt;Bloop is set in space, but the early versions felt flat and dull. The background just sat there.&lt;/p&gt;

&lt;p&gt;First I added a layered parallax space background, then carried it into the gameplay screens too. That helped, but the levels still felt lifeless, so I animated the Bloops. They react when you aim at them, when you shoot, and when you miss.&lt;/p&gt;

&lt;p&gt;That was the change players reacted to most. I showed the new version to players who had tried the old one, and every one of them liked it more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Less dark
&lt;/h2&gt;

&lt;p&gt;The UI used to be very dark. I made it more colorful. I still think the main menu and the level select can be better, and that's where I'm waiting on more feedback before I change it again.&lt;/p&gt;

&lt;h2&gt;
  
  
  The levels nobody could beat
&lt;/h2&gt;

&lt;p&gt;At one point, level 76 and a bunch of levels after it couldn't be beaten. I found some by playing them myself, and players told me about others. In a one-shot game, that's the worst bug you can ship: the player doesn't think the level is broken, they think they're bad at it.&lt;/p&gt;

&lt;p&gt;Level 142, Blazing Crossing, shows how sneaky it gets. It has three Bloops that sit still and two that slide on a four-second loop. The route was fine. The timing wasn't: the moments that hit each mover never overlapped. I searched the full 360 degrees in 0.05-degree steps at 800 launch moments per loop. 135 angles hit the three standing Bloops. None also caught both movers.&lt;/p&gt;

&lt;p&gt;So I changed how I test. The checker now plays every level with the same physics code as the game, and a level only passes if the winning shot leaves room for a real thumb on a phone: at least 0.5 degrees of aim, or a 0.2-second window to fire for moving levels.&lt;/p&gt;

&lt;p&gt;On October 15 it ran on all 300 levels in 203 seconds. 300 passed, 0 failed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;More enemy types, including some that shoot back, so their bullets can get in your path. Maybe a new galaxy. More variations, so the later worlds don't start to feel the same.&lt;/p&gt;

&lt;p&gt;I used AI tools for some of the art; the design, code and levels are mine.&lt;/p&gt;

&lt;p&gt;If you try Bloop, I'd really like to hear which level got you stuck, and what you think of the menus. I read every message.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.offroadinteractives.bloopbounceshooter&amp;amp;referrer=utm_source%3Ddevto%26utm_campaign%3Dbloop_130" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.offroadinteractives.bloopbounceshooter&amp;amp;referrer=utm_source%3Ddevto%26utm_campaign%3Dbloop_130&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;App Store: &lt;a href="https://apps.apple.com/app/id6804321336" rel="noopener noreferrer"&gt;https://apps.apple.com/app/id6804321336&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>gamedev</category>
      <category>indiedev</category>
      <category>unity3d</category>
      <category>mobile</category>
    </item>
  </channel>
</rss>
