terminalCode Example
Storage (UGC)
Manage user-generated content, save games, and player creations.
Creating Entries
CSHARP
// Create a save game entry
var saveEntry = Storage.CreateEntry("save");
// Write data
saveEntry.Files.WriteAllText("player.json", playerJson);
saveEntry.Files.WriteAllBytes("world.dat", worldData);
saveEntry.Files.WriteJson("config.json", gameConfig);
// Set metadata
saveEntry.SetMeta("playerName", playerName);
saveEntry.SetMeta("level", currentLevel);
saveEntry.SetMeta("playtime", totalPlaytime);
// Set thumbnail
saveEntry.SetThumbnail(CreateThumbnail());Entry Properties
| Property | Description |
|---|---|
| Id | Unique GUID |
| Type | Category (e.g., "save", "dupe") |
| Created | Creation timestamp |
| Files | BaseFileSystem for file operations |
| Thumbnail | Preview image as Texture |
Reading Files
CSHARP
// Read data back
string notes = entry.Files.ReadAllText("notes.txt");
byte[] screenshot = entry.Files.ReadAllBytes("screenshot.png");
MyData data = entry.Files.ReadJson<MyData>("data.json");
// Check existence
bool exists = entry.Files.FileExists("save.dat");
// Directory operations
entry.Files.CreateDirectory("levels");
var files = entry.Files.FindFile("/", "*.json", recursive: true);Listing Entries
CSHARP
// Get all saves
var allSaves = Storage.GetAll("save");
foreach (var save in allSaves)
{
Log.Info($"Save: {save.Id}, Created: {save.Created}");
var playerName = save.GetMeta("playerName");
var level = save.GetMeta<int>("level");
}Deleting Entries
CSHARP
Storage.Delete(entry);Steam Workshop Integration
Entries can be published to/downloaded from Steam Workshop automatically.
Use Cases
- Save games — Player progress
- Player creations — Maps, characters, items
- Replays — Recorded gameplay
- Custom content — Mods, configs
Was this helpful?