{"id":3727,"date":"2026-04-22T10:53:54","date_gmt":"2026-04-22T05:23:54","guid":{"rendered":"https:\/\/reliablesoftwares.com\/blog\/?p=3727"},"modified":"2026-04-11T13:01:02","modified_gmt":"2026-04-11T07:31:02","slug":"ascent-an-infinite-climb-where-falling-isnt-the-end","status":"publish","type":"post","link":"https:\/\/reliablesoftwares.com\/blog\/ascent-an-infinite-climb-where-falling-isnt-the-end\/","title":{"rendered":"Ascent: An Infinite Climb Where Falling Isn&#8217;t the End"},"content":{"rendered":"<p><strong>Tap left. Tap right. Climb forever. There is no top.<\/strong><\/p>\n<p><strong>Ascent is an infinite vertical platformer where your character auto-jumps the second their feet touch a platform \u2014 and the only thing that ends a run is forgetting how high you&#8217;ve climbed.<\/strong><\/p>\n<p>I wanted to make the kind of game I&#8217;d open at a bus stop and not put down for two stops too long. Something built around a single thumb, a single objective, and the kind of &#8220;one more run&#8221; loop that quietly eats half an hour. Ascent is the result.<\/p>\n<h2 id=\"the-concept\">The Concept<\/h2>\n<p>You play as a small character standing on a platform somewhere in the middle of the screen. The first tap launches you upward. From that moment on, the game has exactly one rule: <strong>don&#8217;t fall below the camera.<\/strong><\/p>\n<p>Your character can&#8217;t <em>not<\/em> jump. Every time they land on a platform, a 0.15-second timer starts, and then they auto-jump straight up. You don&#8217;t control when they jump. You only control where they jump <em>toward<\/em>.<\/p>\n<p>Tap the left half of the screen and your next jump arcs left. Tap the right and it arcs right. Don&#8217;t tap and the jump goes straight up. That&#8217;s the entire control scheme. Tap, tap, tap, climb, climb, climb. The character even wraps around screen edges \u2014 fall off the right side and you reappear on the left, like an old arcade game.<\/p>\n<p>Falling is allowed. Encouraged, even. If you mistime a jump and drop a hundred meters, you&#8217;ll probably catch yourself on a platform on the way down and bounce right back up. The camera only follows you upward \u2014 it never scrolls down \u2014 so as long as you can find ground before the bottom of the screen runs out, you&#8217;re still in the game.<\/p>\n<p>It&#8217;s only when you fall below the camera that it&#8217;s over.<\/p>\n<h2 id=\"the-five-platform-types\">The Five Platform Types<\/h2>\n<p>Every climb is randomly generated, and the variety comes from five distinct platform types. Each one introduces a new kind of decision.<\/p>\n<table>\n<thead>\n<tr>\n<th>Platform<\/th>\n<th>Color<\/th>\n<th>Behavior<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Static<\/strong><\/td>\n<td>Green<\/td>\n<td>The default. Land, auto-jump, move on.<\/td>\n<\/tr>\n<tr>\n<td><strong>Moving<\/strong><\/td>\n<td>Blue<\/td>\n<td>Slides side-to-side on a sine wave. Time your landing.<\/td>\n<\/tr>\n<tr>\n<td><strong>Crumbling<\/strong><\/td>\n<td>Orange<\/td>\n<td>Lasts half a second after you land. Then it&#8217;s gone.<\/td>\n<\/tr>\n<tr>\n<td><strong>Bouncy<\/strong><\/td>\n<td>Purple<\/td>\n<td>Launches you with extra force \u2014 almost twice the normal jump.<\/td>\n<\/tr>\n<tr>\n<td><strong>Tiny<\/strong><\/td>\n<td>White<\/td>\n<td>Static, but only ~30 pixels wide. Easy to miss.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Static platforms are the foundation. They don&#8217;t move, they don&#8217;t break, they just exist for you to bounce off. Moving platforms force you to read their oscillation and predict where they&#8217;ll be a second from now. Crumbling platforms add urgency \u2014 if you land on one and don&#8217;t immediately tap a direction to launch off the next platform, you&#8217;ll find the ground gone underneath you. Bouncy platforms are the joy. Land on one and you get <em>catapulted<\/em> upward, sailing past dozens of other platforms in a single jump and gaining hundreds of meters of altitude. Tiny platforms are the cruel ones \u2014 they look like they shouldn&#8217;t even count as platforms, and at high altitudes they make up an increasingly large share of your options.<\/p>\n<h2 id=\"difficulty-that-climbs-with-you\">Difficulty That Climbs With You<\/h2>\n<p>Ascent&#8217;s difficulty isn&#8217;t a setting. It&#8217;s <em>altitude<\/em>. The world generator looks at your current height in meters and changes the rules.<\/p>\n<table>\n<thead>\n<tr>\n<th>Height<\/th>\n<th>What changes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>0\u2013500m<\/strong><\/td>\n<td>All static platforms. Wide and forgiving (90\u2013140px). Spacing 80\u2013110px. The on-ramp.<\/td>\n<\/tr>\n<tr>\n<td><strong>500\u20131000m<\/strong><\/td>\n<td>20% chance of moving platforms. Widths shrink to 75\u2013120px.<\/td>\n<\/tr>\n<tr>\n<td><strong>1000\u20132000m<\/strong><\/td>\n<td>Crumbling platforms appear (15% chance). Spacing widens. Widths 60\u2013100px.<\/td>\n<\/tr>\n<tr>\n<td><strong>2000\u20133000m<\/strong><\/td>\n<td>Bouncy platforms enter the rotation. Widths 50\u201385px. Real risk, real reward.<\/td>\n<\/tr>\n<tr>\n<td><strong>3000m+<\/strong><\/td>\n<td>Tiny platforms appear. Moving platforms speed up. Widths drop to 40\u201370px. Welcome to the meatgrinder.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>This progression is what makes Ascent feel less like a game with levels and more like a game with <em>terrain<\/em>. The first thousand meters are a warm-up. The second thousand starts demanding real attention. By 3000m you&#8217;re scanning the screen frantically, processing five different platform types in real time, and praying the next bouncy is in jumping range.<\/p>\n<p>The game also pings you with a &#8220;level up&#8221; sound every 1000m \u2014 a small dopamine reward for hitting a new milestone. It&#8217;s the only sound you&#8217;ll genuinely look forward to in a tense run.<\/p>\n<h2 id=\"why-falling-is-the-best-mechanic\">Why Falling Is the Best Mechanic<\/h2>\n<p>Most infinite climbers punish you the moment you miss a platform. One slip and the run ends. Ascent doesn&#8217;t do this, and the entire feel of the game pivots on that decision.<\/p>\n<p>When you miss a jump in Ascent, you fall. But your camera doesn&#8217;t move with you \u2014 it&#8217;s locked at your highest point. So you can see the entire screen of platforms below you, and your job becomes a real-time triage: <em>which of these platforms can I steer toward?<\/em> You tap left, tap right, try to angle yourself onto something solid. Sometimes you catch a bouncy platform on the way down and immediately rocket back to your previous altitude. Sometimes you catch a crumbling one and have to sprint off it before it gives way. Sometimes you catch nothing, and you watch your character slip past the bottom of the screen, and the run is over.<\/p>\n<p>That moment of <em>salvageable failure<\/em> is what makes the game addictive. Every fall is a mini-game inside the main game. Every save is its own small triumph. Every loss feels like it was your fault \u2014 and every loss is followed by an immediate, instinctive &#8220;okay one more.&#8221;<\/p>\n<h2 id=\"scoring\">Scoring<\/h2>\n<p>There&#8217;s exactly one number that matters: the highest meter you reached. The game tracks your current height (how high your character has been) and your best height (your personal record). That&#8217;s it. No multipliers, no combos, no coins. Just a number that starts at 0 and tries to get bigger.<\/p>\n<p>The simplicity is deliberate. There&#8217;s nothing to optimize except <em>the climb itself.<\/em> You don&#8217;t farm crumbling platforms for bonus points. You don&#8217;t try to land on every bouncy. You just go up. The score follows naturally from how well you played.<\/p>\n<h2 id=\"strategy-tips\">Strategy Tips<\/h2>\n<p>After a few hundred meters of climbing, you start to develop instincts:<\/p>\n<ul>\n<li><strong>Always be drifting.<\/strong> Your character can wrap around screen edges, so a tap-left from the left side can teleport you to the right. Use this when you need to reach a platform on the opposite side fast.<\/li>\n<li><strong>Bouncy platforms are worth a detour.<\/strong> A 200m skip is worth two seconds of off-route navigation.<\/li>\n<li><strong>Crumbling platforms aren&#8217;t enemies.<\/strong> They&#8217;re a free jump if you treat them as a transition rather than a destination.<\/li>\n<li><strong>At altitude, watch the tiny platforms.<\/strong> They&#8217;re often the only thing between two big gaps. Aim center.<\/li>\n<li><strong>When falling, don&#8217;t panic-tap.<\/strong> Pick a target platform and hold your direction toward it. Random taps will cancel your horizontal velocity.<\/li>\n<li><strong>Auto-jump waits 0.15 seconds.<\/strong> That&#8217;s enough time to choose a direction. Use it.<\/li>\n<\/ul>\n<h2 id=\"visual-design\">Visual Design<\/h2>\n<p>The aesthetic is minimalist sci-fi. The background is a deep gradient of blues and purples scattered with 200 stars at varying brightness, generated once and stretched across 20,000 meters of vertical space. Platforms are colored geometric primitives. The character is a small disc that leaves a glowing trail behind every jump arc \u2014 so as you climb, the screen fills with the visual record of your path: a chain of looping arcs zigzagging upward through the night sky.<\/p>\n<p>When you crash through a 1000m milestone, the level-up sound plays. When you bounce off a purple platform, the &#8220;correct&#8221; chime fires. When you die, the &#8220;gameover&#8221; hit lands hard. Sound is the connective tissue between physical input and emotional reward.<\/p>\n<h2 id=\"built-with\">Built With<\/h2>\n<ul>\n<li><strong>Flutter + custom physics loop.<\/strong> Ascent uses a manual game loop with delta-time integration. Gravity is 1800 px\/s\u00b2, jump velocity is -700 px\/s, bouncy launches at -1000.<\/li>\n<li><strong>Procedural world generation.<\/strong> The <code>WorldGenerator<\/code> builds platforms above the camera and culls platforms below it. The world is theoretically infinite, but only a few hundred platforms exist in memory at any moment.<\/li>\n<li><strong>CustomPaint rendering.<\/strong> Every visual element \u2014 platforms, character, trail, stars, background \u2014 is drawn directly to a canvas. No sprites, no textures, no asset pipeline.<\/li>\n<li><strong>Persistent best score.<\/strong> Your high score survives across sessions via shared preferences.<\/li>\n<li><strong>Sound service<\/strong> for tap, bounce, level-up, and game-over feedback.<\/li>\n<\/ul>\n<p>The whole game is maybe 800 lines of Dart. It runs at 60fps on every device I&#8217;ve tried. It opens in under a second. That&#8217;s the goal.<\/p>\n<h2 id=\"try-it\">Try It<\/h2>\n<p>Ascent is a game built around a single question: how high can you go before you fall? There&#8217;s no story, no characters, no upgrades, no unlocks. Just a procedurally generated tower of platforms and a small character who can&#8217;t stop jumping.<\/p>\n<p>Tap to start. Tap left and right to steer. See how high you climb.<\/p>\n<p>Then close the app, walk away, and come back in five minutes for one more run. I promise \u2014 there&#8217;s always one more run.<\/p>\n<p><a href=\"https:\/\/reliablesoftwares.com\/apks\/ascent.apk\"><em>Ascent &#8211; Climb until you can&#8217;t. Click here to download for free.<\/em><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tap left. Tap right. Climb forever. There is no top. Ascent is an infinite vertical platformer where your character auto-jumps<\/p>\n","protected":false},"author":1,"featured_media":3729,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[759,10,3,744],"tags":[446,838,386],"class_list":["post-3727","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-app","category-blog","category-games","tag-ai","tag-ascent","tag-games"],"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/pgLsB5-Y7","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":3790,"url":"https:\/\/reliablesoftwares.com\/blog\/i-built-30-android-games-without-writing-a-single-line-of-code-heres-how-ai-did-it-all\/","url_meta":{"origin":3727,"position":0},"title":"I Built 30 Android Games Without Writing a Single Line of Code \u2014 Here&#8217;s How AI Did It All","author":"saifuddin","date":"May 20, 2026","format":"aside","excerpt":"The future of indie game development isn\u2019t a studio. It\u2019s a chat window. Six months ago, I had an idea I couldn\u2019t shake: what if one person, with no team, no game engine expertise, and no traditional coding sprints, could ship 30 fully playable Android games? Not prototypes. Not janky\u2026","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/reliablesoftwares.com\/blog\/category\/blog\/ai\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/05\/30-games-feature-image.jpg?fit=1199%2C812&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/05\/30-games-feature-image.jpg?fit=1199%2C812&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/05\/30-games-feature-image.jpg?fit=1199%2C812&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/05\/30-games-feature-image.jpg?fit=1199%2C812&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/05\/30-games-feature-image.jpg?fit=1199%2C812&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3778,"url":"https:\/\/reliablesoftwares.com\/blog\/a-game-made-of-concentric-geometry\/","url_meta":{"origin":3727,"position":1},"title":"A Game Made Of Concentric Geometry","author":"saifuddin","date":"May 7, 2026","format":false,"excerpt":"Ripple is the quietest arcade game I have built. There are no enemies, no death animations, no rapid taps. You touch the water and a ring spreads from your finger. When that ring's edge crosses a floating leaf, the leaf is collected. That is it. The trick is that ripples\u2026","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/reliablesoftwares.com\/blog\/category\/blog\/ai\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/ripple.jpeg?fit=540%2C1200&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/ripple.jpeg?fit=540%2C1200&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/ripple.jpeg?fit=540%2C1200&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":3755,"url":"https:\/\/reliablesoftwares.com\/blog\/a-pump-a-coast-a-rising-sea\/","url_meta":{"origin":3727,"position":2},"title":"A Pump, A Coast, A Rising Sea","author":"saifuddin","date":"April 30, 2026","format":false,"excerpt":"Tide asks one question over and over - do I pump now, or do I wait? Hold the screen and water level drops. Release and your stamina recharges. Wait too long and waves crash over the buildings. Pump too much and you run out of energy with the worst still\u2026","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/reliablesoftwares.com\/blog\/category\/blog\/ai\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/tidewave.jpeg?fit=540%2C1200&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/tidewave.jpeg?fit=540%2C1200&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/tidewave.jpeg?fit=540%2C1200&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":3775,"url":"https:\/\/reliablesoftwares.com\/blog\/the-loop-that-lives-in-your-reflexes\/","url_meta":{"origin":3727,"position":3},"title":"The Loop That Lives In Your Reflexes","author":"saifuddin","date":"May 6, 2026","format":false,"excerpt":"Splice distills tap-timing to its purest form. A color wheel spins beneath a yellow notch. Above, a tile shows the color you must hit. When that segment crosses the notch, tap. Miss by a hair and the run ends. Every successful tap speeds the wheel up. Every fifth tap adds\u2026","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/reliablesoftwares.com\/blog\/category\/blog\/ai\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/splice.jpeg?fit=540%2C1200&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/splice.jpeg?fit=540%2C1200&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/splice.jpeg?fit=540%2C1200&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":3758,"url":"https:\/\/reliablesoftwares.com\/blog\/stack-until-there-is-nothing-to-stack-on\/","url_meta":{"origin":3727,"position":4},"title":"Stack Until There Is Nothing To Stack On","author":"saifuddin","date":"May 1, 2026","format":false,"excerpt":"Cascade rides a deceptively cruel mechanic - every imperfect drop punishes you forever. You see the block sliding back and forth above your tower. You wait for the right moment, you tap, and a piece falls. The fragment that hung over the previous block? Gone. The new block is now\u2026","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/reliablesoftwares.com\/blog\/category\/blog\/ai\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/cascade.jpeg?fit=540%2C1200&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/cascade.jpeg?fit=540%2C1200&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/cascade.jpeg?fit=540%2C1200&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":3772,"url":"https:\/\/reliablesoftwares.com\/blog\/the-game-that-doubles-your-decisions\/","url_meta":{"origin":3727,"position":5},"title":"The Game That Doubles Your Decisions","author":"saifuddin","date":"May 5, 2026","format":false,"excerpt":"Most arcade games ask you to dodge or to collect. Polarity asks both at once - and which one you are doing depends on a state you can flip with a single tap. Red particles drift in. Blue particles drift in. If your charge is opposite to the particle, contact\u2026","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/reliablesoftwares.com\/blog\/category\/blog\/ai\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/polarity.jpeg?fit=540%2C1200&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/polarity.jpeg?fit=540%2C1200&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/polarity.jpeg?fit=540%2C1200&ssl=1&resize=525%2C300 1.5x"},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/reliablesoftwares.com\/blog\/wp-content\/uploads\/2026\/04\/ascent.jpeg?fit=720%2C1600&ssl=1","_links":{"self":[{"href":"https:\/\/reliablesoftwares.com\/blog\/wp-json\/wp\/v2\/posts\/3727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/reliablesoftwares.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/reliablesoftwares.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/reliablesoftwares.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/reliablesoftwares.com\/blog\/wp-json\/wp\/v2\/comments?post=3727"}],"version-history":[{"count":1,"href":"https:\/\/reliablesoftwares.com\/blog\/wp-json\/wp\/v2\/posts\/3727\/revisions"}],"predecessor-version":[{"id":3728,"href":"https:\/\/reliablesoftwares.com\/blog\/wp-json\/wp\/v2\/posts\/3727\/revisions\/3728"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/reliablesoftwares.com\/blog\/wp-json\/wp\/v2\/media\/3729"}],"wp:attachment":[{"href":"https:\/\/reliablesoftwares.com\/blog\/wp-json\/wp\/v2\/media?parent=3727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/reliablesoftwares.com\/blog\/wp-json\/wp\/v2\/categories?post=3727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/reliablesoftwares.com\/blog\/wp-json\/wp\/v2\/tags?post=3727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}