Inspiration

Whenever I played puzzle games, I noticed I quickly lost interest if I did not like the image being used. Puzzle games are meant to reduce stress, but when the content feels forced, the experience becomes boring instead of relaxing. I realized many people want to solve puzzles that are personally meaningful.

This inspired me to build a puzzle game where users can choose or upload their own images. If a player connects emotionally with an image — a memory, a person, or a favorite moment — the experience becomes more engaging and calming.

The core idea behind the project is:

[ \text{Personal Connection} \rightarrow \text{Higher Engagement} \rightarrow \text{Stress Reduction} ]


What it does

This project is a customizable jigsaw puzzle game that allows players to:

  • Play puzzles organized into collections and levels
  • Earn points by completing puzzles
  • Unlock new levels progressively
  • Upload personal images and convert them into puzzles
  • Drag and place puzzle pieces with snapping behavior
  • Experience a simple and engaging puzzle-solving environment

Instead of fixed difficulty modes, the challenge increases naturally as levels progress.


How we built it

The project was developed as an interactive puzzle application. A major part of the development process involved using AI Studio and Gemini to support idea generation, structure logic, and guide implementation.

The system works through the following process:

  1. The selected image is resized to a standard dimension.
  2. The image is divided into puzzle pieces.
  3. Puzzle pieces are randomly scattered.
  4. Players drag pieces to reconstruct the original image.
  5. A snapping mechanism detects correct placement using a distance threshold:

[ \sqrt{(x - x_c)^2 + (y - y_c)^2} < \epsilon ]

where
( (x, y) ) is the current position,
( (x_c, y_c) ) is the correct position,
and ( \epsilon ) is the snapping tolerance.

Completing a puzzle awards points that unlock new levels.


Challenges we ran into

One major challenge was implementing accurate snapping behavior so that pieces attach correctly without false matches. This required careful tuning of positional tolerance.

Handling different user-uploaded image sizes was another challenge. Images needed to be resized and normalized before splitting them into puzzle pieces.

Designing a smooth drag-and-drop interaction while maintaining performance was also a technical challenge. Additionally, creating progressive difficulty without using fixed modes required thoughtful level design.


Accomplishments that we're proud of

  • Implemented custom image puzzle generation
  • Built a structured level and collection unlocking system
  • Created interactive drag-and-drop gameplay
  • Successfully used AI tools to support development
  • Designed a puzzle experience focused on personalization and stress relief

The project successfully transforms personal images into an interactive puzzle experience.


What we learned

Through this project, I learned:

  • How to use AI Studio and Gemini effectively in development
  • Image processing and puzzle generation techniques
  • Interaction design and UI structuring
  • Game progression and reward system implementation
  • The importance of user-centered design

I also learned how personalization can significantly improve engagement in interactive applications.


What's next for jigsaw puzzling

Future improvements include:

  • Adding enhanced animations and sound effects
  • Improving performance for larger puzzles
  • Saving player progress and statistics
  • Adding visual themes and customization options
  • Expanding puzzle collections and content variety

The long-term goal is to develop a fully personalized puzzle platform that combines interaction, relaxation, and meaningful user experiences.

Built With

  • animations:html5
  • apibrowser
  • apies6
  • apipointer
  • apiweb
  • audio
  • canvas
  • esm.sh):picsum
  • events
  • keyframe
  • localstoragefilereader
  • lucide
  • modules
  • photos
  • react
  • reactcss3
  • tailwind
  • typescript
Share this project:

Updates