diff --git a/battlesnake/src/logic.rs b/battlesnake/src/logic.rs index ca7c1f9..8de4b80 100644 --- a/battlesnake/src/logic.rs +++ b/battlesnake/src/logic.rs @@ -125,18 +125,16 @@ pub fn get_move(game: &Game, turn: i32, board: &Board, you: &Battlesnake) -> Opt + game_info.calculation_time.lock().map_or_else( |_| Duration::from_millis(u64::from(game.timeout) / 2), |mut guard| { - let new_duration = *guard - + Duration::from_millis( - u64::from(game.timeout) * 7 / 8 - - you - .latency - .parse() - .unwrap_or(u64::from(game.timeout) * 7 / 8), - ); - *guard = new_duration.clamp( - Duration::from_millis(1), - Duration::from_millis(u64::from(game.timeout) * 7 / 8), - ); + let target_latency = game.timeout * 3 / 4; + let latency = you.latency.parse().unwrap_or_else(|e| { + error!("Unable to parse latency: {e}"); + target_latency + }); + let last_computation_time = u32::try_from(guard.as_millis()).unwrap_or(0); + let computation_time = + (last_computation_time + target_latency).saturating_sub(latency); + *guard = + Duration::from_millis(u64::from(computation_time.clamp(1, target_latency))); *guard }, );