# Give every milestone a place to live.

Create, test and publish game-scoped achievements with Attract Mode: event rules, game XP, versioned sets, accepted progress and private-by-default player collections.

## What is Attract Mode achievements?

Attract Mode achievements is a developer workflow for defining game milestones, simulating earning rules and reporting semantic gameplay events through the game SDK. Achievement points, per-game XP and set completion are distinct. Developer-configured XP is not a shared network ranking.

The local simulator, manifest CLI, headless browser adapter and silent panel are included in the source kit. Hosted use requires deployed achievement services, an approved game integration, scoped server credentials and an explicitly published release/build binding. A source module or documentation page does not establish production eligibility.

## How do I create my first achievement?

Start with the harbor-base manifest and fixture events in the browser-game kit. Define level.completed with typed level and won fields; count harbor wins; award First crossing once at one win. The manifest assigns 10 set points and an optional separate 25 game XP. The browser event cannot choose its reward.

Validate and simulate the manifest locally. Test a loss, a harbor win, an exact retry and another level. Import the same manifest into the existing developer workspace, save the current revision, validate it and publish its exact hash. Bind the game build to that immutable release before reporting real events.

## What happens offline or when a player signs out?

The browser client stores a bounded queue when a storage adapter is supplied. Pending events are not confirmed awards. Retry preserves exact event and occurrence IDs and the original occurredAt timestamp; duplicate delivery does not create a second committed reward. New runtime events require canonical UTC timestamps within seven days past or five minutes future. Build bindings stay active until explicitly retired. Queue expiry, rejection and storage errors remain visible, and gameplay can continue.

The game backend derives identity from the authenticated session. On sign-out or account switch, abort requests, clear the old queue and remove private UI. Never merge guest achievements or identities by email. The headless client and optional silent panel support this lifecycle.

## Are achievements verified?

Personal reports and publisher-validated results remain separate. A publisher-validated event comes from a scoped trusted server after the publisher performs its own gameplay checks; it is not an independent anti-cheat certification. Browser signatures, client scores and edited saves do not establish validation.

A reviewed set and a validated gameplay result are different claims. Public collection sharing requires an authenticated account binding and explicit consent. Hidden locked achievement descriptions must be filtered from APIs and previews.

## Which developer tools are included?

The CLI validates, simulates, compares and exports manifests. Remote draft, validation, publish and build-binding commands default to previews; execution requires a short-lived project-scoped token from authenticated Studio, explicit environment and exact production confirmation. Runtime credentials cannot author sets, and generated drafts never silently publish.

Four project-local skills cover achievement design, progression integration, QA and release. The bundled documentation MCP remains read-only. It can explain the contract and limits, but cannot inspect players, issue XP, create releases or change consent.

## Can I migrate existing game progression?

Existing definitions.put, saves and early-access progression keep their current behavior. New set drafts and immutable publication are separate. The preview does not automatically import legacy awards, transfer XP or merge player careers. Keep old builds on the existing contract and approve a reconciled migration before any continuity-dependent cutover.

TypeScript declarations cover the browser client, private server transport, rule manifest and optional panel. Runtime events require the original timestamp. Shared types do not provide native authentication or generated game-specific event schemas.

## Does this work with React Native?

The portable rule engine and shared event types can inform native integration. They are not a completed React Native SDK. Native sign-in, secure storage, app-link handling and device acceptance have separate prerequisites. Existing browser account, save and progression integrations remain supported.

- [Achievement integration guide](https://github.com/AttractMode-io/browser-game-kit/blob/main/docs/achievements.md)
- [Legacy progression migration guide](https://github.com/AttractMode-io/browser-game-kit/blob/main/docs/achievement-migration.md)
- [Runnable manifest and fixtures](https://github.com/AttractMode-io/browser-game-kit/tree/main/examples/achievements)
- [Developer workspace](https://attractmode.io/developers)

## Resources

- [Agent setup guide](https://github.com/AttractMode-io/browser-game-kit/blob/main/agents/README.md)
- [Local MCP guide](https://github.com/AttractMode-io/browser-game-kit/blob/main/mcp/README.md)
- [Integration skill](https://github.com/AttractMode-io/browser-game-kit/tree/main/skills/attract-mode-integration)
- [Developer workspace](https://attractmode.io/developers)
- [Source code](https://github.com/AttractMode-io/browser-game-kit)
- [Download the starter kit (.zip)](https://github.com/AttractMode-io/browser-game-kit/releases/latest/download/attract-mode-browser-game-kit.zip)
- [Developer docs](https://attractmode.io/docs)
