Sem categoria

Trabalhar com entidades de jogos sociais no Couchbase

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

Quando você cria um jogo social on-line, normalmente representa elementos que fazem parte do mundo do jogo. Eles são chamados de objetos do jogo e podem ser personagens do jogo, itens de vaidade, itens funcionais e buffs, etc. Esses objetos são afetados por eventos no jogo. Alguns exemplos são

 

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

Como parte do jogo, os jogadores realizam ações que podem fazer com que os objetos do jogo sejam atualizados ou alterados. Por exemplo, os jogadores podem se deslocar para diferentes áreas de um mapa, executar ações e ganhar recompensas, além de recuperar as coordenadas de outros jogadores que estão no jogo no momento. Cada uma dessas ações do jogador se traduz em visualizar, adicionar, remover ou atualizar documentos no banco de dados.  
 
Na realidade, os jogos sociais têm vários jogadores jogando ao mesmo tempo e suas ações podem afetar o mesmo objeto. Por exemplo, as ações realizadas em um jogo podem exigir "energia" e, quando um jogador fica sem "energia", ele precisa recarregar. Itens como speedup e pacotes de energia são bastante comuns em jogos sociais e dão um rápido impulso de "energia" ao jogador. Mas a diversão vem da competição pelo número limitado de pacotes de "energia" no jogo. O acesso a objetos de jogo compartilhados precisa ser sincronizado para evitar conflitos e manter um estado de jogo consistente. O Couchbase Server fornece ambos otimista e pessimista controle de simultaneidade.
 
Veja a seguir como usar esses mecanismos de concorrência. Digamos que dois jogadores queiram anexar a mesma casa na árvore ao mesmo tempo. Ao usar os métodos CAS e a lógica de repetição, os programadores de jogos podem garantir atualizações atômicas de objetos de jogos globais compartilhados para manter o estado consistente do jogo.
 

Prêmios do jogo

A maioria dos jogos tem uma estrutura composta por um ciclo de ações e prêmios. Os sistemas de pontuação são usados em jogos para permitir que os jogadores avaliem o nível de domínio do jogo e também para torná-lo um pouco viciante. Normalmente, uma tabela de classificação é usada para registrar os jogadores com as melhores pontuações.

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.

função (doc) {

 se (doc.jsonType == "jogador"){

   emitir(["Pontuação",  doc.pontuação], doc._id);

 }

}

A função de mapa acima pode ser usada para criar uma espécie de tabela de classificação. Bem, isso depende de como o consultamos. As visualizações podem ser consultadas usando a API REST ou outros SDKs, como o PHP.

  1. 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'

  1. 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

Há um pouco de código de aplicativo que precisa ocorrer aqui para traduzir a saída da visualização mapreduce em um formato útil, mas, em geral, é muito fácil criar uma tabela de classificação usando o Couchbase. Espero que isso ajude alguém a utilizar os novos recursos do Couchbase Server 2.0 (visualizações). Para obter uma visão mais detalhada das visualizações, consulte os documentos: https://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views.html
Jogo em andamento!
Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Don Pinto, gerente principal de produtos da Couchbase

Don Pinto é gerente de produto principal da Couchbase e atualmente está concentrado no avanço dos recursos do Couchbase Server. Ele é extremamente apaixonado por tecnologia de dados e, no passado, foi autor de vários artigos sobre o Couchbase Server, incluindo blogs técnicos e white papers. Antes de ingressar no Couchbase, Don passou vários anos na IBM, onde ocupou a função de desenvolvedor de software no grupo de gerenciamento de informações DB2 e, mais recentemente, como gerente de programa na equipe do SQL Server na Microsoft. Don tem mestrado em ciência da computação e é bacharel em engenharia da computação pela Universidade de Toronto, no Canadá.

2 Comentários

  1. As visualizações seriam rápidas o suficiente para gerar tabelas de classificação a partir dos amigos do Facebook de cada usuário?

  2. Obtendo classificações de jogadores com uma visualização:
    https://www.couchbase.com/usin...

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.