Masqagrid is a Boolean logic puzzle game created during Global Game Jam 2026 at the ETH Zurich site. Players drag shape pieces onto a grid to cover and uncover symbols, aiming to satisfy specific win conditions.
- Boolean Logic Mechanic: Merge pieces using UNION (OR), XOR (Exclusive OR), and INTERSECT (AND) operations.
- Dynamic Rules: Satisfy dynamic win conditions based on "Allowed" and "Disallowed" symbol regions.
- Puzzle Elements:
- Main Region: The primary puzzle area.
- Inventory: Starting area for pieces.
- Rule Regions: Visual constraints for victory.
- Tech Stack: Built with Next.js 16, React 19, TypeScript, TailwindCSS, and Electron.
- Framework: Next.js (App Router) & Electron
- Styling: Tailwind CSS
- Node.js
- pnpm (recommended), npm, or yarn
-
Clone the repository:
git clone <repository-url> cd masqagrid
-
Install dependencies:
pnpm install
To start the development server (Web):
pnpm devTo open the Electron app in development mode:
npm run dev:electronTo build the application for production:
# Build for web
npm run build:nextjs
# Build for Electron (Mac)
npm run build:mac
# Build for Electron (Windows)
npm run build:win
# Build for Electron (Linux)
npm run build:linux- Drag & Drop: Move pieces from the inventory to the grid.
- R: Rotate the currently dragged piece 90° clockwise.
- F: Flip the currently dragged piece horizontally.
- Z: Undo the last move.
- C: Reset the level.
Masqagrid includes a built-in level editor for creating custom puzzles.
Navigate to /editor in your browser (e.g., http://localhost:3000/editor).
- Design: Use the editor tools to paint the grid, set symbol streams, and place initial pieces.
- Validate: Click "Validate" to ensure the level is solvable and rules are consistent.
- Export: Click "Export" to generate the level code.
- Save: Download the generated
.tsfile or copy the code. - Add to Game: Place the file in the
app/levels/directory.- The game automatically loads all
.tsfiles in this directory. - No manual registration in
index.tsis required.
- The game automatically loads all
This project is licensed under the LGPL-2.1 License.