We were talking about games. Voice games are cool. Trivia is cool. Singapore is amazing. We loved the sound of Singlish, so why not allow people to play it on the go?
Voice is an exciting and interesting new interface to explore. What better way to do that than by hacking together a voice game? And what's more interesting to us Singaporeans, than Singapore?
What it does
You can start a quiz with Alexa, where you'll be tested on your knowledge of three things Singaporean: Singaporean movies, NDP, and most importantly, your knowledge of SINGLISH! Challenge a friend to play against you, and see who truly gets Singapore~
How we built it
We started by working on Alexa SDK tutorials together. We assigned tasks to each teammate, and also split the responsibilities of the project. It was helpful to refactor the project where each file has its own responsibility, rather than dump everything into one index.js entry point, as we faced little to no merge conflicts along the way.
We also looked at movies, phrases, and songs that we liked and would like people to know more about, and put them into the game.
We maintain a state, which is stored during your session, that contains how many players you have, the current player, randomized question order, etc. This state is shared and used by different handlers, so it's really important to have a clear mental model of the state, which contained around 6-8 variables at the time of writing!
As for infra, of course we rely on Amazon's Alexa and the Alexa Skill Kit SDK. We also rely on Amazon's serverless architecture (Lambda) to host functions that handle Alexa's JSON requests, then serve Alexa responses to read back to us and keep us entertained. We also used the AWS Cloud to host our audio files.
Challenges we ran into
We had trouble coordinating what should be stored in the session Attributes, and the different ways to manage that state, because certain challenges would only come up later. Additionally, it was difficult to begin prototyping right away because we took a long time to setup (so we couldn't iterate quickly, which is really important to make a fun game and recognize what's missing from the experience).
Additionally, getting it into a demo-able state can be really difficult when it's online. How do you showcase something that's meant for voice / Alexa with text, right? But we will try our best :)
Accomplishments that we're proud of
Having a solid design for the state and handler management. Despite the complex structure we needed to accommodate to the multiplayer flow, we were able to get it up and working... after many sessions of debugging.
What we learned
In the future, we should spin up a minimum prototype first (so we can all iterate and familiarize ourselves with the platform). We took really long to get the launch handler working for everybody, so the hackathon was nearly over by then. Thankfully, we parallelized our work so we got a lot done, but in the future it would be good to have the prototype earlier so we can test earlier.
What's next for QuizLah!
We can extend the questions, and types of categories of course!
Additionally, it would be nice to have context around each of the different songs, or movies. I.E: give a fun fact around the movie that they answered. That way, we can provide value beyond entertainment to the enduser! (Great job! The quote was from Ah Boys to Men. Did you know that Ah Boys to Men was the first Singaporean film to feature popular local Youtube celebrities in their lead cast? The next question is for Player 2...)
This will be nice to help people... rediscover Singapore.
You can access the link on the try it out link below! GitHub