🧩 About the Project — KeyMaze Daily
Inspiration
Puzzle games that rely on fast reflexes often reward repetition more than thinking. I wanted to build something quieter and stricter — a game where one bad move matters, and planning is more important than speed. KeyMaze Daily was inspired by classic grid-based logic puzzles and daily challenges like chess problems and newspaper riddles, where a single decision can define the outcome.
What it does
KeyMaze Daily is a daily 2D maze puzzle where players must collect required items and unlock passages using limited movement. Each puzzle is:
- Generated once per day
- Guaranteed to be solvable
- Designed to punish careless exploration
The goal is simple: think first, move second.
How I built it
The game is built as a 2D grid-based system where each cell encodes walls, paths, collectibles, and locked exits.
Key technical components:
- Deterministic daily puzzle generation using a date-based seed
- Movement constrained to grid adjacency (no diagonal shortcuts)
- Automatic solvability validation using Dijkstra’s algorithm
- Pre-submission checks to ensure the exit remains reachable after item placement
To verify solvability, the shortest path to the exit is calculated:
[ d(v) = \min_{u \in \text{adj}(v)} (d(u) + w(u, v)) ]
If no valid path exists, the maze is regenerated before being released.
Challenges I faced
- Balancing difficulty: Small grids can become trivial, while larger ones can overwhelm players.
- Preventing soft-locks: Random item placement can accidentally block progression if not validated.
- Designing meaningful constraints: Limited moves must feel fair, not arbitrary.
- Scope control: Keeping the game minimal while still engaging was harder than adding features.
What I learned
- Constraint-driven design often creates deeper gameplay than complexity
- Validating game states is just as important as generating them
- Simple mechanics become interesting when consequences are permanent
- “Less” is a design choice, not a limitation
Log in or sign up for Devpost to join the conversation.