Just join the game
What is Karo?
Karo is a board game which originated from ancient China. The rule is fairly straight forward:
- Two players take turn to place their piece on the checked board
- The first to line up five piece in a row (horizontal, vertical or diagonal) is the winner.
In Vietnam, school children of all ages play this game on checked paper from the back of their notebook. We play during the break. We play when the teacher is boring. We play before examinations. We play against ourselves too. It is just plain fun.
Why I port this game online?
Honestly I am not the first to port this famous time killer online. We have:
and many more. However, they are not much beside playing games and watching others play - and nothing else. Especially they look quite crappy on mobile.
As a Karo fan, I want more. I want to play multiple games at the same time! I want to build my status based on my Karo skill. I want to publish challenges on Facebook and share my victories! And I want to play on my way to work and on my way home - with whatever mobile device I have at hand.
Plus I don't want to install anything on my little phone - it's a phone and not a gaming station. PERIOD.
The tech stack
Personally I don't want to build just another plain jQuery DOM manipulation social application based on MVC client-server model. That would be so dull.
Considering the fact this is a multiplayer game, I have decided to apply functional reactive programming with CycleJS to build a consistent, rich yet light weight and maintainable user interface. The entire UI must be rendered top down as a single result.
To keep a massive number of players in sync, Firebase is the best within my reach. Updates are pushed to clients simultaneously. Plus, they provide custom domain with HTTPS support for free.
However, our game must have a little bit of logic so I decided to go for Google App Engine. Recently Google has acquired Firebase, therefore integrating the two SDKs should not be an issue.
That is it! More features will come your way so be sure to follow me [@giakhanh287](https://twitter.com/giakhanh2487) to get the latest updates.