Skip to content

Commit

Permalink
shorten game id
Browse files Browse the repository at this point in the history
  • Loading branch information
andy-k committed Apr 21, 2024
1 parent a305a46 commit 295e6bf
Showing 1 changed file with 18 additions and 19 deletions.
37 changes: 18 additions & 19 deletions src/main_leave.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ thread_local! {
std::cell::RefCell::new(Box::new(rand_chacha::ChaCha20Rng::from_entropy()));
}

static BASE62: &[u8; 62] = b"\
0123456789\
ABCDEFGHIJKLMNOPQRSTUVWXYZ\
abcdefghijklmnopqrstuvwxyz\
";

static USED_STDOUT: std::sync::atomic::AtomicBool = std::sync::atomic::AtomicBool::new(false);

// support "-" to mean stdout.
Expand Down Expand Up @@ -500,11 +506,6 @@ fn generate_autoplay_logs<const WRITE_LOGS: bool, const SUMMARIZE: bool, const B
tick_periods,
}));
let batch_size = if BREADTH { 10 } else { 100 };
// this is a 5-byte random value generated once per process.
let common_game_id_str = std::sync::Arc::new(format!(
"{:010x}",
RNG.with(|rng| rng.borrow_mut().gen_range(0..1u64 << 40))
));

for thread_id in 0..num_threads {
let game_config = std::sync::Arc::clone(&game_config);
Expand All @@ -518,11 +519,10 @@ fn generate_autoplay_logs<const WRITE_LOGS: bool, const SUMMARIZE: bool, const B
let logged_games = std::sync::Arc::clone(&logged_games);
let completed_moves = std::sync::Arc::clone(&completed_moves);
let mutexed_stuffs = std::sync::Arc::clone(&mutexed_stuffs);
let common_game_id_str = std::sync::Arc::clone(&common_game_id_str);
threads.push(std::thread::spawn(move || {
RNG.with(|rng| {
let mut rng = &mut *rng.borrow_mut();
let mut game_id = String::with_capacity(24);
let mut game_id = String::with_capacity(8);
let mut move_generator = movegen::KurniaMoveGenerator::new(&game_config);
let mut game_state = game_state::GameState::new(&game_config);
let mut cur_rack_as_vec = if SUMMARIZE {
Expand Down Expand Up @@ -623,7 +623,7 @@ fn generate_autoplay_logs<const WRITE_LOGS: bool, const SUMMARIZE: bool, const B
}
}
loop {
let num_prior_games =
let mut num_prior_games =
num_processed_games.fetch_add(1, std::sync::atomic::Ordering::Relaxed);
if num_prior_games >= num_games {
num_processed_games.fetch_sub(1, std::sync::atomic::Ordering::Relaxed);
Expand All @@ -634,17 +634,16 @@ fn generate_autoplay_logs<const WRITE_LOGS: bool, const SUMMARIZE: bool, const B
num_bingos.iter_mut().for_each(|m| *m = 0);
num_turns.iter_mut().for_each(|m| *m = 0);
game_id.clear();
write!(
game_id,
"{:08x}{}{:06x}",
std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap()
.as_secs(),
&common_game_id_str,
num_prior_games.wrapping_add(1)
)
.unwrap();
// random prefix. 62 ** 4 == 14776336, hopefully enough entropy.
for _ in 0..4 {
game_id.push(*BASE62.choose(&mut rng).unwrap() as char);
}
// wrapping sequence number. 62 ** 4 == 14776336.
num_prior_games = num_prior_games.wrapping_add(1);
game_id.push(BASE62[(num_prior_games / (62 * 62 * 62) % 62) as usize] as char);
game_id.push(BASE62[(num_prior_games / (62 * 62) % 62) as usize] as char);
game_id.push(BASE62[(num_prior_games / 62 % 62) as usize] as char);
game_id.push(BASE62[(num_prior_games % 62) as usize] as char);
let went_first = rng.gen_range(0..game_config.num_players());
game_state.reset_and_draw_tiles(&game_config, &mut rng);
game_state.turn = went_first;
Expand Down

0 comments on commit 295e6bf

Please sign in to comment.