In this weekly blog series about Cat and Mice, I will discuss the whole process, from design to implementation, from publishing to artificial intelligence. Cat and Mice is a game that is played on a checkers board. One player plays the cat and has only one piece. The piece of this player is placed at one side of the checker’s board. On the other side are four pieces of the mice. The goal for the cat is to reach the other side of the checker’s board. Obviously, the goal for the mice is to prevent this. In part zero of this blog series, I will discuss the rules in more detail, the goals I hope to achieve, and what will be addressed in the following parts.
About this blog series
In this blog series, I will discuss the road to making a simple game with Flutter. Not only the technical parts but also the marketing part, design, and release. We will discuss the following:
- Describing the architecture of the app. Although it is a pretty straightforward app, I think it is good to apply and discuss the architecture I will try to follow. Since I believe some great architectures scale really well.
- Of course, the app has to be implemented. So I will describe it step by step so that everyone that has Flutter installed can follow along.
- Implementing the computer player so that you can play this game alone. I will try and discuss a few different approaches to see what works reasonably well.
- Improving the design of the app. Adding animations, changing the colors, sketching some new ideas to change around. I have not much experience with design, so I will probably include references to better tutorials to improve the design.
Another reason for me to start the blog series is to keep me accountable. In this blog post, I discuss some tips about finishing your side projects. One of the tips was to share your deadline. So, after this eight weekly blog post series, the game should be published in eight weeks.
About the game
Just like the last game I have created, this is a game that I used to play with my grandfather. ( He is still alive, we play different games nowadays). The rules of the game are pretty straightforward. One player is the cat, and the other player is the mice. The cat has one piece, the mice have four pieces. The pieces of the cat and mice are played on opposite parts of the checker’s board. We are now ready to start the game.
The goal of the cat is to reach the other side of the checker’s board. Obviously, the purpose of the mice is to prevent this. The cat player starts the game. This player can move his piece diagonally in each direction. After the cat has moved his piece, it is the turn of the mice. The mice can also move one of his pieces diagonally. The only difference being here is that the mice can only move their pieces forward. After the mice moved one of his pieces, we go back to the cat. This continues till one of the following things happens:
- The cat has reached the opposite side -> The cat has won the game
- The cat cannot move in any direction -> The mice have won the game
- The mice cannot move in any direction -> The mice have won the game
My (optional) goals
As discussed in my blog post about unfinished projects, it is good to have clear goals. Another piece of advice discussed there is to downsize your goals. So, the scope of my main goal for this project:
- Publish the game on the Google Play Store.
- All game logic is implemented.
- Have a two-player modus ( Play the game on one device)
- Have one AI setting to play against.
The optional goals are mostly lessons I learned from publishing my first app. If those goals are not achieved during the first eight weeks, I might extend the blog series for the optional goals.
- Have multiple AI settings to play against. I really struggled with this during the last project, so I like to keep this optional.
- Improve the design: I am no great designer, but I am following the zero to mastery course on design. I hope to apply lessons learned from this course to this game.
- Apply marketing techniques. Last game, I did no marketing at all, but I plan to do that differently this time.
If you want to follow along, I will publish my updates on Twitter. In addition, you can see my progress on the code on Github.