Skip to main content
iOS Game
In Development

Overburden

codename: Faultline

Clear a row, and watch the rest come down.

[ OVERBURDEN — SCREENSHOT ]PLATE 01 · OVERBURDEN
Engine Coverage
99.2%
Tests Passing
480
Networking Code
None

Overview

Project overview

Overburden is a block-placement puzzle for iOS. You drag one of three pieces onto an 8×10 grid — they never rotate — and filling a complete row or column clears it. What happens next is the game: the blocks left behind fall as connected bodies rather than tidy per-column stacks, keeping the board's overhangs and holes and letting a single placement cascade x2, x3, x4. Grey rubble pushes up from the bottom on a clock that tightens from every six pieces placed down to every two, and it clears exactly like any other block, so the pressure is also the ammunition. Daily seeds from the day number and rotates at local midnight, which gives every player the same run; Endless seeds randomly; an App Clip plays one shared day without an install. The rules are specified once in an engine spec and implemented in a pure-Swift package with no UI imports, so they run headless on macOS and the tests hold them in place. There is no account, no networking code, no analytics, and nothing to buy.

Stack

Tech stack

Swift 6SwiftUIApp ClipSwift Package ManagerCore HapticsAVFoundation

Features

What it does.

The board

  • 8×10 grid, a tray of three pieces, no rotation
  • Filling a row or column clears it
  • Blocks fall as connected bodies, fragmenting as they go
  • Overhangs and holes survive a clear, so the board keeps its shape
  • One placement can cascade x2, x3, x4

Pressure

  • Grey rubble pushes up from the bottom on a clock driven by pieces placed
  • The clock tightens from every six pieces down to every two
  • Rubble clears like any other block — the pressure is also the ammunition
  • You lose when the rubble reaches the top, or when no piece fits
  • Easy, Medium and Hard move the rise clock and the rubble, never the board or the scoring

Modes

  • Daily — the same pieces in the same order for every player, rotating at local midnight
  • Endless — a fresh random run
  • An App Clip plays a shared day's puzzle without installing the app
  • No account, no advertising, no in-app purchases, no tracking

Built to be checked

  • The rules are specified once, in an engine spec the tests enforce
  • Engine coverage held at 99.2% across 116 rule tests
  • Difficulty numbers come out of a simulated calibration run, not by hand
  • Coverage read from xcresulttool and xccov, never from the exit code

Architecture

How it's built.

  1. 01

    SwiftUI app

    iOS 26, iPhone only, portrait only, Swift 6 with complete strict concurrency

  2. 02

    OverburdenCore

    every rule, as a SwiftPM package with no UI imports, testable headlessly on macOS

  3. 03

    Engine spec

    the rules written once as the contract the engine implements and the tests hold

  4. 04

    App Clip

    the same engine behind a shared Daily link, playable without an install

  5. 05

    tune

    a greedy-bot calibration harness that fixes the difficulty numbers over 400 simulated games per tier

  6. 06

    XcodeGen

    the .xcodeproj is generated from project.yml and never committed

← All Workdecimalabs.io/work/overburden

Something like this, but built for you.

Every engagement starts with a written scope — whether it's a native macOS app or a records system for a county.

START A PROJECT