- Refactor AlgorithmicEvaluator from stateful Arc<Evaluator> wrapper to pure stateless evaluator with zero-allocation construction - Extract shared evaluation logic into pub(crate) methods, eliminating ~220 lines of duplicated code from Evaluator - Add game module: table, hand runner, tournament, bots, config, stats - Add holdem_sim CLI binary crate for running simulations - Convert MathEvaluator to thread-safe singleton with Arc<Inner> pattern - Replace heap-allocated combination generation with const-generics stack-based approach in AlgorithmicEvaluator::evaluate_n_card_hand - Add thiserror 2 dependency for GameError derive - Update docs: README, ACHIEVEMENTS, ROADMAP
3.1 KiB
3.1 KiB
Poker AI Testbed & Live Server Roadmap
Step-by-Step Implementation Plan
Phase 1: Foundation
Basic poker engine
- Game state management
- Game Info and Player Info traits
- Event reporting and action scheme
- Basic game rules (NL/FL/PL)
Configuration system
- TOML configuration structures
- Bot parameter configuration
- Game type configurations (Cash/SNG/MTT, buyins, blinds, hands per level, etc.)
- Simulation parameters (hands/tournaments count, buyin thresholds for bots, etc.)
Phase 2: Simulation Testbed ✅
Goal: Mass simulation capability
Testbed core ✅
- Tournament/cash game runners ✅
- Result collection and analysis ✅
- Bot interface with early folding capability ✅
- Bot performance metrics & summary ✅
- Simulation and game factories ✅
- Configuration-driven experiment runner ✅
- Seed control for reproducibility ✅
Remaining for mass simulation
- Parallel simulation engine (multi-threading)
- Result visualization (charts/graphs)
- Rebuy/addon support for tournaments
Phase 3: Bot Framework
Goal: All bot types with playability enhancement
Bot core implementations (partially complete — basic bots exist)
Generic helper functions for strategies(basic bots done: CallBot, FoldBot, RaiseBot, RandomBot)- Modular Strategy per stage and game situation
- Rule-based bot with configurable thresholds – port from Java
- Nash equilibrium calculator for SNG endgame – port from Java
- Statistical tracking bot – port from Java
- Logging of decision-making process
Advanced bots
- GPU acceleration for mass rollouts
- Hand-reading opponent modeling (possibly with GPU integration)
- Flop playability precomputation & score integration
- Basic reinforcement learning skeleton
- Hybrid bot combining multiple approaches
- Factory for bot and sub-strategy composition
- Genetic algorithm for bot evolution (via configuration files)
Phase 4: "Unit Test" Framework
Goal: Bot behavior can be tested against predefined hands
Hand Replayer
- Poker Tracker style hands
- Action comparison to expected outcome
- Selection of hands from different sources (books)
- Action likelihoods (multiple replays)
Phase 5: Live Server Infrastructure
Goal: Real-time bot deployment
Server core
- Network protocol design (TBD: WebSocket, JSON, MQ, etc.)
- Actions (incl. early fold and table selection), events (incl. table switches and available tables)
- Client registration and management
- Game state synchronization
- Action dispatch system
- Event logging for analysis of problems
Client adapter system
- Client factory for different poker environments
- Screen / protocol scraping adapters
- Table selection logic
- Configuration-driven game selection
Phase 6: Integration & Polish
Goal: Production-ready system
Advanced features
- Real-time strategy adaptation
- Multi-table coordination
- Bankroll management
- Risk adjustment based on results
Optimization and deployment
- Performance profiling and optimization
- Error handling and recovery
- Documentation and examples
- Deployment scripts and configuration