|
| 1 | +# Godoku |
| 2 | +A rudimentary implementation of Sudoku made in Godot that puts code structure first. |
| 3 | + |
| 4 | +<img width="1144" height="638" alt="image" src="https://github.com/user-attachments/assets/92de1286-98eb-4032-aa47-6122b463b092" /> |
| 5 | + |
| 6 | +> [!NOTE] |
| 7 | +> GUI is not finalized, all art shown is placeholder. |
| 8 | +
|
| 9 | +## Features: |
| 10 | +- Playable sudoku |
| 11 | +- Candidate marking |
| 12 | +- Board highlighting |
| 13 | + - Custom highlighting options |
| 14 | +- 800,000+ Unique puzzles[^1] |
| 15 | +- Ability to play puzzles not included via a [board code](#board-codes) |
| 16 | + |
| 17 | +## Roadmap: |
| 18 | +- Major UI overhaul |
| 19 | +- Game saving |
| 20 | +- Hotkeys |
| 21 | +- SFX |
| 22 | +- Reworked Board Codes |
| 23 | +- Multiple candidate display types |
| 24 | +- Multiplayer[^2] |
| 25 | +- Multiple puzzle types (N x N board size, killer, crazy, etc.) |
| 26 | +- Dynamic board generation[^3] |
| 27 | + |
| 28 | +### Got an idea? |
| 29 | +If you've got any ideas that aren't currently outlined in the roadmap and that aren't available in the game itself, make a feature request. Is it on the roadmap? Still let me know, I want to know what people want. |
| 30 | + |
| 31 | +## Board Codes |
| 32 | +Board codes take the following format: |
| 33 | +81 digit-long string of numbers from 0 to 9, representing digits from top to bottom, left to right in the board. |
| 34 | + |
| 35 | +Example string: |
| 36 | +000200160561309020400006050047060031000802000320070680010600008030507412075008000 |
| 37 | + |
| 38 | +Example board:\ |
| 39 | +\ |
| 40 | +0 0 0 2 0 0 1 6 0\ |
| 41 | +5 6 1 3 0 9 0 2 0\ |
| 42 | +4 0 0 0 0 6 0 5 0\ |
| 43 | +0 4 7 0 6 0 0 3 1\ |
| 44 | +0 0 0 8 0 2 0 0 0\ |
| 45 | +3 2 0 0 7 0 6 8 0\ |
| 46 | +0 1 0 6 0 0 0 0 8\ |
| 47 | +0 3 0 5 0 7 4 1 2\ |
| 48 | +0 7 5 0 0 8 0 0 0 |
| 49 | + |
| 50 | +> [!NOTE] |
| 51 | +> There is no agreed-upon way to represent sudoku boards as a string, this format will likely change to allow for a more dynamic and customizable sharing / storing of puzzles in the future. |
| 52 | +
|
| 53 | +[^1]: This project makes use of [this](https://github.com/grantm/sudoku-exchange-puzzle-bank) public domain sudoku puzzle dataset. |
| 54 | +[^2]: This project was at one point refactored to better anticipate a code structure that supports multiplayer, but that "solution" ended up not being viable due to limitations / [security concerns](https://github.com/godotengine/godot-proposals/issues/7653) with the engine. I am still trying to figure out the best way to implement this (let me know). |
| 55 | +[^3]: Once functional, this project will generate its puzzles directly, or have a list of puzzles compiled by [this](https://github.com/henbotb/SudokuGenerator) generator. This will also allow for custom generated N x N puzzles. |
| 56 | + |
| 57 | + |
0 commit comments