A fresh 9×9 map every day. Place your castle, farmers, knights and bishops, claim land and gold, earn three stars and climb today's leaderboard. https://www.reddit.com/r/Ninelands/
Find a file
Lukas Müllner 339fa01466 docs: Bildunterschriften für die Devpost-Galerie
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-14 10:38:09 +01:00
.github fix(ci): parallel-Stufe durch einzelne Schritte ersetzen (Forgejo) 2026-11-13 14:41:52 +01:00
.vscode chore: Devvit-Vorlage Bare und CLAUDE.md 2026-11-13 14:38:53 +01:00
docs docs: Bildunterschriften für die Devpost-Galerie 2026-11-14 10:38:09 +01:00
public fix: Realm im Vollbild öffnen – im Inline-Post war „Done“ am Handy unerreichbar 2026-11-13 21:35:18 +01:00
scripts fix(trailer): „Done“ im Realm ist kein Hauptknopf mehr 2026-11-14 10:20:02 +01:00
src fix: „Faction“ statt „People“ in Spiel, Bildern und Posts 2026-11-14 10:11:22 +01:00
.gitignore feat(client): Startbildschirm, Spielansicht und Ergebniskarte mit dem Brett aus Ninelands 2026-11-13 16:37:40 +01:00
.nvmrc chore: Devvit-Vorlage Bare und CLAUDE.md 2026-11-13 14:38:53 +01:00
biome.jsonc feat(client): Startbildschirm, Spielansicht und Ergebniskarte mit dem Brett aus Ninelands 2026-11-13 16:37:40 +01:00
CLAUDE.md docs: r/Ninelands angelegt, App erst zum Go-live installieren 2026-11-13 21:36:32 +01:00
CREDITS.md docs: PLAN.md, Lizenz GPL-3.0, CREDITS.md 2026-11-13 15:45:14 +01:00
devvit.json fix: Realm im Vollbild öffnen – im Inline-Post war „Done“ am Handy unerreichbar 2026-11-13 21:35:18 +01:00
LICENSE docs: PLAN.md, Lizenz GPL-3.0, CREDITS.md 2026-11-13 15:45:14 +01:00
LICENSE-TEMPLATE.md docs: PLAN.md, Lizenz GPL-3.0, CREDITS.md 2026-11-13 15:45:14 +01:00
package-lock.json feat: Devvit Journeys (App.Ready, Start bei der Burg, Sterne als Fortschritt, Ende mit Gold) 2026-11-13 17:24:51 +01:00
package.json feat: Bilder und Texte für die Community-Posts in r/Ninelands 2026-11-13 21:41:46 +01:00
PLAN.md fix: „Faction“ statt „People“ in Spiel, Bildern und Posts 2026-11-14 10:11:22 +01:00
README.md docs: README für Spieler und Moderatoren; Nutzerdaten laufen nach 30 Tagen ab 2026-11-13 17:26:36 +01:00
tsconfig.base.json chore: Devvit-Vorlage Bare und CLAUDE.md 2026-11-13 14:38:53 +01:00
tsconfig.json feat: Engine-Kopie von Ninelands v0.11.0, Tageskarte mit eigenem Seed, Assets 2026-11-13 16:02:11 +01:00

Ninelands – a daily strategy puzzle for Reddit

Ninelands is a bite-sized strategy game that lives inside a Reddit post. Every day brings a fresh 9×9 map that is the same for everyone. Build your realm piece by piece, claim lands and gold, chase three stars and climb today's leaderboard – then compare your realm with the community in the comments.

It is a port of Ninelands, a strategy board game by StackTeam that runs on the web, desktop, Android and itch.io. The Reddit edition is a new, focused daily mode built on Devvit Web for the Reddit Game of the Day 2026 hackathon.

How to play

  1. Open today's post and press Play.

  2. Place your castle. It is free and founds your realm. It claims land in straight lines (up to 5 cells) – nothing can be built on claimed land afterwards.

  3. Grow your realm. Every new piece must connect to the land you already hold:

    Piece Cost Claims Rules
    Castle free straight lines, reach 5, crosses borders only one, placed first, not in the moor
    Farmer free the 8 surrounding cells in its own land must border your land directly, in the same land
    Knight 10 straight lines, reach 2, stops at the land border must touch your land in the same land · 2× yield
    Bishop 15 diagonal lines, reach 2, crosses borders must touch your land
  4. Earn gold. Ore (mountains) and herbs (moor) pay 20 gold, every claimed pasture cell 5 (7 in a land with a lake). Knights pay double. Building costs are deducted.

  5. Rule lands. The board is split into 9 lands; you rule a land once you claim at least half of it.

  6. Finish. The game ends when no move is left – or whenever you press End game (tap twice). If no remaining move earns gold, the game suggests ending.

Every map has one law of the realm that changes the rules a little (e.g. Costly knights, One farm per land). Hover or tap a cell to preview what a piece would claim and how much gold it brings; the line below the board explains why a cell does or doesn't fit.

Stars, leaderboard and streaks

  • Three stars per map: reach the gold target, rule the lands target, and both in the same game. Targets are computed from computer games on that very map, so every day and every law is fair.
  • Only your first game counts. You may play again for practice; it won't change your result.
  • Leaderboard: more stars first, then more gold; on a tie the earlier submission wins. The server replays every submitted game with the same engine and computes gold and stars itself – results cannot be faked.
  • Streak: play the map of the day on consecutive days. Older posts can still be played, but only today's map keeps your streak alive.
  • Share your result line (Ninelands #12 ★★☆ · 8/9 lands · 85 gold) and discuss strategies in the comments.

Features

  • A new post every day at 00:01 UTC (Devvit scheduler) with its own map, leaderboard and comment thread.
  • Inline start screen in the feed (map preview, law of the day, goals or your result, streak, top 3) and the full board in expanded mode.
  • Mobile first: tap once to preview, tap again to place. Music starts only after your first tap and can be muted.
  • Devvit Journeys: app ready, journey start when the castle is placed, a progress event per star, end with gold as score.

For moderators: setup

  1. Install the app in your subreddit from its page on developers.reddit.com.
  2. That's it. On installation the app creates today's post. After that it posts a new map automatically every day at 00:01 UTC – no manual work needed.
  3. If a daily post is ever missing, open the subreddit's mod menu (⋯) and choose “Ninelands: create today's post”. It never creates a duplicate.

Each subreddit has its own leaderboards and streaks. There is nothing to configure.

Privacy

The app stores only what the game needs: your Reddit user ID and name with your first result per day (for the leaderboard) and your streak statistics. All of it expires automatically 30 days after your last game. No data leaves Reddit.

Development

Built from the Devvit template Bare: TypeScript, esbuild, Biome, node --test.

npm install
npm run test       # types, lint, unit tests, build
npm run playtest   # build, upload and install in the test subreddit
npm run capture    # record the catalog assets (video, GIF, stills) into dist/marketing/
  • src/client/ – start screen (splash) and game (game)
  • src/server/ – endpoints: day state, verified submission, leaderboard, streak, daily post, journeys
  • src/shared/ – API types and the daily map (seed from the UTC date)
  • src/engine/ – the Ninelands engine and board renderer, copied unchanged from a tagged release by scripts/sync-engine.sh (see src/engine/VERSION)

Credits

  • Music: “Dreamscape (part I)” by Vee Ray – CC BY-SA 4.0 (re-encoded)
  • Graphics: “Mini World Sprites” by Shade and octoshrimpy – CC0
  • Font: Pixelify Sans – SIL Open Font License 1.1
  • Project skeleton: Devvit template “Bare” © Reddit Inc. – BSD-3-Clause

Details in CREDITS.md.

License

GPL-3.0 – see LICENSE. The template parts remain under BSD-3-Clause (LICENSE-TEMPLATE.md).