It follows the same rules as Minesweeper. However, the map expands infinitely, and you can play with oher people in this website!
This project is an online multiplayer version of Minesweeper, where the map expands infinitely. Players can join and play together in real-time, making it a unique and engaging experience compared to the traditional single-player Minesweeper game.
- Infinite Map: The game map expands infinitely as you explore.
- Multiplayer: Play with other people in real-time.
- Chat: Press Enter and Chat with other players.
- Real-time Updates: See the moves of other players instantly.
- Frontend: Next.js, Zustand, Scss, Pixi/react
- Backend: FastAPI
- WebSocket: For real-time communication
- Tile engine: Rust (WebAssembly) for fast tile parsing and diff; falls back to JS if WASM is not ready.
- /src: Frontend source (app, components, store, utils). Built WASM bindings live in
src/wasm-pkg/. - /wasm: Rust source for the WebAssembly tile engine (hex/binary parsing + diff). Build output is in
src/wasm-pkg/;wasm/target/is gitignored. - /public: Static files and assets.
- /public/documents: Documents for contributing.
Let's play the game here.
Here's more information to contribute this project: https://gamultong.github.io/gamulpung-client/documents/contribute-guide/?lang=en#overviewofcontributersguide
If you want to contribute this project, Follow these steps.
- Navigate to the GitHub repository you want to fork.
- In the top-right corner of the repository page, click the "Fork" button.
- GitHub will create a copy of the repository in your own GitHub account.
- You can now clone the forked repository to your local machine using the following command:
git clone https://github.com/your-username/minesweeper-client.git- Make changes to the code in your local repository.
- Commit and push your changes to your forked repository on GitHub.
- If you want to contribute your changes back to the original repository, create a pull request:
- Go to your forked repository on GitHub.
- Click the "Pull Request" button.
- Compare your changes with the original repository.
- Add a title and description for your pull request.
- Click "Create Pull Request".
- Setting Environments
node >= 20.10
npm >= 10.9
In .env file, There are two environment values.
NEXT_PUBLIC_WS_HOST =
NEXT_PUBLIC_HOST = "http://localhost:2001/gamulpung-client"
Mail me to get websocket host url: Email: kkh061101@naver.com
- Install Dependencies.
npm install - Run Development Server.
npm run dev- Test Linting Codes Before Building.
npm run lint-
Building with the WASM tile engine
The repo includes pre-built WASM insrc/wasm-pkg/, so you can run and build the app without Rust. If you change code in/wasm(Rust), install Rust and wasm-pack, then build:Install Rust (one-time):
# Windows (PowerShell) winget install Rustlang.Rustup # Or: https://rustup.rs/ — download and run the installer for your OS.
# macOS / Linux curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Restart the terminal (or run
source $HOME/.cargo/envon macOS/Linux) socargois on your PATH.Install wasm-pack (one-time):
cargo install wasm-pack
Build the WASM package (when you change
/wasm):cd wasm && wasm-pack build --target web --release --out-dir ../src/wasm-pkg
CI (GitHub Actions) runs the Rust + wasm-pack setup and this build before
npm run buildon every push/PR, so the deployed site always uses an up-to-date WASM build.