1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//! Game-agnostic evaluation arena for testing agents.
//!
//! # Usage
//!
//! 1. Implement `GameState` for your game
//! 2. Implement `GameAgent` for each AI you want to test
//! 3. Register agent types, run evaluation, get TrueSkill ratings
//!
//! ```ignore
//! let report = MultiPlayerArena::new(2)
//! .with_games(1000)
//! .add_agent_type(ClosureFactory::new("agent_a", || Box::new(AgentA::new())))
//! .add_agent_type(ClosureFactory::new("agent_b", || Box::new(AgentB::new())))
//! .run(|_num_players| MyGame::new());
//! report.print_summary();
//! ```
pub use ;
pub use GameAgent;
pub use ;
pub use ;
use Arc;
/// Enumerates the valid commands available to a player from a given game state.
///
/// Implement this to opt a game into the command-tree API: agents that use
/// the tree are architecturally unable to propose a command the game would
/// reject. Implementers can provide this directly on a game type or via a
/// wrapper struct, so `GameState` itself stays free of this dependency.
///
/// See [`CommandTree`] for the tree shape.