A Rust-based Pokémon Trading Card Game (TCG) engine and toolkit for simulation and AI development.
The eventual goal of this project is to create a machine learning model that can interact with the simulator and learn to play the Pokémon Trading Card Game.
Professor is a Rust workspace containing four crates that work together to provide a complete Pokémon TCG simulation environment:
- professor-core - Core data structures and types
- professor-data - Data processing utilities and CLI tools
- professor-engine - Game engine and simulation
- professor-client-gui - GUI client for playing and testing the game
Core data structures for cards, attacks, effects, and status conditions. Provides Card, Pokemon, Energy, Trainer types, CardDB for card database management, and StatusFlags for efficient status tracking.
Data processing utilities for converting JSON card data to optimized binary format. Includes a CLI tool (professor-data-cli) for data management, validation, and testing.
Game engine that simulates Pokémon TCG matches. Features step-based game loop, PlayerAgent trait for AI integration, observable game state, action validation, mulligan handling, and efficient state differentials.
GUI client built with egui/eframe for playing and testing Pokémon TCG matches. Provides visual interface for interacting with the game engine, including setup windows, game board rendering, and card interactions.
- Rust toolchain: 1.85.0 or later (required for Rust edition 2024)
- Operating System: Windows, macOS, or Linux
- Clone the repository:
git clone <repository-url>
cd professor- Initialize submodules:
git submodule update --init --recursive- Build all crates:
cargo build --workspacecargo build --workspacecargo run --package professor-client-gui