Shells are your life
Every screen is a set of structures to bring down. Clear it cleanly and you earn shells back; waste them and the run ends. A one-shot clear pays best, so every arc is a small bet.
▌ ARTILLERY ROGUELIKE · FREE DEMO · COMING TO STEAM
Read the wind. Break the ground. Make every shell count. An endless coastline of fragile structures, terrain that stays broken, and a draft every four screens that changes how you shoot.
Windows · macOS · Linux · Android · iPhone. Offline, no account, no ads, no telemetry.
Line up an arc, read the wind, and bring the tower down. The crater and the wreckage stay where they fell, so your next shot is aimed at a coast you broke yourself.
Every screen is a set of structures to bring down. Clear it cleanly and you earn shells back; waste them and the run ends. A one-shot clear pays best, so every arc is a small bet.
Pick one of three modifiers: heavier shells, airbursts, instruments that read the wind, economy tricks. Twenty-four in all, and they stack into builds that play very differently.
Before a screen appears, the game proves it can be cleared with the loadout you actually have. Hard, never impossible. The daily seed is the same for everyone.
Pass the device to a friend or take on the AI at three levels. Sculpt terrain in the map editor, then share a code so a friend can fight on the same ground.
The full game on Windows, macOS and Linux. The store page is on its way; wishlisting is the single most useful thing you can do for a small game.
Coming to SteamThe shareware edition for Windows, macOS, Linux and Android: the first twelve screens of every run, the daily seed and local versus. It installs alongside the full game.
Free demo · coming soonThe current alpha, free through Apple's TestFlight. Expect rough edges, and builds that expire after 90 days.
Join on TestFlightRebuilt from main on every merge. These need access to the
GitHub repository. Desktop builds are unsigned, so macOS and Windows may show a
security warning; Android is a sideloaded APK.
Three offers every four screens, from four families. Each one is a rule change you can feel on the next shot, not a percentage on a stat sheet.
Not a velocity offset. Lateral drift grows with the square of flight time, so a lofted shot is punished far harder than a flat one. Most of the difficulty curve falls straight out of that one decision.
vx += wind * dt
Before a screen is drawn, the generator finds three or more surviving trajectories per target, checked against your current loadout with the same damage model the game runs. If it can't, it rolls again.
MIN_SOLUTIONS = 3
Same seed plus same inputs gives a byte-identical result on every platform, enforced in CI. A run saves as a seed and a shot log, which is how replays and the daily seed stay fair.
DT = 1.0 / 120.0 · f64 throughout
Salt, weather, heavy machines, fragile structures. A 320×180 world in sixteen fixed colours, scaled by whole pixels only.
INTACT
LEANING
COLLAPSEDBARREL 0° · TRUE 0.0°
The sprite is quantized to 5°. The numeric field is not. That gap is why the Vernier modifier feels like an instrument instead of a stat.
Concept boards for the world, not gameplay screenshots. Open any board at full resolution.
About the art: the shipped sprites and the title scene are cut from these concept boards, and some cleanup used AI image tools. The art is still alpha and gets a hand-drawn pass before release.
Covering roguelikes, artillery games or pixel art? Use anything on this page. Captures come straight from the game at whole-pixel scale.
Steam keys for creators will be available once the store page is up. Until then, the iPhone beta is open to everyone.
Building from source needs access to the repository, Rust 1.99.0
(pinned in rust-toolchain.toml), Godot 4.7.2, uv 0.13.5 and
Python 3.15.0 for asset tools. See the
README quick start.
Players don't need any of this.
git clone https://github.com/cascadiacollections/saltline
cd saltline
cargo test # sim + presentation, no engine needed
cargo build -p salt-line-godot # the GDExtension
godot --path . # play
The design doc explains the rules in depth: DESIGN.md.