Having already done ML, Backend Web development in node and golang, and flutter app development I ventured my way into Android App development. Just started one week ago and covering lots of ground in this domain I wondered why not create an application which can serve its use in the real world and it would require almost all my knowledge I have learned in the domain. Then this idea suddenly popped me wouldn't this game application be fun, to pass boredom when u are along with your friends and family. This was the motivation for my idea and then there are certainly lots of things that needs to be integrated to make it a complete application.
What it does
It's an application where users can play Tic Tac Toe. That was my initial idea but then suddenly more ideas popped into my head that what can it make it unique which is something more than just a learning project. Suddenly I thought why not cool features such as inbuilt timer for the total game and maybe even for each particular move by the player.(Hence these custom game modes of 10 seconds,15 seconds and 20 seconds were added). I also then linked this to my ML knowledge that wouldnt it be fun that I can store these games and their results in a database and then train a corresponding a neural network ML model on these games stored in the database and inculate that into another mode called the "ENGINE GAME MODE" where you are basically playing against an engine. As soon as more data i streamed it the engine keeps becoming stronger. To me this looked an application that could be used by many users around the world. Hence currently there are 3 game modes "against engine-currently engine is just responding to the player's move as ML model is not trained due to lack of data", "against a normal human with unlimited time-NORMAL MODE" and then the "Timer Custom Game mode". There is also an inbuilt scoreboard system added to track the progress of the battle between the players.
How we built it
As I was working solo on this project the first task for me was to design the user interface of all 7 screens used in the application. So first I made the UI of all 7 activities(simple, wanted to make more attractive but lack of time), then I coded the logic for the game added custom animations and soon the Human Normal Mode was ready. Even the computer mode was easily inculated. The main problem came in the timer mode as it was bit complex to make it work as there were many scenarios and possibilities that needed to be worked on so that there are no bugs and it works properly.
Challenges we ran into
Making the UI for this application was really smooth. As a sole member coding the multiple activites in a limited number of time was the real challenge. Having learning app dev just 6 days ago and making this project work was also a real challenge but I am proud of things that I achieved and I learned while making this project. The main problem was the Timer Custom game mode that required hours of debugging in the code to make it fully functional. Some of the common challenges was 1)As soon as timer runs out, the game should be a draw and the scoreboard should be updated instantly. 2)Fixing the timer when the game is finished before the timer runs out. 3)Making the app dynamic and not to heavy so that the animations is smooth and there is no problem to the user while playing the game and so on.
Accomplishments that we're proud of
Doing this hack solo was lot of fun for me as I neatly coded 30 hours continuosly to make this app fully functional,removing many bugs, making the logic work,adding custom animations, building multiple activites,and inculating the timer feature which is truly the heart of this application. Having started native android app devlopment just 6 days ago and making a good application is something that I am really proud of and I am hoping to build on this keep learning more things in native app development and completing the future enhancements of this project.
What we learned
Having started native android app devlopment just 6 days ago and making a good application is something that I am really proud of and I am hoping to build on this keep learning more things in native app development and completing the future enhancements of this project. I learned that if you are motivated towards an idea no matter how complex it is or the time for making it less, you can make it work that's what I did in this application as I partcipated as a sole member. I am hoping to learn more new cool things and integrate that into this project.
What's next for TicTacToe-MasterGame
1) Improvement in the UI of the application.
2) Adding custom User input game modes where users can set the duration of the game.
3) Using mongodb/SQLite database to store the games and handling that data with node server(using Express.js)
4) Training a ML model using neural network from the games and corresponding resullts collected(dynamic model).
5) Implementing the computer engine mode based on the trained ML model.
6) Introducing move takebacks.
Check the Github repo for further instructions regarding the game and regarding the workflow of the game.