← All work
RuneShot app iconMobile Game · Coming soon to the App Store

Rune
Shot

A turn-based dungeon brawler where every shot is a puzzle. Read the enemy's next move, bank your rune ball off the walls and break them apart.

RoleGame design, art direction, engineering, sound
PlatformiPhone · iPad
EngineUnity 6
Sitelayernative.com/runeshot ↗
Visit the RuneShot site
Overview

It looks like a brick breaker. It plays like a tactics game.

RuneShot began as a brick breaker prototype and turned, stage by stage, into a roguelite dungeon game about one well-planned shot per turn.

The turn

One free action, then one shot

Every enemy shows what it will do and which lane it will hit. Before you shoot you can step aside, drink a potion or raise your guard.

The shot

Bank it, break it

Every bounce adds 20% to the hit. Long bank shots hit up to ×2.5, and coming down on an enemy's back is a ×2 backstab.

The parts

Switch attacks off

Shields, swords, lanterns and horns have their own health. Break one and that attack is gone for good.

The run

Every scratch matters

A chapter is one run of ten dungeons. Health and potions carry over, and the campfire before the last room costs coins.

In numbers
54development stages, each captured with screenshots
50dungeons across 5 painted chapters
80+enemies, each with breakable parts
52balls, with 33 fusions to discover
8heroes, each with a passive and a skill
60charms in 4 rarities
52aim angles the balance bot tests per shot
0sound files from a library
Development

54 stages, from grey boxes to a painted world.

Every stage of RuneShot was captured as it happened, with screenshots and notes from day one. Here is the whole journey in nine chapters, from the first bouncing ball to the balance bot.

01Stages 1–3

The prototype

RuneShot started on day one as a plain brick breaker: a star-gate level map and custom, deterministic ball physics. A few stages later it pivoted. Same map, but the ball became the hero's weapon in a turn-based bounce RPG. Then came lanes, breakable enemy parts and the first boss.

  • Enemies show their next move above their heads
  • Bounce off a wall into a guard's back for a ×2.5 backstab
  • Three lanes: step aside, drink a potion or defend, then shoot
Stage 1: The first playable: a level map with star gates.
Stage 1The first playable: a level map with star gates.
Stage 1: Deterministic ball physics breaking the first bricks.
Stage 1Deterministic ball physics breaking the first bricks.
Stage 2: The pivot: bank off the wall, hit the guard in the back.
Stage 2The pivot: bank off the wall, hit the guard in the back.
Stage 3: Three hero lanes, one move, then one shot.
Stage 3Three hero lanes, one move, then one shot.
02Stages 4, 26, 27, 32, 52

The ball system

The ball is the whole game, so it got the deepest system. Elements react with each other, balls level up and unlock perks, and after every room two balls can be fused into something stranger. The last big addition was a family of reaction balls that split into bees, shards, seeds and moons.

  • Water conducts lightning, fire lights oil, frost makes armour brittle
  • 52 balls in total, 33 fusions recorded in a recipe book
  • Each ball level adds 10% and lets the aim guide see further
Stage 4: Three ball slots and the first elemental combos.
Stage 4Three ball slots and the first elemental combos.
Stage 26: The ball pouch, where balls are levelled up.
Stage 26The ball pouch, where balls are levelled up.
Stage 32: The recipe book remembers every fusion you found.
Stage 32The recipe book remembers every fusion you found.
Stage 52: Reaction balls: 12 new base balls and 6 fusions that turn into more projectiles.
Stage 52Reaction balls: 12 new base balls and 6 fusions that turn into more projectiles.
03Stages 5–9, 12, 29, 36

Finding the look

For weeks the game was grey boxes. Then it moved to a warm leather UI, a hand-painted world map, a painted icon set and finally a full art pack with every enemy, the hero's poses, props, tiles and balls. Six enemies were later redesigned for readability.

  • The map screen went from a node list to a painted world
  • Every enemy reads clearly: cards, grounding shadows and state visuals
  • Art comes in as sheets and is cropped to match the existing style
Stage 6: The map screen, before and after the warm leather redesign.
Stage 6The map screen, before and after the warm leather redesign.
Stage 5: The node map, still in placeholder style.
Stage 5The node map, still in placeholder style.
Stage 7: The first painted map with the new top bar.
Stage 7The first painted map with the new top bar.
Stage 9: Battle art: floors, walls and the first skeletons.
Stage 9Battle art: floors, walls and the first skeletons.
Stage 12: Full art pack: the hero, pillars, tiles and HUD.
Stage 12Full art pack: the hero, pillars, tiles and HUD.
04Stages 10, 11, 20, 50, 51

Making it feel like a game

A good shot has to feel good before it is understood. This chapter added light, shadows and torches, a trail for every ball family, a finishing blow with a zoom and letterbox, and a full impact pass with hit-stop, a camera punch and synthesized sound.

  • Hit-stop of 65 to 120 ms and a directional camera punch on a spring
  • Each contact plays the next note on a pentatonic scale, so combos become melodies
  • The ball's flight was reworked with Golf Blitz as the reference
Stage 10: Torches, wall shadows and the hero on the rune ring.
Stage 10Torches, wall shadows and the hero on the rune ring.
Stage 11: Shot VFX: each ball family leaves its own trail.
Stage 11Shot VFX: each ball family leaves its own trail.
Stage 20: The finishing blow: a zoom and a letterbox.
Stage 20The finishing blow: a zoom and a letterbox.
Stage 50: Ball flight juice: squash, stretch and a halo.
Stage 50Ball flight juice: squash, stretch and a halo.
05Stages 16, 21–25, 28, 34–35, 39

Content

One dungeon became five chapters, each with its own map, enemies and rules: the Sunken Depths, the Ember Forge, the Thornwood, the Glacier Keep and the Storm Crown. The bestiary grew to 80 enemies, every one with real break layers, and 60 charms arrived in four rarities.

  • 80 enemies, each with a part you can break to switch an attack off
  • 60 charms with art, three slots per hero
  • Chapters went from 6 to 10 dungeons: 50 in total
Stage 21: Chapter 2, the Ember Forge.
Stage 21Chapter 2, the Ember Forge.
Stage 24: Chapter 4, the Glacier Keep.
Stage 24Chapter 4, the Glacier Keep.
Stage 28: The Crown Eclipse, from the wild bestiary.
Stage 28The Crown Eclipse, from the wild bestiary.
Stage 35: Break layers for the first 40 enemies: whole, cracked, broken.
Stage 35Break layers for the first 40 enemies: whole, cracked, broken.
06Stages 37–38, 41, 44

The roguelite shape

With content in place, the structure changed. A chapter became one run of ten dungeons where health and potions carry over, a death sends you back to the start of the chapter, and a hidden curse can be accepted for double rewards.

  • A difficulty curve that grows with depth, not with the dungeon number
  • Hardcore mode for players who want it to hurt
  • You keep salvage, levels, coins, charms and talents after a death
Stage 38: A reinforced room on the new curve.
Stage 38A reinforced room on the new curve.
Stage 41: A death ends the run.
Stage 41A death ends the run.
Stage 44: Accept the curse, double the rewards.
Stage 44Accept the curse, double the rewards.
07Stages 42–43, 46, 49

Rewards and retention

Opening a chest became a small show: the lock snaps off, the lid swings open with an overshoot and the best charm comes out last. A 7-day calendar, a daily challenge with its own rule and 30 goals give players a reason to come back.

  • Legendary chests get a white-gold flash, two layers of rays and a fanfare
  • Gems pay once per star ever, so a Hardcore wipe cannot farm them
  • The announcer lines are the developer's own voice
Stage 42: A legendary chest opening.
Stage 42A legendary chest opening.
Stage 43: The 7-day calendar.
Stage 43The 7-day calendar.
Stage 49: 30 goals, each paying gems once.
Stage 4930 goals, each paying gems once.
08Stages 47–48

Business

The shop came late on purpose, after the game was fun without it. It sells gems, coins and chests, with a one-time starter pack. Real purchases run on Unity IAP 5, and AdMob serves rewarded ads for energy or a revive plus an interstitial every three dungeons.

  • Starter pack: 300 gems, 2,000 coins and an Epic chest for $1.99
  • Chests have a pity counter every 10 opens
  • In the editor purchases are approved instantly, so the whole flow is testable
Stage 47: The shop.
Stage 47The shop.
Stage 48: The one-time starter pack.
Stage 48The one-time starter pack.
09Stages 53–54

Balancing with a robot

The last stretch: a title screen, store-ready settings and a bot that plays every dungeon. Its numbers changed the game: harder enemies, no free refills, a campfire before every final room, scattered props and a last stand for the final enemy.

  • The bot traces 52 aim angles with human-like noise through the real physics
  • Every chapter grew from 6 to 10 dungeons without breaking old saves
  • The last enemy's hits spread to the next lane, so you cannot just dodge
Stage 53: The new title screen.
Stage 53The new title screen.
Stage 54: Ten dungeons per chapter.
Stage 54Ten dungeons per chapter.
Stage 54: Scattered props and the last stand.
Stage 54Scattered props and the last stand.
Feel & sound

Every shot is a small performance.

We spent more stages on how a shot feels than on almost anything else. The rules of a shot never changed; everything below is a presentation layer on top of them. Turn your sound on and try it.

Anatomy of a shot

  1. 01Pull back

    The ball sits in the sling. Pulling back drags it down on two bands while the hero leans into the aim. The aim guide shows the first contact and bounce, and sees further as the ball levels up.

  2. 02Release

    The hero recoils and the launch sound plays: each family has its own. The ball leaves at speed 23 (it was 20 before the impact pass).

  3. 03Flight

    A distance-sampled ribbon trail: a dark outline, the colour, a white-hot core and an additive glow. The ball stretches up to 22% along its flight (×1.3 when fast), casts a soft shadow and wears a halo that pulses.

  4. 04Bounce

    The ball squashes flat against the wall and springs back, throws a puff and two star sparkles, and the halo flares. The bounce sound plays, and a bell note climbs one step up a major pentatonic scale.

  5. 05Hit

    A comic starburst, the enemy flashes pure white through a silhouette shader, hit-stop freezes 65 ms (110 ms at ×2), the camera is punched in the hit's direction and springs back, the enemy recoils and squashes, and the multiplier pops.

  6. 06Finish

    On the last enemy: a white flash, a double ring and gold speed lines, time drops to 0.18×, the camera punches in 42% in 0.22 s, letterbox bars slide in, and a low crack and boom play. The whole beat lasts 1.35 s.

Stage 51: The trail became light, not paint: a slim ribbon over a soft additive glow.
Stage 51The trail became light, not paint: a slim ribbon over a soft additive glow.
Stage 51: Frost: a white-hot core shedding snow sparkles.
Stage 51Frost: a white-hot core shedding snow sparkles.
Stage 11: Spark: a jagged bolt that crackles every frame.
Stage 11Spark: a jagged bolt that crackles every frame.
Stage 11: Iron: a heavy white streak with speed lines.
Stage 11Iron: a heavy white streak with speed lines.
Stage 51: The hit: starburst, white flash, hit-stop.
Stage 51The hit: starburst, white flash, hit-stop.

The sound board

8 ball families, each with its own launch, bounce and hit: 24 clips. Fused balls get a fixed pitch of their own, so no two balls sound the same. Press "Full shot" to hear a launch, three bounces with the combo note climbing the pentatonic scale, and the hit.

Stone

woody tok

The default family and the sling's own voice.

How it is made
  • Launch A "thwip": a hard high-passed snap, a 140→60 Hz push and an air whoosh swept from 800 Hz to 7 kHz, spread across stereo.
  • Bounce A rubbery tok: a body that blips down from 780 to 480 Hz with its second harmonic, a woody click and a 180→90 Hz thump, saturated with tanh.
  • Hit A smack sweeping 260→60 Hz with a click and a mid crunch, plus a short 1150 Hz slap ring.

Iron

metal clang

Heavy balls: bigger shake, no glow, a dark smear for a trail.

How it is made
  • Launch A low 110→45 Hz drop over low-passed noise, driven hard.
  • Bounce Five inharmonic partials of a 310 Hz metal plate (×1, 2.32, 3.86, 5.17, 6.9), each decaying faster than the last, over a soft smack.
  • Hit A deep 170→36 Hz smack, a 190 Hz metal ring and a low rumble, saturated together.

Frost

glass tink

A white-hot core that sheds snow sparkles.

How it is made
  • Launch Air swept up to 9 kHz with eight tiny glitter pings.
  • Bounce Two glass pings at 2400 and 3570 Hz and a crisp click.
  • Hit A smack plus 14 glass pings between 2.2 and 6.5 kHz, scattered in time and across the stereo field, a high shatter and a bright reverb.

Ember

fire whoomp

A flame trail that licks sideways and flickers.

How it is made
  • Launch A noise whoosh whose filter opens from 300 Hz to 3.5 kHz, a low thump and 18 crackles.
  • Bounce A soft smack, a low-passed burst and a high sizzle.
  • Hit A "whoomp" of noise with its filter opening 400→2500 Hz, plus 40 crackles panned left and right.

Spark

electric buzz

A zig-zag bolt that crackles every frame.

How it is made
  • Launch A 220 Hz saw gated at 60 Hz and a zip rising from 900 Hz to 3.8 kHz.
  • Bounce A band-passed 140 Hz square, a click and a 2400→800 Hz drop.
  • Hit A 110 Hz saw buzz chopped at 37 Hz, 18 tiny zaps and an arc falling from 3.5 kHz to 900 Hz.

Echo

pew with delays

Leaves rings behind it.

How it is made
  • Launch A "pew" falling 1700→420 Hz with three ping-pong echoes 110 ms apart, each one darker.
  • Bounce A "boing" rising 520→760 Hz with a 28 Hz wobble, echoed three times.
  • Hit A smack with an FM bell at 1320 Hz and two echoes.

Thorn

blade shing

A thin needle line for a trail.

How it is made
  • Launch A swish filtered from 2 to 10 kHz and a metallic shing at 1900 Hz.
  • Bounce A short 1450 Hz metal ring and a click.
  • Hit A blade slice (a filter sweeping down 9000→1500 Hz) and a 600→180 Hz squelch.

Bomb

mortar thoonk

Fuse smoke behind it, a fireball at the end.

How it is made
  • Launch A mortar "thoonk" 260→70 Hz and a crackling fuse.
  • Bounce A dull 220→110 Hz knock and a thump.
  • Hit A 1.4 s boom falling from 120 to 30 Hz with debris noise and a big reverb.

Combos become melodies

Every contact plays one bell note (an FM bell on C6, played back at half speed so it starts on C5) and the next contact steps up a major pentatonic scale, Peggle-style. A long combo sings instead of repeating.

Semitones above C5 for steps 1–13: 0, 2, 4, 7, 9, 12, 14, 16, 19, 21, 24, 26, 28

Rewards and voice

How the sounds are made

There is not a single file from a sound library in RuneShot. In the early stages every sound was synthesized in code at startup, so the game shipped no audio files at all. For the impact pass, all clips were rebuilt offline with a Python tool (numpy and scipy) and exported as WAVs. Unity loads those first and falls back to the old runtime synth.

  • SmackA pitched body sweeping down, saturated with tanh, plus a high click and a band-passed crunch. Most hits start here.
  • FM bellsA carrier modulated at 3.5× its frequency. The combo note and the chest runs.
  • MetalFive inharmonic partials with their own decay, for iron and blades.
  • Glass pingsShort, high sine pings scattered in time and stereo, for frost.
  • Filter sweepsA state-variable filter opening or closing over noise: whooshes, whoomps and slices.
  • Supersaw and choirDetuned saws and formant-filtered voices for the epic and legendary chords.
  • SpaceConvolution reverb from a synthetic impulse response, equal-power panning and ping-pong delays.
  • Quality checksSpectrograms to catch clicks, short end fades and peak normalization to -1 dB.
What we built

A small game with deep systems.

Turn-based bounce combat

Three lanes, telegraphed enemy moves, one free action and one shot per turn.

Breakable parts

Every enemy has parts with their own health. Break one to cancel that attack for good.

Fusions

19 base balls, fused after every room into 33 stranger ones, recorded in a recipe book.

Heroes and talents

8 heroes, each with a passive that bends the rules and a skill charged by landing hits.

Chapter runs

Ten dungeons per run, health that carries over, Hardcore mode and curses for double rewards.

Daily content

A 7-day calendar, a daily challenge with its own rule, a bestiary and 30 goals.

Technical deep dives

How the details work.

Economy

Rewards that cannot be farmed

Gems are earned for progress, not for repetition.

  • Gems pay 5 per star, once per star ever, so a Hardcore wipe cannot farm them, plus 10 per level up.
  • Chests have a pity counter every 10 opens.
  • Coins matter inside a run: every campfire purchase costs ×1.6 more than the last, and prices grow with depth.
Saves

Growing the game without breaking it

When chapters went from 6 to 10 dungeons, nobody lost progress.

  • Stars, the chapter run, gem payouts and today's challenge all moved to their new dungeon index (save v3 → v4).
  • Enemy scaling, coin rewards and star goals read a normalized "depth" instead of the dungeon number.
  • So dungeon 50 is exactly as hard as dungeon 30 used to be.
Systems

One child projectile, 18 balls

Every reaction ball is the same simulated "child" with different settings: kind, hits, pierce, bounce, homing, status and explode-on-Nth-hit.

  • Children run on the shot's deterministic 1/120 s step.
  • A child never triggers new effects, so chains can never run away.
  • Marks that last across turns, like honeycomb, turn one shot into a setup for the next.
Rendering

IMGUI in linear colour space

All UI is drawn with Unity IMGUI, which brings some surprises in a linear colour space.

  • UI textures are pre-linearized, and overlays are filled twice because alpha looks weaker in linear space.
  • GUI groups cannot clip rotated drawing, so the chest rays are pre-rotated into 30 frames.
  • Ball art is exported twice: 256 px sRGB for battle, 128 px pre-linearized for the UI.
Balancing with a robot

Opinions do not scale. Numbers do.

The developer kept saying the game felt easy. So a debug-only bot now plays every dungeon on a copy of the save and writes a CSV: wins, health lost, potions, campfire buys, turns and stars. The player's own save is backed up first and restored when the bot stops.

It plays like a decent human, not a perfect one. It dodges to a safer lane, drinks below 45% health, defends big hits and scores 52 noisy aim angles by likely kills, weak points, backstabs and threats.

The first run won every dungeon and lost almost no health early on. After the retune, enemy health went from ×1.0 to ×1.4 and damage from ×1.2 to ×1.7, rest and potions stopped refilling between dungeons, and a campfire shop appeared before every final room. Now the curve climbs with depth, and the bot loses half its attempts in three dungeons.

Health lost per dungeon, after the retune

Bot run on 15 October 2026 · 2 attempts per dungeon · average share of max health lost

0%25%50%75%100%1234567891011121314DungeonChapter 1 · Sunken DepthsCh. 2 · Ember Forge76%91%61%
Bot won both attemptsBot lost one of two attempts
View the data
#DungeonHealth lostWinsAvg turns
1Bone Crypt0%2/211
2Flooded Cavern9%2/215.5
3Drowned Ossuary11%2/210.5
4Ruined Keep0%2/216.5
5Sunken Chapel0%2/217
6Golem's Throne22%2/214.5
7Lantern Docks22%2/231
8Tidebell Grotto76%1/238
9Mirror Archive91%1/240.5
10Clockwork Library36%2/240
11Cinder Fields21%2/233
12Lava Bridges16%2/239.5
13Ashen Orchard12%2/236
14Smithy Row61%1/236.5
Under the hood

One developer, a lot of tools.

Unity 6C#IMGUICustom deterministic physicsPython sound synthesisUnity IAP 5Google AdMobiPhone & iPad
  • The shot simulates on a deterministic 1/120 s step, so aim previews match what really happens.
  • Old saves migrate when the game grows: when chapters went from 6 to 10 dungeons, stars, runs and gem payouts moved to their new places.
  • Difficulty reads a normalized "depth" instead of the dungeon number, so new dungeons slot in without breaking the curve.
  • A dedicated website with a playable mini arena, press kit, privacy and terms lives at layernative.com/runeshot.