Add personality-driven bots with 8 archetypes (Nit, TAG, LAG, Maniac, Calling Station, Loose Fish, Old Man, Monster TAG) across 5 skill levels. Includes: - Three-layer decision pipeline (base strategy → personality filter → skill noise) - Decision timer system with archetype-specific timeout defaults - Observation tracking engine (VPIP, PFR, Fold-to-CBet, WTSD, bet sizing, timing tells) - Player classification engine with weighted scoring and confidence scaling - Table setup UI with visual seat editor and quick presets - Info display system with 4 visibility levels - Teaching coach with post-hand analysis and real-time suggestions Archives bot-intelligence change and syncs all 8 delta specs to main specs.
39 lines
3.2 KiB
Markdown
39 lines
3.2 KiB
Markdown
## Why
|
||
|
||
Bots currently make random coin-flip decisions, providing no strategic depth or learning value. Players need realistic bot opponents with distinct personalities, skill levels, and exploitable patterns — turning PokeR from a basic poker simulator into a player reading training ground.
|
||
|
||
## What Changes
|
||
|
||
- **Bot personality system**: 8 distinct player archetypes (Nit, TAG, LAG, Maniac, Calling Station, Loose Fish, Old Man, Monster TAG) each with unique decision-making profiles
|
||
- **Skill levels**: 5 difficulty tiers (Novice, Beginner, Medium, Hard, Ultra) per archetype, with archetype-specific mistake libraries
|
||
- **Table setup UI**: Visual seat editor letting players assign bot types and skill levels, with quick presets (Fish Table, Regular Grind, High Stakes, Training Mix)
|
||
- **Decision timer**: Sequential action timer with configurable duration (5-30s), optional human timer, timeout defaults per archetype
|
||
- **Observation engine**: Tracks VPIP, PFR, Fold-to-CBet, WTSD, bet sizing patterns, and timing data per opponent
|
||
- **Classification system**: Weighted scoring algorithm that infers player types from observed stats with confidence percentages
|
||
- **Info levels**: 4 tiers (None, Hints, Stats, Full Reveal) controlling what the player sees about opponents
|
||
- **Feedback system**: 3 tiers (Off, Post-hand, Real-time) providing coaching at the player's chosen intensity
|
||
- **Teaching moments**: Pattern recognition confirmations when players successfully exploit identified bot types
|
||
- **Timing tells**: Decision time tracked per action; archetype-specific timing patterns that vary by skill level
|
||
|
||
## Capabilities
|
||
|
||
### New Capabilities
|
||
|
||
- `bot-personalities`: 8 bot archetypes with personality-driven decision filters and archetype-specific mistake libraries across 5 skill levels
|
||
- `table-setup`: Configurable table builder UI with seat-level bot type/skill selection, presets, and global settings (blinds, stack sizes)
|
||
- `decision-timer`: Sequential action timer system with configurable duration, timeout defaults per archetype, and optional human timer
|
||
- `observation-tracking`: Per-bot stat tracking (VPIP, PFR, Fold-to-CBet, WTSD, bet sizing, timing) across hand history
|
||
- `player-classification`: Weighted scoring algorithm that classifies observed bots into archetypes with confidence scores
|
||
- `info-display`: Configurable info level system controlling what opponent data the player sees during gameplay
|
||
- `teaching-coach`: Context-sensitive coaching system with post-hand analysis, real-time suggestions, and pattern recognition confirmations
|
||
|
||
### Modified Capabilities
|
||
|
||
- `gameplay-core`: Bot decision flow changes from random coin-flip to personality × skill × GTO base pipeline; bot turn handling integrates with new timer system
|
||
|
||
## Impact
|
||
|
||
- **Affected files**: `src/lib/types/player.ts` (add personality/skill fields), `src/lib/game/state.ts` (observation tracking state), `src/lib/game/actions.ts` (bot decision integration), `src/lib/game/turn.ts` (timer integration)
|
||
- **New modules**: Bot decision engine, observation tracker, classification algorithm, teaching coach, table setup component
|
||
- **No external dependencies**: All logic implemented in TypeScript within the existing SvelteKit project
|