Appearance
Steam Cloud Saves
Save and load data from Steam Cloud.
Methods
fileWrite(filename, content)
Write file to Steam Cloud.
javascript
await steam.fileWrite('save.json', JSON.stringify(gameState));fileRead(filename)
Read file from Steam Cloud.
javascript
const content = await steam.fileRead('save.json');
const gameState = JSON.parse(content);fileExists(filename)
Check if file exists.
javascript
if (await steam.fileExists('save.json')) {
// Load save
}fileDelete(filename)
Delete file from Steam Cloud.
javascript
await steam.fileDelete('save.json');fileGetSize(filename)
Get file size in bytes.
javascript
const size = await steam.fileGetSize('save.json');isCloudEnabledForAccount()
Check if user has Cloud enabled.
javascript
const enabled = await steam.isCloudEnabledForAccount();isCloudEnabledForApp()
Check if app has Cloud enabled.
javascript
const enabled = await steam.isCloudEnabledForApp();Examples
Basic Save/Load
javascript
const SAVE_FILE = 'gamesave.json';
async function saveToCloud(gameState) {
if (!await steam.isCloudEnabledForApp()) {
console.warn('Steam Cloud not available');
return false;
}
const data = JSON.stringify(gameState);
return await steam.fileWrite(SAVE_FILE, data);
}
async function loadFromCloud() {
if (!await steam.fileExists(SAVE_FILE)) {
return null;
}
const data = await steam.fileRead(SAVE_FILE);
return JSON.parse(data);
}Multiple Save Slots
javascript
async function saveToSlot(slot, gameState) {
const filename = `save_slot_${slot}.json`;
const data = JSON.stringify({
...gameState,
savedAt: Date.now()
});
return await steam.fileWrite(filename, data);
}
async function loadFromSlot(slot) {
const filename = `save_slot_${slot}.json`;
if (!await steam.fileExists(filename)) {
return null;
}
return JSON.parse(await steam.fileRead(filename));
}
async function getSlotInfo(slot) {
const filename = `save_slot_${slot}.json`;
if (!await steam.fileExists(filename)) {
return { empty: true };
}
const data = JSON.parse(await steam.fileRead(filename));
return {
empty: false,
savedAt: data.savedAt,
level: data.level,
playtime: data.playtime
};
}Auto-Save
javascript
let lastSaveTime = 0;
const AUTO_SAVE_INTERVAL = 60000; // 1 minute
async function autoSave(gameState) {
const now = Date.now();
if (now - lastSaveTime < AUTO_SAVE_INTERVAL) {
return;
}
await saveToCloud(gameState);
lastSaveTime = now;
}
// Call in game loop
function gameLoop() {
update();
render();
autoSave(gameState);
requestAnimationFrame(gameLoop);
}Backup System
javascript
async function saveWithBackup(gameState) {
// Keep previous save as backup
if (await steam.fileExists('save.json')) {
const previous = await steam.fileRead('save.json');
await steam.fileWrite('save_backup.json', previous);
}
await steam.fileWrite('save.json', JSON.stringify(gameState));
}
async function restoreBackup() {
if (await steam.fileExists('save_backup.json')) {
const backup = await steam.fileRead('save_backup.json');
await steam.fileWrite('save.json', backup);
return JSON.parse(backup);
}
return null;
}Steamworks Setup
Enable Steam Cloud in Steamworks:
- Go to Steamworks Partner
- Select your app
- Navigate to Steam Cloud
- Set byte quota (e.g., 1MB)
- Set file count quota (e.g., 10)
- Publish changes
