O que é mais divertido do que estourar balões? Na semana passada, na CouchConf SF, fizemos uma demonstração de um aplicativo experimental de jogo social (Pop-it) com base no Couchbase Server 2.0 (Beta). É um aplicativo de navegador HTML5 com um servidor de jogos C#.Net.
Confira o jogo em ação - http://www.youtube.com/watch?v=13nCv_AMCi0
Agora que você já viu como esse jogo pode ser viciante, deixe-me explicar como ele realmente funciona! O servidor do jogo detecta os locais das articulações das mãos usando o Sensor Microsoft Kinect e transmite as coordenadas das articulações das mãos para o cliente usando websockets. O cliente renderiza os balões usando javascript e executa a detecção de colisão entre os objetos do balão e os pontos de articulação da mão. Basicamente, você toca nos balões para estourá-los e ganhar pontos. No final do jogo, o Couchbase Server é usado para armazenar os pontos do jogador. O cliente envia a pontuação e o nome do jogador para o servidor e o aplicativo C# grava esses dados no Couchbase.
Para armazenar a pontuação, criamos um objeto GameResult, conforme mostrado abaixo:

Em seguida, usando o cliente C#.Net para o Couchbase Server 2.0, gravamos esses dados no Couchbase Server usando:
var gameResult = novo Resultado do jogo { Nome = nome, Pontuação = pontuação };
/Criar uma chave de registro de data e hora
Tempo t = (DateTime.UtcNow – novo DateTime(1970, 1, 1));
int carimbo de data/hora = (int) t.TotalSeconds;
/Chamar o método do cliente StoreJSON para armazenar a pontuação no Couchbase
m_ccliente.StoreJson(StoreMode.Conjunto, carimbo de data/hora.ToString(), gameResult);
Agora que a pontuação está armazenada no Couchbase Server, usando os recursos de indexação e consulta da versão 2.0, é possível gerar uma tabela de classificação em tempo real para que os jogadores possam acompanhar seu progresso. A função de mapa para criar uma tabela de classificação no Couchbase Server tem a aparência abaixo:

A função de mapa emite a pontuação do jogador e o nome do jogador. O aplicativo C# pode consultar a exibição, classificá-la usando o modificador descendente e limitar o número de resultados (nesse caso, os 10 melhores jogadores).
public ActionResult Index () {
var view = _client.GetView("scoreboard", "by_score", true).Descending(true).Limit(10);
return Json(view.ToArray(), JsonRequestBehavior.AllowGet);
}
Tem vontade de jogar? Faça o download do código aquicompile-o e divirta-se! (Se você não tiver um Kinect, não há problema, os cliques do mouse nos balões também funcionam). Aqui estão os melhores jogadores da CouchConf SF.

Parabéns, campeões do Pop-It!