We wanted to build an App using Amazon Echo. We felt that one of the powerful features of the Echo is it's ability to bring people together. We wanted to create a game that was conversational and fun. Alexa is perfect for our game, because one of the challenges with the Chain Game are arguments that break out over if an actor actually appeared in a movie. With Alexa, there is no doubt.
What it does
When users start a game, Alexa gives them a random actor and asks for the name of a movie. It then listens to a person's response, and queries there response against IMDB. If the actor appears in the movie, it responds Correct and asks for the name of another actor in the movie and repeats the process of verifying answers against IMDB data. If an incorrect answer is given, the game comes to an end.
How we built it
We built the app using Amazon SDK, Amazon Lambda, and a Ruby/SQL backend. We used Grape to set up our routes and Nokogiri to collect the relevant data. We temporarily store the data while a player thinks of a guess. Alexa then passes our users guess to our Grape methods (check_movie or check_actor), and we compare their guess against the data we collected. We pass the response back to Alexa who communicates the right/wrong answer to the players.
Challenges we ran into
We ran into a lot of challenges. Amazon SDK and Lambda was completely new to us. Some of our teammates have thick accents which made testing Alexa commands challenging. Understanding how to set up Intentions was also a learning curve.
IMDB is not a friendly datasource. There is no official API, and we couldn't find a third-party that would give us the complete list of actors AND movies that we wanted. Our work around was to build a parser using Nokogiri. Eventually, we would like to build our own database that will quickly connect actors to their movies.
We also ran into problems with the game flow logic. Because we were dynamically grabbing data from IMDB, and parsing is kind of slow, we wanted to begin the data collection process as soon as possible to hide the latency from the players.
Accomplishments that we're proud of
We are very proud to have a working app! The game has been fun to play, and we tested it with other developers who seemed to enjoy it. The game is behaving exactly the way we intended it to! There is so much more we can build out with keeping scores, and adding logic to accept guesses that are "close" but may not be an exact match (eg.. Pirates of the Caribbeans will be considered wrong when the movie is Pirates of the Caribbeans: The Curse of The Black Pearl).
We are also very proud of the landing page we built for our app. With Amazon Echo, we didn't really need a front end, but take a peak at moviechaingame.club!
We are also very proud of the fact that we solved Twillio's Treasure Hunt! Thanks for the free t-shirt Eddie :).
What we learned
What didn't we learn? We learned that we could code all night without sleep or even feeling tired! We learned a ton about Amazon Echo, and the Amazon development environment. We learned Express.js during the Twillio treasure hunt. We also built a custom Ruby Framework using Grape.
What's next for Movie Chain Game
We have so many features we want to build out. We want to add players and scoring to the app. It would be really cool to send the score data to a url and have a scoreboard that players can view. We also want to build our own database linking actors and their movies to improve speed and build out more back end functions to improve the accuracy of answers.