feat: tournament rake, percentage-based prizes, and finish position fixes

- Add tournament_rake_percentage field to GameConfig (house share of entry fees)
- Convert prize structure from absolute amounts to percentages of prize pool
- Fix finish position calculation for tournament eliminations (was inverted)
- Add batch bustout processing for multi-table tournaments (shared positions)
- Add max_rebuys field and rebuy_count tracking on Seat
- Add PrizeStructure::with_rake() and rake_amount field
- Accumulate stats across tournament series (hands, rake, profit)
- Add best_finish and prize_won fields to PlayerStats
- Replace floating-point prize math with integer arithmetic (chip conservation)
- Add comprehensive tests for prize distribution and finish positions
- Update config examples to use percentage-based prizes with rake
- Add ARCHITECTURE_TOURNAMENT_RAKE.md documentation
This commit is contained in:
Jan-Peter von Hunnius 2026-05-22 14:32:24 +02:00
parent c041cde3fe
commit 7c79ae4966
10 changed files with 1506 additions and 140 deletions

View file

@ -161,11 +161,12 @@ fn run_tournament_simulation(config: &holdem_core::game::config::GameConfig) {
_ => unreachable!(),
};
// Warn if seed was requested but cannot be applied to tournaments yet
// Warn if seed was requested but cannot be applied to single-tournament runs
if config.seed.is_some() {
eprintln!(
"Warning: seed is not yet supported for tournament simulations; \
results will not be reproducible."
"Warning: seed is not supported for single-tournament runs; \
results will not be reproducible. Use num_tournaments > 1 for \
reproducible series."
);
}