O que há em um novo jogo social? Fundamentalmente, um jogo é uma "experiência" construída em torno de uma série de interações entre o jogador, o conteúdo e outros jogadores. É claro que o conceito do jogo, o enredo, os personagens e os componentes sociais têm uma grande influência na experiência do jogo. Mas no centro da atração de um jogo estão os objetos no mundo do jogo, a mecânica associada a esses objetos e as recompensas oferecidas aos jogadores. Para alimentar toda essa atividade virtual, você precisa de um banco de dados escalável e de alto desempenho.
Neste blog, compartilharei como o Couchbase pode ser usado para potencializar seus elementos básicos de jogo - Objetos, Ações e Recompensas
Objetos do jogo
| Tipo de objeto de jogo | Valor do documento |
|---|---|
| Jogador |
{
"tipo": "jogador", "uuid": "35767d02-???a958", "name" (nome): "DonPinto4540", "pontuação":663, "nível":4, "loggedIn": falso } |
| Item |
{
"tipo":"item", "name" (nome):“Axe_e5890c94-???11”, "uuid":“e5890c94-???11c6-???”, "ownerId":"Dale9887" } |
| Monstro |
{
"tipo":"monstro", "name" (nome):"Goliath9932", "uuid":“d10dfc1b-???0412-???41”, "hitpoints":370, "experienceWhenKilled" (experiência quando morto):52, } |
No Couchbase, os documentos JSON são usados para modelar objetos de jogos e são identificados usando o ID do documento. Para esses documentos, o tipo é usado para definir o tipo do objeto que está sendo armazenado.
Ações do jogo

Prêmios do jogo

As tabelas de classificação de jogos podem ser criadas no Couchbase Server 2.0 usando visualizações. A visualização no Couchbase é escrito usando funções de mapa/redução que geram um índice. Para os objetos de jogo JSON mostrados na seção de objetos de jogo, uma função de mapa (como mostrado abaixo) pode ser usada para gerar uma lista de pontuações de jogadores. Se o campo jsonType do documento for do tipo jogador, emitimos a pontuação do jogador e o ID.
se (doc.jsonType == "jogador"){
emitir(["Pontuação", doc.pontuação], doc._id);
}
}
-
Para consultar a visualização usando REST você pode usar o seguinte comando curl -
curl -X GET -H 'Content-Type: application/json'
'https://nome do balde:senha@localhost:8092/nome do balde/_design/nome do projeto/_view/
nome da visualização?descending=true&connection_timeout=60000&limit=10&skip=0'
-
Para consultar a exibição usando PHP, você pode usar o trecho de código como mostrado abaixo e imprimir as pontuações dos 10 melhores jogadores -
/* Configurar o objeto de conexão do couchbase */
$lbview = $cb->getView(“nome do balde“, “nome da visualização“);
$apage = $lbview->getResult(matriz("descendente" => verdadeiro));
$rowCtr = 0;
antes de($apage->linhas AS $row) {
se($rowCtr <= 9)
{
printf("Pontuação %s para o usuário %s.n“, $row->chave[1], $row->valor);
$rowCtr = $rowCtr + 1;
}
mais
pausa;
}
Considerações finais
As visualizações seriam rápidas o suficiente para gerar tabelas de classificação a partir dos amigos do Facebook de cada usuário?
Obtendo classificações de jogadores com uma visualização:
https://www.couchbase.com/usin...