Skip to content

Repository files navigation

Lattice Five

CI codecov

Download on the App Store · lattice.misaki.fi

A procedural, turn-based puzzle game for Apple platforms — a digital Morpion Solitaire (a.k.a. Join Five).

Released on the App Store for iPhone, iPad and Mac — one Universal Purchase. No version number here on purpose: it would go stale on the first patch. See CHANGELOG.md for what shipped when, ROADMAP.md for what's next, and AGENTS.md for the architecture and conventions.

The game

You start from a fixed cross-shaped outline of dots. On each move you place one new dot, then draw a straight line through five dots in a row (four segments) — horizontal, vertical, or diagonal. A line may share an endpoint dot with earlier lines, but no segment may be reused in the same direction. Play continues until no legal line remains; your score is the number of lines drawn. It's a game of stretching one placement into the most future moves.

Modes (single-player is the main focus):

  • Solitaire — the classic single-player maximization puzzle, with unlimited undo and full game replays.
  • Daily puzzle — everyone plays the same deterministic start each day; streaks and a shareable score card rendered from your finished board.
  • Two-player (ad-hoc, no server) — pass-and-play on one device (alternating turns, last able to move wins), or a live Nearby duel over the local network: host a game and up to 8 players race the same board, either lock-step under a reactive clock, or racing to a target where the fastest to reach it wins. A duel is its own event — anonymous and disposable, leaving no records behind.

Platforms & principles

  • iOS and macOS, one app under Universal Purchase (buy once, both platforms) — free, no monetization.
  • All graphics procedural — dots and line segments drawn in code; no image assets. (Carried over from the sibling project's approach.)
  • Mostly monochrome, full light/dark support — ink-on-paper light mode, chalk-on-slate dark mode, one accent colour for interactive state only. The app icon (with light/dark variants) is generated from the game's own drawing code — lines drawn within a game.
  • Fully keyboard-operable on macOS — every screen navigates by arrows, and each ⌘-shortcut lives in the menu bar where it's discoverable.
  • English-only for now, but built on a String Catalog from day one, so more languages are drop-in translation later, never a refactor.
  • No server, no accounts, no tracking. Nearby play is peer-to-peer on the local network.

Version history

Minor versions only — a patch release is a fix or two, which CHANGELOG.md covers in full (down to the build each piece landed in).

1.0.0 — the store release

The first public release. Little of it is gameplay — the game was feature-complete at 0.5.0 build 9, and 1.0.0 was mostly store work (the listing, the screenshots, review) — but it also brought an in-app Light/Dark setting, data export in Settings, variant explanations on the New Game screen, dailies labelled as such in History, and a dead-gap rule corrected in both directions.

0.5.0 — two-player, sync & first TestFlight

  • New: Versus — pass-and-play two-player on one device: players alternate, the last able to move wins, with one undo before the opponent replies. Each player owns a colour-vision-safe colour that their lines, the interactive accent, and the turn chip all wear.
  • New: Nearby duel — live same-room play over the local network (up to 8 players, iOS ↔ macOS). Host a game and others join; race the same board either lock-step (a reactive clock — move fast to pressure the others; dead-end or let your clock run out and you're eliminated, last standing wins) or as a race to a target, ranked by how fast you reach it. Rematch or go back to the lobby without re-connecting. No accounts, no server; the display name you set on the Nearby screen is the only identity, and a duel leaves no records behind.
  • New: iCloud sync (opt-in, off by default) — best scores and the daily streak follow you across your devices; games and replays stay local.
  • New: dead-gap markers — the board faintly flags gaps you've permanently closed off between two lines, where a line can never be drawn again; the replay also points to the move that sealed each one.
  • New: full keyboard control — play and navigate the whole app without a mouse. Arrows/WASD roam the board, Enter places and picks a line, Backspace undoes; every screen (New Game, Settings, History, replay, the Nearby lobby and duel board) navigates by arrows, and every ⌘-shortcut sits in the menu bar where you can find it. Press ? for a board cheatsheet.
  • New: the New Game modal (⌘N) — pick a variant, a random start, or enter a challenge code in one place; an accidental restart or new game is undoable until your first move on the fresh board.
  • New (macOS): Settings is a standard sheet (⌘,) rather than a tab, and the native View menu switches tabs.
  • New: the app icon, generated by the game's own drawing code — a legal line field with a "5" carved out of it in negative space, in light/dark/tinted variants.
  • New: How to play in the app — an illustrated guide to the rules, drawn by the board's own code, reached from the ? button on the board; plus an About screen, and every build carries the commit it came from.
  • New: Reset progress in Settings — clears bests, replays, the daily streak and any game in progress, on this device or across your iCloud.
  • New: feel the board — slide a finger and it buzzes wherever a dot can go, so you can hunt for a move without looking; on iPad a hardware keyboard plays the board like the Mac does. A placement that can't work says so where you tapped, instead of nothing happening.
  • New: the release lane (make release) and internal TestFlight distribution.

0.4.0 — variants & shareable challenges

  • New: rule variants — the classic 5T, disjoint 5D, the fully solved short 4T/4D on a smaller cross, and the relaxed 5T+ (free lines legal). Bests, ghosts, and records are tracked per variant.
  • New: seeded starts — a fresh symmetric board generated from a short challenge code; Random Start deals one, Enter Code / Scan Code play a friend's. No server — the code is the whole challenge.
  • New: challenge links & QR at lattice.misaki.fi/c/<code> — open one to jump straight into the board; the site shows the code without the app.
  • Changed: the daily now generates a different board every date (still classic 5T), instead of always the standard cross.

0.3.0 — replay & analysis

  • New: a replay viewer — scrub or autoplay through any finished game.
  • New: post-game analysis — the openness curve (legal moves per turn) charted under the replay, so you can see where the position peaked and died.
  • New: a personal-best ghost — a live game races its openness against your best game's curve.

0.2.0 — persistence, daily & history

  • New: the daily challenge — one shared board per local date, one attempt, one undo per move, with a streak (and longest-streak) tracker.
  • New: a share card — a finished game exported as an ink-on-paper image, saved or shared.
  • New: the History tab — every finished game on a per-variant score-over-time chart plus a games list.
  • New: persistence — the game in progress survives quitting, and every finished game is kept as a full replay.

0.1.0 — the core, playable

  • New: the rules engine (5T/5D) with exhaustive tests, and playable solitaire on iPhone, iPad, and Mac.
  • New: the two-stage board input (tap a point → pick a candidate line), monochrome rendering with open-frontier coding, and a clamped pan/zoom camera.

Related

Shares lineage (and several reusable engine ideas) with Donpa Squad — a manga-styled Minesweeper by the same author — but is a separate codebase: reusable seams were copied and adapted, not shared as a package.

License

MIT. See LICENSE.

About

Morpion Solitaire (Join Five) for iPhone, iPad & Mac — daily boards, five variants, replays, and local multiplayer.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages