A two-player abstract strategy game I designed to have no luck and no draws — ever.
Two ice floes spread across freezing water. On your turn you grow your floe onto an open cell and may freeze one cell of water solid. The first player who, on their turn, has no open water left beside their floe is locked in and loses. That's the whole game — and by design it can never draw, never loop forever, and never reward the player who happens to move first.
I built FLOE from the rules up to fix the things that quietly spoil a lot of classic games: dull draws, runaway leaders, sessions that drag or loop, and openings a computer can just memorize. Everything I made for it — the game, a digital version, a print-and-play kit, and the engine I used to stress-test the design — lives in this repo.
Open play/index.html in any modern browser. I kept it to a single self-contained file: no dependencies, no build step, nothing to install, and nothing stored or sent anywhere. It's hotseat two-player, with legal moves highlighted, the swap rule, automatic win detection, an undo, a board-size toggle, and a running move record.
I put together a five-page print-and-play kit at docs/FLOE_print_and_play.pdf — cover, full rules, a print-ready coordinate board, the math, a recorded sample game, variants, and a quick-reference card. Print it on any home printer and use beads, coins, or counters for stones and frost.
- Spread (required): place one stone on an open-water cell touching your floe. Your first stone may go anywhere. Can't spread? You lose.
- Freeze (optional): drop one neutral frost marker on any open cell anywhere — it's frozen for good, blocking both players.
- Opening: Glacier moves first; Ember may Swap on its first turn only, stealing the opening. That's the piece that keeps the game fair.
- Win: be the last player able to spread. No score to tally, no luck, no draws.
The full rulebook and the reasoning behind every rule is in docs/RULEBOOK.md.
I designed each rule to kill a specific way games fail, and I checked the claims by simulation rather than just asserting them:
- No draws — ever. Turns alternate and "can't move = you lose," so no position can end with nobody losing.
- Always ends, never loops. Every turn permanently removes at least one open cell, so the count strictly falls to zero in at most 61 turns.
- Fair to both sides. A strategy-stealing argument plus the swap (pie) rule cancels first-player advantage — the same trick that makes Hex provably fair, here with zero randomness.
- Hard to "solve." Around 5 × 1036 board states and 230–520 legal options per early turn (for comparison, fully-solved checkers has about 5 × 1020).
- No runaway leader. Nothing is scored until someone is sealed in, so a trailing player claws back by freezing the leader's frontier. It stays tense to the end.
You don't have to take my word for any of that:
python engine/floe_engine.py # my reference engine + verification suite
node engine/logic_test.js # an independent re-check of the rulesI ran the rules through two separate engines so the check wasn't just my own code agreeing with itself. With fixed seeds, the numbers reproduce exactly:
| Test | Result |
|---|---|
| 5,500 random games | 0 draws / stalls / loops |
| Avg game length (side 5) | ~33 plies |
| First-player win, random play | 51.1% |
| First-player win, strong play, no swap | 81.3% (exactly why the swap rule is in) |
| Second engine, 3,000 games | 0 draws, swap path clean |
floe/
├── play/
│ └── index.html # the playable game (open this)
├── docs/
│ ├── RULEBOOK.md # full rules + the reasoning
│ ├── FLOE_print_and_play.pdf # 5-page print-and-play kit
│ └── sample_game.txt # a recorded game in notation
├── assets/
│ ├── board_coordinates.svg # labelled board (A1–I5)
│ └── board_blank.svg # unlabelled board
├── engine/
│ ├── floe_engine.py # reference rules engine + verification
│ └── logic_test.js # independent rules check (Node)
├── LICENSE # proprietary — All Rights Reserved
└── README.md
v1.0 is complete and playable. Everything above is either true by construction or confirmed in simulation — with one honest exception: I haven't yet put it through enough skilled human play to be certain about long-term balance and depth. FLOE isn't "solved," and I'm not pretending it is. Next on my list is a structured playtest across the different board sizes.
FLOE is proprietary — All Rights Reserved. You're welcome to look around, but please don't copy, modify, redistribute, or build on it without my written permission. I'm not accepting outside contributions or derivative works — see CONTRIBUTING.md. For licensing, publishing, or distribution, reach me at ideatrino@proton.me. Full terms are in LICENSE.
Copyright © 2026 Ideatrino. All Rights Reserved.