Core Concepts
This page explains the foundational ideas behind Playprint. Understanding these concepts will help you design better integrations and get more value from the SDK.
Legends — Playstyle Avatars
A Legend is a behavioural fingerprint of how someone plays. It captures patterns in gameplay decisions — strategies, boldness, timing, aggression, deception — and distils them into a persistent profile.
Legends are not:
- Chatbots or conversational AI
- Visual avatars or character skins
- Simple difficulty settings
- Replays or recordings
Legends are:
- Playable AI opponents that behave like the real person
- Built entirely from gameplay decisions (no PII)
- Persistent across sessions and — optionally — across games
- Available 24/7 for async play, even when the real player is offline
Behavioural Fingerprinting
Playprint builds profiles using exponential moving average (EMA) aggregation over gameplay decisions. This means:
- Recent matches are weighted more heavily than older ones
- Profiles adapt naturally as a player's style evolves over time
- No single match can dramatically swing a mature profile
Games record decisions using a 3-tier input system. At its simplest, you just provide a label and the SDK infers risk automatically:
// Tier 1: just a label — risk inferred automatically
tracker.decision({ label: 'attack' }); // risk: 0.7
// Tier 2: you provide risk and information values
tracker.decision({ label: 'bluff', risk: 0.9, information: 0.3 });
// Tier 3: full control over all fields
tracker.decision({ decision_type: 'attack', risk: 0.8, information: 0.6, tempo: 'mid', intent_tags: ['aggressive'] }); Six Trait Dimensions
Every Legend has six trait scores, each normalised to 0-1. See the Traits page for detailed descriptions and examples.
| Trait | Measures |
|---|---|
| Aggressive | How aggressively the player plays (Defensive ↔ Presses conflict) |
| Bold | Willingness to take high-risk actions (Cautious ↔ Risk tolerant) |
| Deceptive | Use of bluffs and misdirection (Direct ↔ Bluffing / Misdirection) |
| Chaotic | Consistency vs. unpredictability of decisions (Controlled ↔ Unpredictable) |
| Urgent | Tendency toward fast or slow play (Patient ↔ Fast-paced) |
| Expansive | How broadly the player exerts influence (Focused ↔ Broad influence) |
Archetypes
The SDK offers two archetype systems:
Simple Archetypes (getArchetype)
Four basic types based on aggression and deception thresholds:
- Reckless — Aggression ≥ 0.65
- Calculated — Aggression ≥ 0.45
- Patient — Aggression ≥ 0.30
- Cautious — Aggression < 0.30
Each can have a Deceiver modifier when bluffRate + patternBreakRate ≥ 0.20.
Generative Archetypes (generateArchetype)
Rich 5-layer personality descriptions with 12 core archetype types (one polar pair per trait):
- Berserker/Ghost (aggressive), Daredevil/Sentinel (bold), Phantom/Purist (deceptive)
- Wildcard/Metronome (chaotic), Blitz/Glacier (urgent), Cartographer/Specialist (expansive)
Each generative archetype includes a core type, style modifier, tempo tag, 0–3 behaviour phrases, and a tagline. Flat profiles produce "Enigma". Archetypes update as profiles evolve.
Async Play
The core value proposition of Playprint: players can compete against friends, family, and rivals without anyone needing to be online at the same time.
How it works:
- Player A plays your game normally. Playprint captures their decisions and builds a Legend.
- Player B launches your game later (hours, days, whenever). They choose to play against Player A's Legend.
- The Legend AI behaves like Player A — same strategies, same risk tolerance, same patterns.
- Player B gets a meaningful social experience without real-time matchmaking or server infrastructure.
Cross-Game Identity
Cross-game identity lets a player's Legend travel across games in the Playprint ecosystem. A player who's aggressive in a strategy game and cautious in a card game builds a richer, more nuanced profile.
The infrastructure is in place: per-game trait breakdowns, game-link records, and cross-platform profile shapes are all implemented. What's coming next is the player-facing opt-in flow — the UI that lets players choose which games to link.
Cross-game identity is:
- Opt-in only — players choose to link their Legends across games
- Privacy-preserving — only trait scores travel, never raw gameplay data
- Per-game breakdowns available now — every Legend already stores trait scores per game via
perGameTraits
Ghost AI
Ghost AI is the engine that converts a Legend profile into playable behaviour. It produces eight normalised bias weights — five from core traits and three from communication data:
Core Biases (from traits)
- Aggression — attack vs. defend preference
- Patience — willingness to wait for opportunities
- Risk Tolerance — probability of high-risk actions
- Consistency — how predictable the ghost's decisions are
- Deception — tendency to feint or bluff
- Reach — how broadly the ghost targets and exerts influence
Communication Biases (from CommsProfile)
- Expressiveness — how chatty the ghost is (0 = silent, 1 = very vocal)
- Provocation — tendency toward trash talk vs. sportsmanship
Studios apply the core biases to their game's AI decision tree and the communication biases to in-game messaging, emotes, and chat behaviour — producing opponents that feel distinctly human in both how they play and how they talk.
Next Steps
- Quickstart — Integrate and see a Legend in 5 minutes
- API Reference — Full endpoint documentation
- Compliance — Data handling and privacy details