Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FLOE

A two-player abstract strategy game I designed to have no luck and no draws — ever.

License: All Rights Reserved Players: 2 Luck: none Draws: impossible Status: v1.0

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.

Play it now

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.

Print & play

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.

The rules in 20 seconds

  • 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.

Why it holds up

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.

Verify it yourself

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 rules

I 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

What's in here

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

Status

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.

License

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.

About

Floe - an original two-player abstract strategy game with no luck and no draws. Spread your floe, freeze the water, lock your opponent in. Proprietary, all rights reserved.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages