Cloud architecture

The framework syncs saves and ships no service. Two seams — the transport you implement and the save provider above it — with everything else framework code.

Cloud NexusForge Persistence 0.2.0 Updated

The boundary is the design#

You supply a transport. Everything above it — keys, metadata, precondition discipline, conflicts, the offline queue and retry behaviour — is framework code.

text
your service  <-- ICloudTransport (4 methods over bytes: put / get / list / delete)
                       |
                       +-- TransportCloudSaveProvider   keys, metadata, size ceilings, preconditions
                       +-- CloudSaveSyncService         sync, conflicts, offline queue, retry
                       +-- your game                    decides what a conflict means

No vendor's SDK appears anywhere in the package, so nothing here locks a game to a store. Adapter required

Which layer you are writing#

SituationWhat to implement
"Use our service"ICloudTransport — and nothing else. The framework does the rest.
"Wrap an existing provider object"ICloudSaveProvider directly, if the transport shape does not fit your SDK
"No cloud at all"Nothing: cloud is off until you enable it and supply a transport
csharp
var sync = new CloudSaveSyncService(options.Cloud, slots, provider, journal, diagnostics);

var outcome = await sync.SyncSlotAsync(new SaveSlotId(class="tok-str">"default"));

What the framework does not do#

  • It does not create accounts, buckets, credentials or entitlements.
  • It does not repair a provider's semantics: if a service has no conditional-write support, the framework falls back to IfAbsent and prefers to fail a write rather than overwrite silently.
  • It does not manage bandwidth: a save is uploaded whole, with no delta sync or chunking.

Next#

Something wrong on this page? Every page here describes behaviour that is checked in the repository. If a page and the package disagree, the package wins.

Report a documentation problem · Frequently asked questions · Troubleshooting