1 - Como você sabe em que estado um jogado esta?
Na verdade todos jogam ao mesmo tempo colocando respostas. Quem inicia o jogo é o Admin. O jogo só funciona em grupo. Assim que um acerta, o Marvin retorna uma mensagem e adiciona no score a pontuação referente aquela pergunta.
O Game é separado por instancias e em cada grupo é criado uma instancia diferente. Uma coisa que não fiz foi a persistencia, ou seja, se tiver 2 ou 3 jogos seguidos, os pontos de cada jogo não são somados a um score total e se o Marvin tiver a instância do WhatsApp reiniciada, todos os scores são zerados. Penso em adotar SQLite pra salvar os dados dos jogadores.
Não existe bem um gerenciador de estado... apenas uma variável na classe onde ficam sendo atualizados os scores que fica em memória e duram somente até o jogo ser finalizado