Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Octofill

A calm, ad-free block-puzzle game for iOS, open source. Published on the App Store as Octofill. (The Xcode project and this repo keep their original Blockfall codename, so all the file paths below say Blockfall.)

I built Octofill because I love a casual drop of blocks with my daughters, but every free game we tried was riddled with ads. So I made the one I wanted: fun with or without kids, no ads, no tracking, and no internet required. The code is here so anyone can verify that promise.

Links: Website · Privacy Policy · Support

Download on the App Store

Board clear celebration in the Brick Wall theme Kawaii face on an isolated square Jelly Wobble theme board clear Five game modes Pass-and-play tournament results

A block-puzzle game for iOS. Drag pieces from the tray onto the 8x8 board; complete rows or columns to clear them. Clearing multiple lines at once scores more, and consecutive clearing moves build a streak multiplier. The run ends when none of the remaining pieces fit.

Sweep the board completely clear and the game hops to the next of 42 tile themes — wood, watermelon, fairy bread, mermaid scales, bunnies, and more — with a confetti celebration to match. Leave a lone square of blocks anywhere and it grows one of 20 kawaii faces (our daughters' favourite feature).

Modes: Classic, Time Attack, Daily Challenge, Puzzle, and Bomb Blitz. A pass-and-play Tournament mode lets a group take turns on one device — pick the players, choose a game (defaults to Time Attack with a configurable round time), and the highest score wins.

No ads, no analytics, no network access. High score and the in-progress game are stored on-device.

Original implementation: all code, artwork, and the icon are generated for this project. Only the genre mechanics (shared by many block-puzzle games) are in common with other titles.

Project layout

  • Blockfall.xcodeproj - Xcode project (iOS 17+, iPhone, portrait)
  • Blockfall/GameEngine.swift - pure game logic: board, pieces, clears, scoring
  • Blockfall/GameState.swift - observable game state, persistence, haptics triggers
  • Blockfall/GameView.swift - board, drag-and-drop, tray, score, game-over UI
  • Blockfall/Tournament.swift / Blockfall/TournamentViews.swift - pass-and-play tournament: setup, turn handoff, standings
  • Blockfall/Theme.swift - app chrome colours and block/piece rendering
  • Blockfall/TileThemes.swift - the 42 procedural tile themes (all pure SwiftUI, no image assets)
  • Blockfall/KawaiiFaces.swift - isolated-square detection and the 20 face varieties
  • Blockfall/Celebrations.swift - combo banners, clear-burst particles, board-clear confetti, panic timer
  • tools/make-icon.swift - regenerates the app icon (swift tools/make-icon.swift <out.png>)
  • tools/engine-check.swift - engine sanity checks (cp tools/engine-check.swift /tmp/ec/main.swift && swiftc Blockfall/GameEngine.swift /tmp/ec/main.swift -o /tmp/engine-check && /tmp/engine-check)

Run in the simulator

xcodebuild -project Blockfall.xcodeproj -scheme Blockfall \
  -destination 'platform=iOS Simulator,name=iPhone 17' build

Or open Blockfall.xcodeproj in Xcode and press Run.

Put it on your iPhone via TestFlight

Requires a paid Apple Developer Program membership (AUD ~$149/yr).

  1. Open Blockfall.xcodeproj in Xcode. Select the Blockfall target > Signing & Capabilities, tick "Automatically manage signing", and pick your Team.
  2. Check the bundle identifier (app.blockfall.app). It must be globally unique; change it if it clashes with anything you own.
  3. In App Store Connect (appstoreconnect.apple.com) > Apps > "+" > New App: pick iOS, any name (e.g. Blockfall), the bundle ID from step 2, and an SKU (e.g. blockfall-001).
  4. In Xcode, select "Any iOS Device (arm64)" as the destination, then Product > Archive.
  5. When the Organizer opens, click "Distribute App" > "TestFlight & App Store" (or "TestFlight Internal Only") > Upload.
  6. In App Store Connect > your app > TestFlight, wait for the build to finish processing (usually 5-15 minutes). Export compliance is already answered in the build (ITSAppUsesNonExemptEncryption = NO), so no extra questions should appear.
  7. Create an Internal Testing group, add your own Apple ID as a tester, and add the build to the group.
  8. Install TestFlight on your iPhone, accept the invite, and install Blockfall.

Internal-tester builds do not go through App Review. TestFlight builds expire after 90 days; upload a new build (bump the build number in the target's General tab) when one expires.

No paid membership?

With a free Apple ID you can skip TestFlight: plug in your iPhone, select it as the run destination in Xcode, and press Run. The app installs directly but expires after 7 days, after which you just run it again.

App Store submission

The App Store listing copy, privacy/age-rating answers, and reviewer notes live in app-store/METADATA.md. The public Privacy Policy and Support pages are served from docs/ via GitHub Pages.

Contributing

Issues and pull requests are welcome — open one on the issue tracker. The game logic lives in GameEngine.swift (pure, no UIKit) and is covered by tools/engine-check.swift.

License

MIT © 2026 Still Waters. The app name "Octofill" (and the "Blockfall" codename), the app icon, and the App Store listing are not covered by the licence; please ship your own fork under a different name and icon.

About

A calm, ad-free block puzzle for iOS. No ads, no tracking, no internet. Open source.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages