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.
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.
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 meansNo vendor's SDK appears anywhere in the package, so nothing here locks a game to a store. Adapter required
Which layer you are writing#
| Situation | What 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 |
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
IfAbsentand 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#
- Providers and adapters — writing a transport properly.
- Synchronisation — direction, generation and revision.
- Adapter roadmap — Firebase, PlayFab, REST: planned, not shipped.
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