LogoLogo
⚠️ Outdated documentationGo to LatestHomeAPI
SDK 1.0
SDK 1.0
  • Welcome
  • Overview
    • What is coherence?
    • How does coherence work?
    • Rooms and Worlds
    • Features and Roadmap
    • Release Notes
    • Known Issues and Troubleshooting
  • Learning coherence
    • Beginner's Guide to Networking Games
    • First Steps tutorial
      • 1. Basic syncing
        • 1.2. Animation parameters
        • 1.3. Sending commands
      • 2. Physics / Authority transfer
      • 3. Areas of interest
      • 4. Parenting entities
      • 5. Complex hierarchies
      • 6. Persistence
    • Campfire project
      • Game mechanics
      • Leveraging object pooling
      • Remote interactions: Chairs
      • Remote interactions: Trees
      • A unique object with complex state
      • Custom instantiation and destruction
      • Running a server-side NPC
      • Playing audio and particles
      • A simple text chat
    • How to network...
      • Racing
      • Turn-based
      • First-Person Shooter
      • MMO
      • Fighting
  • Get started
    • Installation
    • Scene Setup
      • Samples
    • Prefab Setup: CoherenceSync
    • Local Development
      • Tips and Recommendations
    • coherence Cloud
      • Create a Free Account
      • Deploy a Replication Server
      • Share Builds
  • coherence SDK for Unity
    • Components
      • CoherenceSync
      • CoherenceBridge
      • CoherenceLiveQuery
      • CoherenceTagQuery
      • Order of execution
    • Asset Management
      • Using CoherenceSyncConfig to instantiate GameObjects locally
      • CoherenceSyncConfigRegistry Save Modes
    • Networking State Changes
      • Messaging with Commands
      • Hierarchies & Child Objects
        • Child GameObjects
        • Child CoherenceSyncs
        • Deep Child CoherenceSyncs
      • Animations
      • CoherenceSync References
      • [Sync] and [Command] Attributes
      • [OnValueSynced] Attribute
      • Supported Types
      • Creating your own syncable member
    • Baking (Code Generation)
    • Scene Management
    • Authority
      • Authority transfer
      • Server-authoritative setup
    • Lifetime
      • Persistence
      • Example – a global counter
    • Optimization
      • Simulation Frequency
      • Areas of Interest
      • Level of Detail (LOD)
    • Profiling
    • Interpolation
    • Rigid Bodies
    • Settings
    • Simulation Frame
    • Replication Server
    • Simulators
      • Scripting: Client vs Simulator
      • Local Development
      • World Simulators
      • Room Simulators
      • Simulator Slugs
      • Multi-Room Simulators
      • Build and Publish
      • Command-line arguments
      • Load Balancing
    • Client-Hosting
    • Client Connections
    • Rollback Networking Support
    • World Origin Shifting
    • CLI
    • Upgrading Unity SDK
      • Upgrading to coherence Unity SDK 1.0.0
      • Upgrading to coherence Unity SDK 0.9.0
  • coherence Cloud
    • Developer Portal
    • Dashboard
    • Worlds
    • Rooms
    • Lobbies
    • Game Services
      • Account
      • Key-Value Store
    • Using coherence Cloud in Unity
      • Worlds
      • Rooms
      • Lobbies
      • Game Services
        • Authentication Service (Player Accounts)
        • Key-value store
  • Schema explained
    • Overview
    • Specification
    • Field settings
    • Archetypes
  • coherence Scripting API
  • Additional resources
    • Community
    • Quick Samples
    • Continuous Integration
    • Unreal Engine Support
    • WebGL Support
    • Peer-to-Peer Support (P2P)
    • Pricing
    • SLA
    • Glossary
Powered by GitBook
On this page
  • CloudService.GameServices.KvStoreService
  • Example
  • Limitations

Was this helpful?

Export as PDF
  1. coherence Cloud
  2. Using coherence Cloud in Unity
  3. Game Services

Key-value store

The key-value store provides a simple persistence layer for the players.

Last updated 1 year ago

Was this helpful?

CloudService.GameServices.KvStoreService

The player needs need to be to use the key-value store.

This class provides the methods to set, get and unset key-value pairs. This is executed within the context of the currently logged in player.

Example

using Coherence.Cloud;
using Coherence.Toolkit;
using System.Collections;
using UnityEngine;
using Result = Coherence.Runtime.Result;

public class KeyValueStoreExample : MonoBehaviour
{
    public CoherenceBridge bridge;

    public string username;
    public string password;
    public string myKey;
    public string myValue;

    private CloudService cloudService;

    void Start()
    {
        cloudService = bridge.CloudService;

        StartCoroutine(LoginAsAUserAndUseKvStore());
    }

    private IEnumerator LoginAsAUserAndUseKvStore()
    {
        IAuthClient authService = cloudService.GameServices.AuthService;

        while (!cloudService.IsConnectedToCloud && authService.SessionTokenRefreshResult == null)
        {
            yield return null;
        }

        // If refresh failed, we have to login as a user with the given credentials again
        if (authService.SessionTokenRefreshResult == Result.InvalidCredentials)
        {
            var task = authService.LoginWithPassword(username, password, true);

            while (!task.IsCompleted)
            {
                yield return null;
            }
        }

        // At this point, we are ready to fully utilize the Cloud Service
        KvStoreClient keyValueStore = cloudService.GameServices.KvStoreService;

        // Sets a value
        // key: lowercase letters, numbers, underscore, dash
        // val: any string (null is not allowed)
        keyValueStore.Set(myKey, myValue);

        // Gets a value
        // key: lowercase letters, numbers, underscore, dash
        var foo = keyValueStore.Get(myKey);
        Debug.Log(string.Format("foo={0}", foo)); // foo=1

        // Unsets a value, removing it from the store
        // key: lowercase letters, numbers, underscore, dash
        keyValueStore.Unset(myKey);
    }
}

Limitations

Size: there are no limits to the number of stored key/values as long as the total size is less than 256 kB.

Requests: Set/Get/Unset can be called unlimited amount of times but the execution may be throttled.

logged in