Skip to content

ziap/infinite-minesweeper

Repository files navigation

Infinite Minesweeper

Minesweeper on an infinite board

Design goals

We want the game to be tiny, simple, and accessible. So we decided to make it on the web, with no dependencies other than the standard web API. That means we won't use:

  • Any game engine (like Phaser or Unity)
  • Any UI framework (like React or Vue)
  • Any Canvas library (like Pixi.js or P5.js)
  • Any preprocessor (like Sass or TypeScript)

Some other things we wanted to keep in mind:

  • 📱 Mobile support is built-in. So the app must be:

    • 📐 Responsive.
    • 🚀 Fast enough to run on a mobile device.
    • 🎮 Touch-friendly. (support both touch and mouse input)
  • ✨ Decent, presentable graphics, animations, and UI.

  • 📊 Clean, optimized, well-documented, heavily tested code.

Instructions

How to play

Go to the website or clone the project and run the HTML file.

Controls

Desktop

  • Click and drag to move
  • Scroll the mouse wheel to zoom

Mobile

  • Tap and drag to move
  • Pinch to zoom

Actions

  • Left-click or tap to reveal a tile
  • Right-click to mark a cell as a mine
  • Toggle between reveal and mark with the flag button

Earn points by revealing tiles without a mine.

Features

☑️ Done 🚧 In progress 📌 Planned
2D infinite scrolling grid PWA support Record gameplays
Randomly placed mines High scores
Mobile support Local leaderboard
Animations
SFX
Menu system
Multiple game modes

💡 May or may not be implemented

  • Online leaderboards/multiplayer
  • Seed based randomization
  • Improve performance with WebGL/WebWorkers/WebAssembly (Rust/C++)
  • Native desktop port with Rust and SDL2

Made with

License

This app is licensed under the AGPL-3.0 license.