Sin categoría

Trabajar con entidades de juegos sociales en Couchbase

Lectura de 5 minutos

¿Qué hay en un nuevo juego social? Fundamentalmente, un juego es una “experiencia” construida en torno a una serie de interacciones entre el jugador, el contenido y otros jugadores. Claro, el concepto del juego, la historia, los personajes y los componentes sociales tienen una enorme influencia en la experiencia de juego. Pero en el corazón del atractivo de un juego se encuentran los objetos en el mundo del juego, la mecánica asociada con estos objetos y las recompensas ofrecidas a los jugadores. Para impulsar toda esta actividad virtual, se necesita una base de datos de alto rendimiento y escalable.

En este blog, compartiré cómo se puede utilizar Couchbase para potenciar los elementos básicos de tu juego: Objetos, Acciones y Recompensas

Objetos de juego

Cuando construyes un juego social en línea, por lo general representas elementos que forman parte del mundo del juego. Estos se llaman objetos de juego y pueden ser personajes de juegos, objetos cosméticos, objetos funcionales y potenciadores, etc. Estos objetos se ven afectados por los eventos en el juego. A continuación se presentan algunos ejemplos

 

Tipo de objeto de juego Valor del documento
Jugador
{
“tipo”: “jugador”,
“uuid”: “35767d02-­???a958”,
“nombre”: “DonPinto4540”,
“puntuación”:663,
“nivel”:4,
“sesión iniciada”: falso
}
Artículo
{
“tipo”:“artículo”,
“nombre”:“Axe_e5890c94-­???11”,
“uuid”:“e5890c94-­???11c6-­???”,
“ownerId”:“Dale9887”
}
Monstruo
{
“tipo”:“monstruo”,
“nombre”:“Goliath9932”,
“uuid”:“d10dfc1b-­???0412-­???41”,
“puntos de golpe”:370,
“experienciaCuandoMuere”:52,
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

En Couchbase, los documentos JSON se utilizan para modelar objetos de juego y se identifican mediante el ID del documento. Para estos documentos, el tipo el campo se utiliza para definir el tipo del objeto que se está almacenando.

Acciones del juego

Como parte del juego, los jugadores realizan acciones eso puede hacer que los objetos del juego se actualicen o cambien. Por ejemplo, los jugadores pueden moverse a diferentes áreas de un mapa, realizar acciones y obtener recompensas, y recuperar las coordenadas de otros jugadores que se encuentran actualmente en el juego. Cada una de estas acciones del jugador se traduce en ver, agregar, eliminar o actualizar documentos en la base de datos.  

 

En realidad, los juegos sociales tienen a múltiples jugadores jugando simultáneamente y sus acciones podrían afectar al mismo objeto. Como ejemplo, las acciones realizadas en un juego pueden requerir “energía” y, una vez que a un jugador se le acaba la “energía”, necesita recargar. Artículos como aceleradores y paquetes de energía son bastante comunes en los juegos sociales y brindan un impulso rápido de “energía” al jugador. Pero la diversión proviene de competir por el número limitado de paquetes de “energía” en el juego. El acceso a los objetos compartidos del juego debe sincronizarse para evitar conflictos y mantener un estado de juego consistente. Couchbase Server proporciona ambos optimista y pesimista control de concurrencia.

 

Así es como se utilizan estos mecanismos de concurrencia. Digamos que dos jugadores quieren reclamar la misma casa del árbol al mismo tiempo. Al utilizar los métodos CAS y la lógica de reintentos, los programadores de juegos pueden garantizar actualizaciones atómicas de los objetos de juego globales compartidos para mantener un estado de juego consistente.

 

Recompensas del juego

La mayoría de los juegos tienen una estructura compuesta por un ciclo de acciones y recompensas. Los sistemas de puntuación se utilizan en los juegos para permitir a los jugadores medir qué tan bien han dominado el juego y también para hacerlo un poco adictivo. Por lo general, se utiliza una tabla de clasificación para registrar a los jugadores con las puntuaciones más altas.

Las tablas de clasificación de juegos se pueden crear en Couchbase Server 2.0 usando vistas. A ver en Couchbase se escribe utilizando funciones map/reduce que generan un índice. Para los objetos de juego JSON que se muestran en la sección de objetos de juego, se puede usar una función map (como se muestra a continuación) para generar una lista de puntuaciones de jugadores. Si el campo jsonType del documento es de tipo jugador, emitimos la puntuación del jugador y el id.

función (doc.) {

 si (doc.tipoDeJson == “jugador”){

   emitir([“Puntaje”,  doc.puntuación], doc._id);

 }

}

La función de mapeo anterior se puede usar para crear una especie de tabla de clasificación. Bueno, depende de cómo la consultemos. Las vistas se pueden consultar mediante la API REST o utilizando otros SDK, como PHP.

  1. A consultar la vista mediante REST puede usar el siguiente comando curl –

curl -X GET -H ‘Content-Type: application/json’

‘https://nombre del bucket:contraseña@localhost:8092/nombre del bucket/_design/nombre del documento de diseño/_view/

nombre de vista?descending=true&connection_timeout=60000&limit=10&skip=0

  1. Para consultar la vista usando PHP, puedes usar el fragmento de código que se muestra a continuación e imprimir las puntuaciones de los 10 mejores jugadores:  

/* Configurar el objeto de conexión de couchbase */

$lbview = $cb->obtenerVista(nombre del bucket, nombre de vista);

$apage = $lbview->obtenerResultado(matriz(“descendente” => verdadero));

$rowCtr = 0;

para cada($apage->filas CO $row) {

 si($rowCtr 9)

 {

  printf(“Puntuación %s para el usuario %s.n, $row->clave[1], $row->valor);

   $rowCtr = $rowCtr + 1;

  }

   otro

      interrumpir;

}

Reflexiones finales

Aquí hay un poco de código de aplicación que debe ejecutarse para traducir la salida de la vista de mapreduce a un formato útil, pero en general, crear una tabla de clasificación usando Couchbase es súper fácil. Espero que esto ayude a alguien a utilizar las nuevas características de Couchbase Server 2.0 (vistas). Para una mirada más detallada a las vistas, consulta la documentación: https://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views.html

Game On!

Compartir este artículo

Autor

Don Pinto es un director principal de gestión de productos en Couchbase y actualmente se enfoca en avanzar las capacidades de Couchbase Server. Es un apasionado de la tecnología de datos y en el pasado ha escrito varios artículos sobre Couchbase Server, incluyendo blogs técnicos y documentos técnicos informativos (white papers). Antes de unirse a Couchbase, Don pasó varios años en IBM, donde desempeñó el rol de desarrollador de software en el grupo de gestión de información de DB2 y, más recientemente, como gerente de programas en el equipo de SQL Server en Microsoft. Don tiene una maestría en informática y una licenciatura en ingeniería informática de la Universidad de Toronto, Canadá.

2 respuestas

  1. Avatar de Ohthepain
    Ohthepain

    Would views be fast enough to generate leaderboards out of each user’s Facebook friends?

Deja un comentario

¿Listo para comenzar con Couchbase Capella?

Comenzar a construir

Visita nuestro portal para desarrolladores para explorar NoSQL, consultar recursos y comenzar con los tutoriales.

Usa Capella gratis

Empieza a usar Couchbase en tan solo unos clics. Capella DBaaS es la forma más fácil y rápida de comenzar.

Ponte en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítenos ayudarte.