Inspiration
The biggest thing that inspired us to create the project was the fact we could test our Flutter skills by creating a very cool game in a relative short amount of time. Also, we like puzzles too so we thought it was the perfect opportunity to create something we love starting from scratch.
The game itself took inspiration from the puzzle called 'Klotski' and a escape room game. It also combines other factors like sound and pattern filling.
What it does
Our project is based on the concept of a 'escape room' game, where solving puzzles is the main idea in order to progress and, eventually, escape from the scene.
Every 'room' contains a sliding puzzle that resembles a lot an existing puzzle called Klotski. However, we modified the concept and made it our own. To spice things up, we decided we should include sub-puzzles inside of every puzzle room; it's basically another challenge that the player must overcome in order to progress. The sub-puzzles are either related to a sound challenge (like match the sound pattern) or a pattern challenge (create a figure or fill the gaps, something like Tangram).
So, basically every room contains a sliding puzzle (which is the main attraction) and the player has to solve it in order to obtain pieces that are required to solve the sub-puzzle that is being presented.
The coolest thing? We have given the player the option to choose which sub-puzzle they want to solve BUT...! If the player keeps choosing the same type of sub-puzzle over and over, eventually they will be forced to 'switch gears' and try the other type of sub-puzzle challenge.
How we built it
We built our project using only Flutter and the methodology we implemented while developing it was the Clean Architecture.
Technical details:
- We used Provider as our State Management
- We only targeted web
Challenges we ran into
We stumbled upon 2 big challenges: the creation of the puzzle itself and developing using Clean Architecture.
About the first challenge: We had to do some previous research before tackling the problem. It was our first time we had to develop a puzzle and we found out the task wasn't as simple as it looked. We investigated about the design philosophy behind a puzzle, what makes a puzzle good and some misconceptions. We learned the following conclusions: 1) What makes a puzzle 'good'? * UX: It should accomplish 2 main things: satisfaction and bring fun/joy. Give player a great satisfaction after solving the puzzle while avoiding the feeling of following instructions or linear solutions. Cultivate the 'EUREKA!' moment and do not create an association of puzzle = problem. * UI: The puzzle should explain itself and the rules should be clear and visible all the time. Avoid hidden surprises or 'frauds'. Explain every mechanic available and show every piece the player can interact with. * Theme and Storytelling: Sometimes the puzzles can be simple or have a side story that tells the tale of something real or extraordinary. The theme really depends on what context the designer wants to talk about, however, the theme must fit in some scheme that people are used to (for example: steampunk doesn't have fantasy and magic). The story must be entertaining and should give the player a sensation of 'completeness' and 'realization'. * Mechanics: Game should be ambitious, and that means it should be original and have clever mechanics. It is okay to start from a simple mechanic then start adding more or polish details as the designer sees fit while progressing in the development. The theme and storytelling can help. 2) Misconceptions * Designing a Puzzle is no easy task; it is an art and involves skill. * A good Puzzle doesn't have to be a super complex one; sometimes it can be minimal and elegant and still deliver a good quality experience to the player
About the second challenge: Since the project was going to be relatively big with a lot of files and potential modifications on the fly, it was a good idea to implement a methodology that allowed us to play with big scalability and independency factors. The Clean Architecture was the answer and we investigated it is a methodology used to create applications for corporations and other big projects.
However, the challenge reside in that we didn't have any experience developing clean architecture, so we had to investigate the philosophy behind it and how the independent layers work and interact with other ones. At the end, this smart decision allowed us to integrate new functionalities with easy, the code was extremely legible and the errors were easy to detect. We saved a lot of time with this methodology (this was huge since we had other projects to attend).
Accomplishments that we're proud of
We created a very good game within a short amount of time which we believe fulfill the expectations of the players that try it. We also learned a lot regarding puzzle design which is a pretty cool skill if we happen to have another Puzzle challenge from Flutter or from another host.
We also learned more about developing a product - knowledge we value a lot and are proud of. We implemented the Design Sprint framework to solidify the ideas we had in order to build the final product. We concluded that 2 weeks of Design Sprint is actually good enough to filter ideas and have a pretty good vision of what the final product will be.
And lastly, the other accomplishment we are proud of is that we learned a lot in a short amount of time and created a high quality final product. A lot was new to us but we managed to get everything done within the time window that was given to us.
What we learned
We learned that designing a puzzle is no easy task; by any means. It requires time and skill to develop something very entertaining and that delivers a good quality experience to anyone who plays.
We also learned that Design Sprint is a pretty good developing framework in order to filter all the good ideas. Also, it helps the project in the long run since it forces everyone to be on the tracks, avoid potential 'Second Project' symptoms and overwhelm the project with ideas (like: 'Oh! What if we add this?'), manage the time correctly and lastly, it gives us time in the early phases to create a prototype that help us validate if our ideas will be successful or not.
And finally, we learned that developing with Flutter is actually an art. The process of selecting packages, implement a design methodology and create both a good UI and UX is really not that easy. Developing with Flutter is super cool but it requires knowledge and time to build something of high quality.
What's next for Slide Puzzle
We hope we win a top position in the competition or at least get some accomplishment from our work. We didn't have enough time to incorporate more complex features like multiplayer, board, etc. Due to the time constraints, we decided to create something short but enjoyable at the same time.
We hope the judges enjoy our work as we enjoyed developing this project. It was a really cool challenge, we hope to see more challenges from Flutter.
Credit
Game done by:
- Luis Jimenez
- Kevin Hernandez


Log in or sign up for Devpost to join the conversation.