> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pioneeroptimisation.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Six steps from install to a verified first decision.

<Note>The code on this page is extracted from a sample project that compiles against each SDK release; the quickstart *cannot* drift from the SDK.</Note>

## 1. Install

Install the SDK from the PIO package registry via UPM, pinned to an exact release. The registry is public, so no key is needed. The exact manifest lines are on [Installation & versioning](/integration/installation-and-versioning).

## 2. Configure

In the dashboard: create your project, then note its API key, account id, and project id. Define an action definition for your first decision point and pick its default action.

## 3. Initialise

Register every action definition your game requests, each with a fallback, then initialise once at startup.

```csharp Samples~/BasicIntegration/Assets/Scripts/QuickstartBootstrap.cs theme={null}
var config = new PioConfig
{
    ApiKey = apiKey,
    AccountId = accountId,
    ProjectId = projectId,
    Actions = new Dictionary<string, ActionDef>
    {
        // The fallback serves whenever the backend cannot answer.
        ["Tutorial"] = new ActionDef { FallbackAction = "Short" },
    },
};

await PIO.Init(config);
if (this == null) return; // Destroyed during the await: stop.
if (!PIO.IsReady)
{
    Debug.Log($"PIO init failed: {PIO.State}");
    return;
}
```

## 4. Request a decision

Ask at the decision point and apply the returned action. Failure handling is built in: offline, degraded, or timed out, the call returns your registered fallback. A null `Action` marks the baseline control group; show that player your control experience.

```csharp Samples~/BasicIntegration/Assets/Scripts/QuickstartBootstrap.cs theme={null}
// Failures never surface here: offline, degraded, or timed out,
// the SDK serves the FallbackAction you registered. A null Action
// marks the baseline control group, and a null result means
// tracking is disabled; both show your control experience.
var decision = await PIO.GetDecision("Tutorial");
if (this == null) return; // Destroyed during the await: stop.
var action = decision?.Action ?? "Short";
```

## 5. Track events

Valued events feed reward derivation; bare events record occurrences.

```csharp Samples~/BasicIntegration/Assets/Scripts/QuickstartBootstrap.cs theme={null}
// A valued event: the value feeds reward derivation.
PIO.TrackEvent("level_complete", 1.0);

// A bare occurrence, no value.
PIO.TrackEvent("tutorial_complete");
```

## 6. Verify

Run the game and exercise the decision point. Then confirm the round trip: the `PIO/Verify Integration` editor menu, or the dashboard's integration-health view, shows events arriving and the next step if they are not.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.