Some examples of responses that result from interacting with KokoRawr on Slack
An example of a game (Connect 4) on Slack being played by 2 users
Our web app that allows people to visualize the games in real time
What it does
KokoRawr at its core is a Slack App that facilitates new types of interactions via chaotic cooperative gaming through text. Every user is placed on a team based on their Slack username and tries to increase their team's score by playing games such as Tic Tac Toe, Connect 4, Battleship, and Rock Paper Scissors. Teams must work together to play. However, a "Twitch Plays Pokemon" sort of environment can easily be created where multiple people are trying to execute commands at the same time and step on each others' toes. Additionally, people can visualize the games via a web app.
How we built it
We jumped off the deep into the land of microservices. We made liberal use of StdLib with node.js to deploy a service for every feature in the app, amounting to 10 different services. The StdLib services all talk to each other and to Slack. We also have a visualization of the game boards that is hosted as a Flask server on Heroku that talks to the microservices to get information.
Challenges we ran into
- not getting our Slack App banned by HackPrinceton
- having tokens show up correctly on the canvas
- dealing with all of the madness of callbacks
- global variables causing bad things to happen
Accomplishments that we're proud of
- actually chaotically play games with each other on Slack
- having actions automatically showing up on the web app
- The fact that we have 10 microservices
What we learned
- StdLib way of microservices
- Slack integration
- HTML5 canvas
- how to have more fun with each other
Possible Use Cases
- Friendly competitive way for teams at companies to get to know each other better and learn to work together
- New form of concurrent game playing for friend groups with "unlimited scalability"
What's next for KokoRawr
We want to add more games to play and expand the variety of visualizations that are shown to include more games. Some service restructuring would be need to be done to reduce the Slack latency. Also, game state would need to be more persistent for the services.