Se han creado juegos increíbles con el Unidad plataforma. Algunos pueden verse sobre la plataforma Unity Escaparate de aplicaciones sección. Por impresionantes que sean estas creaciones, hay un componente básico que falta en todos los juegos creados con Unity: una base de datos local.
En Unity, una base de datos alojada localmente puede persistir los datos del juego y mejorar la jugabilidad: el juego no se acaba ni se ralentiza cuando un conexión a la red. La puntuación más alta de un jugador en el juego también puede guardarse y sincronizarse con una base de datos remota cuando se restablece la conexión de red.
En esta entrada de blog, exploraremos cómo Unity y la base de datos NoSQL, Couchbase, pueden trabajar conjuntamente para ofrecer destacado experiencias para jugadores de móviles.
Couchbase con Unity Games
Para empezar con Couchbase Mobile para Unity, hay un gran tutorial al que haremos referencia, que toma un juego Unity existente y le añade una base de datos local. La primera parte es traer el framework Couchbase Lite. En la aplicación de ejemplo, incluye Couchbase en la parte superior del archivo GameController.cs teniendo:
1 2 3 4 |
Utilizando Couchbase.Lite; Utilizando Couchbase.Lite.Unidad |
Crea tu base de datos de juegos Unity
Para el juego que estamos construyendo, los datos del jugador se almacenan en un documento y obtendremos el documento que contiene la puntuación más alta del jugador. Para recuperar la base de datos o crearla si no existe, haremos referencia a la base de datos Couchbase Director clase.
1 2 3 |
var db = Director.SharedInstance.ObtenerBaseDeDatos("tirador espacial"); |
Recuperar el documento del jugador
Haremos referencia a los datos del juego del jugador teniendo un documento llamado 'player_data'. Al hacer referencia a la variable de base de datos, db, cuando solicitemos el documento, éste se asociará a la base de datos "spaceshooter". Llamamos a la variable ObtenerDocumento e introduzca el nombre del documento. Si el documento no existe, se creará el documento.
1 2 3 |
var doc = db.ObtenerDocumento ("datos_jugador"); |
Los datos se describen como propiedades de un documento y para que podamos establecer la puntuación más alta de un usuario dentro de un juego, modificaremos las propiedades del documento y guardaremos una nueva revisión. Para ello llamaremos a la función Actualización de Couchbase.
1 2 3 4 5 6 7 8 9 10 |
doc.Actualización(rev => { var atrezzo = rev.Propiedades de usuario; atrezzo["puntuación_alta"] = newHighScore; rev.SetUserProperties(atrezzo); devolver verdadero; }); |
El valor añadido de tener una base de datos local para tu juego es que las propiedades del juego aquí se pueden guardar en el dispositivo sin depender de tu red.
Replicar datos locales
Creando puntos finales de replicación, podemos enviar datos locales al servidor remoto. Para ello, haremos referencia al CreatePushReplication de la API de Couchbase y le pasamos la URL del endpoint con el que queremos sincronizar. Para iniciar la replicación ejecutamos 'Start()' en la variable.
1 2 3 4 5 6 |
var pulse = db.CreatePushReplication(SYNC_URL); pulse.Inicio(); |
Los datos se conservan localmente y también en el punto final remoto si la conexión está disponible.
Sincronizar datos remotos
Obtener los últimos datos de un endpoint remoto es tan sencillo como guardarlos localmente y sincronizarlos. Para crear una replicación pull simple primero obtendremos una base de datos llamando al método 'GetDatabase' y pasando el nombre de la base de datos - 'spaceshooter' en este caso. Pero ahora en lugar de actualizar nuestro servidor remoto con los datos locales de nuestro dispositivo con un 'PushReplication' ejecutaremos un 'PullReplication' desde el endpoint remoto
1 2 3 4 5 6 7 |
var db = Director.SharedInstance.ObtenerBaseDeDatos("tirador espacial"); var tire de = db.CreatePullReplication (SYNC_URL); tire de.Inicio (); |
Y como anteriormente, llamando al método Start() en la variable comenzará el proceso de replicación de sincronización de datos desde el endpoint remoto al dispositivo.
Recuperar los datos de los jugadores
Para examinar lo que tenemos en nuestra base de datos 'spaceshooter' podemos hacer referencia a la variable que representa la base de datos y ver si el documento "player_data" está disponible:
1 2 3 4 5 6 7 |
var doc = db.ObtenerDocumentoExistente ("datos_jugador"); si (doc != null && doc.Propiedades de usuario.ContieneClave("puntuación_alta")) { highScore = Convertir.ToInt32(doc.Propiedades de usuario["puntuación_alta"]); } |
Para recuperar la puntuación más alta del jugador, rellenaremos la variable highScore con el valor de la clave 'high_score'.
Conclusión
Hay una serie de grandes razones para emplear una base de datos local en el diseño de un juego Unity. Con Couchbase Mobile, los juegos Unity pueden ejecutar actividades locales, como guardar su estado local, y configurar servicios de sincronización para coordinar la coherencia de la información entre las instancias de la aplicación.
En resumen: cuanto más rico sea su entorno de juego local, y cuanto menos dependiente de la red la experiencia de juego de Unity es la jugabilidad: cuanto más confía en añadirás y servicios cada vez más sofisticados que pueden sincronizar el estado de una red de aplicaciones.
En el próximo blog exploraremos formas adicionales Couchbase Móvil puede mejorar el diseño del juegodesarrollo y juego.