{"id":29022605,"url":"https://github.com/schaoss/wall-go","last_synced_at":"2025-06-26T03:02:25.360Z","repository":{"id":294797332,"uuid":"988085234","full_name":"schaoss/wall-go","owner":"schaoss","description":"Browser remake of “Wall Go” – the 7×7 wall-building strategy game from Devil’s Plan 2","archived":false,"fork":false,"pushed_at":"2025-06-01T08:03:05.000Z","size":5302,"stargazers_count":17,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-01T16:43:32.438Z","etag":null,"topics":["board-game","browser-game","bun","devils-plan","game","react","strategy-game","tailwindcss","typescript","vite","vitest","wall-go","zustand"],"latest_commit_sha":null,"homepage":"https://schaoss.github.io/wall-go/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schaoss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-22T03:14:48.000Z","updated_at":"2025-06-01T12:32:31.000Z","dependencies_parsed_at":"2025-05-22T05:37:04.226Z","dependency_job_id":null,"html_url":"https://github.com/schaoss/wall-go","commit_stats":null,"previous_names":["schaoss/wall-go"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/schaoss/wall-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schaoss%2Fwall-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schaoss%2Fwall-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schaoss%2Fwall-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schaoss%2Fwall-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schaoss","download_url":"https://codeload.github.com/schaoss/wall-go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schaoss%2Fwall-go/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261990277,"owners_count":23241185,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["board-game","browser-game","bun","devils-plan","game","react","strategy-game","tailwindcss","typescript","vite","vitest","wall-go","zustand"],"created_at":"2025-06-26T03:02:24.686Z","updated_at":"2025-06-26T03:02:25.315Z","avatar_url":"https://github.com/schaoss.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wall‑Go 🧱♟️\n\n![cover](https://schaoss.github.io/wall-go/cover.png)\n\n\u003e Wall Go (牆壁圍棋) – Free, open-source online strategy board game inspired by Devil’s Plan 2. Supports 2–4 players, solo (AI) or with friends, territory scoring, undo/redo, and a modern UI. [Wall Go, Devil's Plan, React, TypeScript, GitHub, board game, browser game]\n\n## Features\n\n- 7×7 board, move and wall mechanics faithfully implemented\n- 2–4 player support: solo (AI), two-player, three-player, or four-player\n- Multi-language UI: English, 繁體中文, 简体中文, 日本語, 한국어, Español\n- Modern, responsive UI (Tailwind CSS v4), mobile-friendly\n- Robust undo/redo (Zustand snapshot time travel)\n- All static text fully internationalized (i18next)\n- SEO meta tags and social sharing optimized (react-helmet-async)\n- All core logic covered by unit tests (Vitest)\n- Static build, deployable to GitHub Pages or any static host\n\n---\n\n## Game Overview\n\n- Supports 2–4 players (AI or human)\n- **Placing phase**: players alternate placing stones (fixed start for 2P, special order for 3/4P)\n- **Playing phase**: select a stone, move up to 2 steps (orthogonal only), then build a wall\n- **Walls**: unlimited, color-coded; 2P walls cannot be removed, 3/4P each player has one wall-break per game\n- **Time limit**: 90 seconds per turn (auto-wall if timeout)\n- **End**: when all stones are in separate territories\n- **Scoring**: each territory cell = 1pt; if tied, largest single territory wins; if still tied, draw\n- Undo/redo at any time\n- Rules dialog and accessibility labels fully localized\n- AI difficulty and side selection\n\n---\n\n## Main File Structure\n\n- `src/App.tsx`: Main UI and state flow\n- `src/store/index.ts`: Core game state, undo/redo, all actions\n- `src/agents/*`: AI logic\n- `src/components/Board/Board.tsx`, `Cell.tsx`: Board and cell interaction\n- `src/components/SeoHelmet.tsx`: SEO meta tags\n- `src/locales/*`: Language files\n- `src/utils/checkGameEnd.ts`, `territory.ts`: Territory and scoring logic\n- `src/store/gameStore.test.ts`, `utils/checkGameEnd.test.ts`: Unit tests\n\n---\n\n## Tech Stack\n\n- **React 19** / **TypeScript**\n- **Zustand** (state, undo/redo)\n- **Vite** (build)\n- **Tailwind CSS v4** (UI)\n- **Bun** (dev server, package management)\n- **Vitest** (unit tests)\n- **i18next / react-i18next** (internationalization)\n- **react-helmet-async** (SEO)\n\n---\n\n## Quick Start\n\n```bash\nbun install\nbun run dev\n```\n\nOpen [http://localhost:5173](http://localhost:5173) to start playing!\n\n---\n\n## Tips\n\n- Use the main menu to switch between single-player and two-player modes\n- Click ☀️/🌙 to toggle dark/light mode\n- Use Undo/Redo to revert or redo moves\n- Play again after the game ends\n- Switch language from the menu (EN/Han)\n\n---\n\n## Customization\n\n- **Board size**: `BOARD_SIZE` in `src/lib/types.ts`\n- **Player colors**: `playerColorClass()` in `src/lib/color.ts` + Tailwind safelist\n- **Stones per player**: `STONES_PER_PLAYER` in `src/lib/types.ts`\n- **Number of players**: Edit `PLAYER_LIST` in `src/lib/types.ts`\n- **Add new language**: Add JSON to `src/locales/` and update `src/i18n.ts`\n\n---\n\n## Roadmap\n\n- [x] 7×7 board, move \u0026 wall mechanics\n- [x] Undo/redo (Zustand snapshot)\n- [x] Multi-language UI (EN, 繁中, 简中, JA, KO, ES)\n- [x] Modern, mobile-friendly UI\n- [x] AI (basic random/minimax)\n- [x] Rules dialog, accessibility\n- [x] Territory scoring, auto end\n- [x] Unit tests (core logic)\n- [x] Static build \u0026 deploy\n- [x] AI improvements (🚧 WIP)\n  - [x] Update territory evaluation\n  - [x] Strategy enhancements\n  - [ ] New strategies\n- [x] 90-second turn timer\n- [ ] Online multiplayer mode\n- [ ] 3/4 player mode\nand more!\n\n---\n\n## License\n\nMIT © 2025 Gary Chu\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschaoss%2Fwall-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschaoss%2Fwall-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschaoss%2Fwall-go/lists"}