¿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. Por supuesto, el concepto del juego, el argumento, los personajes y los componentes sociales influyen enormemente en la experiencia de juego. Pero en el centro de la atracción de un juego están los objetos del mundo del juego, la mecánica asociada a estos objetos y las recompensas que se ofrecen a los jugadores. Para alimentar toda esta actividad virtual se necesita una base de datos escalable y de alto rendimiento.
En este blog, voy a compartir cómo Couchbase se puede utilizar para alimentar sus elementos básicos del juego - Objetos, Acciones y Recompensas
Objetos del juego
Tipo de objeto de juego | Valor del documento |
---|---|
Jugador |
{
"tipo": "jugador", "uuid": "35767d02-???a958", "nombre": "DonPinto4540", "puntuación":663, "nivel":4, "conectado": falso } |
Artículo |
{
"tipo":"item", "nombre":“Axe_e5890c94-???11”, "uuid":“e5890c94-???11c6-???”, "ownerId":"Dale9887" } |
Monstruo |
{
"tipo":"monstruo", "nombre":"Goliat9932", "uuid":“d10dfc1b-???0412-???41”, "hitpoints":370, "experienceWhenKilled":52, } |
En Couchbase, los documentos JSON se utilizan para modelar objetos de juego y se identifican utilizando el id del documento. Para estos documentos, el tipo se utiliza para definir el tipo de objeto almacenado.
Acciones del juego

Recompensas del juego
Las tablas de clasificación de juegos pueden crearse en Couchbase Server 2.0 utilizando vistas. A ver en Couchbase se escribe usando funciones map/reduce que generan un índice. Para los objetos de juego JSON mostrados en la sección de objetos de juego, se puede utilizar una función map (como se muestra a continuación) para generar una lista de puntuaciones de los jugadores. Si el campo jsonType del documento es de tipo jugador, emitimos la puntuación del jugador y el id.
si (doc.jsonType == "jugador"){
emite(["Puntuación", doc.puntuación], doc._id);
}
}
-
A consultar la vista mediante REST puede utilizar el siguiente comando curl -
curl -X GET -H 'Content-Type: application/json'
http://bucketname:contraseña@localhost:8092/bucketname/_diseño/designdocname/_vista/
viewname?descending=true&connection_timeout=60000&limit=10&skip=0'
-
Para consultar la vista utilizando PHP puede utilizar el fragmento de código que se muestra a continuación e imprimir las puntuaciones de los 10 mejores jugadores -
/* Configurar objeto de conexión couchbase */
$lbview = $cb->getView(“bucketname“, “viewname“);
$apage = $lbview->obtenerResultado(matriz("descendente" => verdadero));
$rowCtr = 0;
foreach($apage->filas AS $row) {
si($rowCtr <= 9)
{
printf("Puntuación %s para el usuario %s.n“, $row->clave[1], $row->valor);
$rowCtr = $rowCtr + 1;
}
si no
romper;
}
Reflexiones finales
¿Serían las vistas lo suficientemente rápidas como para generar tablas de clasificación a partir de los amigos de Facebook de cada usuario?
Obtener clasificaciones de jugadores con vistas:
http://www.couchbase.com/usin…