Skip to content

KaelanWillauer/Strata

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Strata

Strata is a hidden-objective structural strategy game played on a 6×6 grid.

Each player secretly selects (or receives) a scoring metric and attempts to shape the board to maximize their own objective — while also benefiting from the opponent’s metric at double value.


🎯 Core Concept

At the end of the game:

Your Score =
    Your pieces under your metric
  + 2× (Your pieces under opponent’s metric)

You must:

  • Build toward your goal
  • Infer your opponent’s goal
  • Shape the board to exploit the 2× multiplier

Strata rewards:

  • Structure
  • Deception
  • Spatial intuition
  • Pattern recognition

🕹️ How to Play

  • Board size: 6×6
  • Players: X (human) vs O (bot)
  • Turns: 10 each
  • On your turn:
    • Place a piece on any empty square
    • OR remove any piece from the board
  • When both players complete 10 turns → scoring is revealed

📊 Metrics

Each player uses one hidden metric.

🔗 Joint

Count orthogonal (up/down/left/right) connections between your pieces. Each touching edge between two of your pieces counts as 1.

🧍 Disjoint

Count pieces that have no orthogonal same-piece neighbors. (Diagonal does not matter.)

🧱 Edge

Count your pieces on the outer border of the board.

🎯 Center

Count your pieces in the central 2×2 zone.

🏰 Enclosure

Your pieces act as walls. Any region (empty or opponent pieces) that cannot reach the board edge without crossing your pieces is considered enclosed.

Enclosure Score =
    (# enclosed cells)
  + (# unique fence pieces touching that region)

Example: a 3×3 ring enclosing 1 cell uses 8 fence pieces → 1 + 8 = 9 points.


🤖 The Bot

The bot:

  • Optimizes its own metric
  • Uses heuristic evaluation
  • Includes slight randomness to avoid deterministic play
  • Does not know your metric

Strata is intentionally designed so that reading the bot’s structural tendencies becomes part of the strategy.


🧩 Design Philosophy

Strata explores:

  • Hidden-objective tension
  • Emergent spatial structures
  • Cross-metric exploitation
  • Minimal rules → deep outcomes

The game is intentionally:

  • Simple to learn
  • Transparent in scoring
  • Structurally deep

🛠️ Tech Stack

  • Astro
  • Vanilla JavaScript
  • Static deployment
  • GitHub Pages hosting

🚀 Development

Run locally:

npm install
npm run dev

Build for production:

npm run build

Deploy (manual gh-pages flow):

npm run deploy

🔮 Future Ideas

  • Metric inference difficulty modes
  • Personality-based bots
  • Multiplayer mode
  • Adjustable board sizes
  • Visualization overlays
  • Tournament scoring variants

📜 License

MIT

Astro Starter Kit: Basics

npm create astro@latest -- --template basics

🧑‍🚀 Seasoned astronaut? Delete this file. Have fun!

🚀 Project Structure

Inside of your Astro project, you'll see the following folders and files:

/
├── public/
│   └── favicon.svg
├── src
│   ├── assets
│   │   └── astro.svg
│   ├── components
│   │   └── Welcome.astro
│   ├── layouts
│   │   └── Layout.astro
│   └── pages
│       └── index.astro
└── package.json

To learn more about the folder structure of an Astro project, refer to our guide on project structure.

🧞 Commands

All commands are run from the root of the project, from a terminal:

Command Action
npm install Installs dependencies
npm run dev Starts local dev server at localhost:4321
npm run build Build your production site to ./dist/
npm run preview Preview your build locally, before deploying
npm run astro ... Run CLI commands like astro add, astro check
npm run astro -- --help Get help using the Astro CLI

👀 Want to learn more?

Feel free to check our documentation or jump into our Discord server.

About

A simple game of structural deception

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors