Basic Game Setup

Set up Network Storage in your s&box game from scratch. Install the library, create a project, configure collections, and implement basic data operations.

YAML Source is the Network Storage authoring standard.
Use the s&box Library Manager install for auto-updates. GitHub is best for agents, source review, contributions, and manual installs.
2

Create a Project & Configure Credentials

Every game needs a Network Storage project. The Setup panel handles all configuration for you -- no code required.

## Create Your Project

1. Go to the [Network Storage dashboard](/tools/network-storage)
2. Click **New Project**
3. Enter a name for your project (e.g., "My RPG Game")
4. Click **Create**

You will see your **Project ID**, **Public API Key** (`sbox_ns_...`), and **Secret Key** (`sbox_sk_...`).

These three values do different jobs:

| Item | Used For |
|------|----------|
| **Project ID** | Identifies your project in API URLs and library config |
| **Public API Key** | Used with the Project ID by your game or dedicated server for endpoints and game values |
| **Secret Key** | Used only by the Sync Tool / Management API to push collections, endpoints, workflows, and settings |

## Open the Setup Panel

In the s&box editor menu bar, click **Network Storage > Setup**:

![Setup Window](https://cdn.sboxcool.com/uploads/wiki/setup-window.webp)

## Enter Your Credentials

Fill in the fields:

| Field | Value | Notes |
|-------|-------|-------|
| **Project ID** | Your project ID from the dashboard | e.g., `2db44af465f4498d` |
| **Public API Key** | `sbox_ns_...` | Used by the game client at runtime |
| **Secret Key** | `sbox_sk_...` | Editor-only, never exported with your game |

Leave **Base URL** and **Editor Data Folder** at their defaults unless you have a custom setup.

Click **Save Configuration**, then **Test Connection** to verify everything works. You should see green checkmarks for Project ID, Secret Key, and Public Key.

## What Happens Behind the Scenes

The Setup panel keeps runtime and editor-only data separate:

- **`config/public/projectConfig.json`** -- project ID, public key, base URL (safe to commit, ships with your game)
- **`config/secret/secret_key.json`** -- secret key only (gitignored, editor-only, never published)

The library also generates the runtime config it needs to auto-configure on startup. **You do not need to write any configuration code**. Your game uses the Project ID + Public Key at runtime, while the Secret Key stays editor-only.

## Manual Configuration (Alternative)

If you prefer to configure in code instead of using the Setup panel, you can call `Configure()` once at startup:

```csharp
// Only needed if you are NOT using the Setup panel
NetworkStorage.Configure( "YOUR_PROJECT_ID", "sbox_ns_YOUR_KEY" );
```

This is not recommended for most users. The Setup panel is safer because it keeps the secret key out of your code and handles the runtime/editor credential split automatically.
Tips & Troubleshooting

> **Troubleshooting:** If Test Connection shows red marks, double check that you copied the full key including the `sbox_ns_` or `sbox_sk_` prefix. Secret keys are 128+ characters long -- make sure you copied the entire string.