Current World situation
In support of Google's stand on current world situations. I have decided to stop working on this project on 28th, the old deadline, and give time to the ones who actually needs it and present a fair competition.
Inspiration
I have been working on C# (after C/C++), for a long time now. Never liked web development. Recently saw this Flutter/Dart hackathon and decided to give it a try. And, oh boy! I'm in love with it. Dart is just like applying a filter to C# and get all the good things and add new amazing stuff which I can't dream in C#. Flutter is heaven for non-web developers trying to work on web, in fact any platform. Thank You Google!!!
My son's love for Rubik cube's and puzzle made me do this re make of Box World - Sokoban game.
What it does
Aim to is slide all the boxes on the marked targets in the puzzle. Rules are simple -
- You can only push and not pull
- Only one box can be pushed at time
- And that's it
How I built it
Well, first learned dart, enough to understand syntax and OOPs behind it. Second learned Flutter and how it works. Third merged both of them. First I developed a puzzle algorithm and tested it on a console app using nothing but ASCII characters. Once I was confident and did all my testing I started working on Flutter UI. There was lots and lots of learning. Banging heads multiple times and eventually turns out to be super simple/obvious.
Challenges I ran into
Many. Coming from C# it was a little bit difficult to understand the flow of Dart. As I mentioned earlier, I am not a UI person. So getting use to of Flutter controls and the way it works was a challenge.
But, honestly, Flutter have everything I missed in Xamarin and MOST importantly, all the widgets do what they are suppose to do. And that's a BIG thing.
Accomplishments that I'm proud of
Understanding Slide Puzzle's repo in itself was a big accomplishment. A very nice job done there. Learning Flutter/Dart in a week's time, enough to code the game. Coding console puzzle game into a full blown Flutter based app was quite satisfying.
What I learned
Thanks to Slide Puzzle repo. Learned about Blocs, states, events, the complete event based state management, zones, animations (well still learning), project arrangements.
Staggered Animations - Found a new way to use them, who said they should be applied to only one control. This game use them to sync movements of Dash and the box. So when dash pushes the box the whole animation is broken into multiple staggered animation based on timing and distance between them. First distance velocity of dash till it reaches box, then their combined velocity to reach target. Once they reach there last animation of target turning red.
Tween Animations - Dash, box and movement pointers heavily rely on wonderful tween animation to move things around.
AspectRatio and Flexible widget - Success dialog makes use of it to stay consistent across various screen sizes. And how it flexes within its boundary.
Platform's
So far web, Android and Windows :)
What's next for Box World
My son always wanted to make a dinosaur game, so we decided to make next version of Box World a "Dinosaur edition". He has already prepared a full design of how the next "Dinosaur edition" will look like, video attached. https://youtu.be/7QhUd6NbUO4
Publish on iOS, don't have a Mac book yet. Also, planning to add more stages and categorizations based on stage authors. I have already reached out to one of the amazing author. And I am planning to add a multiplayer flare to it, with two dash's working on it at the same time. I'm already excited :)
Built With
- dart
- flutter


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