diff --git a/crates/game-service/src/battle_session.rs b/crates/game-service/src/battle_session.rs index 17c74c9..4e11cee 100644 --- a/crates/game-service/src/battle_session.rs +++ b/crates/game-service/src/battle_session.rs @@ -1,6 +1,13 @@ use std::collections::HashMap; use std::sync::Arc; pub const SNAPSHOT_INTERVAL_TICKS: i32 = 4; +pub fn snapshot_interval_ticks() -> i32 { + std::env::var("SCROLL_SNAPSHOT_INTERVAL_TICKS") + .ok() + .and_then(|value| value.parse::().ok()) + .filter(|ticks| *ticks > 0) + .unwrap_or(SNAPSHOT_INTERVAL_TICKS) +} pub const MAX_CATCH_UP_TICKS: i32 = 40; use std::time::Instant; use logic::battle::{ @@ -51,7 +58,7 @@ impl BattleSession { random, taunts, next_bot_emote, - next_snapshot: SNAPSHOT_INTERVAL_TICKS, + next_snapshot: snapshot_interval_ticks(), next_bot_play: crate::bot::BOT_OPENING_DELAY_SECONDS * BATTLE_TICKS_PER_SECOND, pushed_snapshots: 0, next_instance: first_instance, @@ -256,7 +263,7 @@ impl BattleSession { self.release_queued(self.tick); self.mode.battle.tick(self.tick); if self.pushes_snapshots() && self.tick >= self.next_snapshot { - self.next_snapshot = self.tick + SNAPSHOT_INTERVAL_TICKS; + self.next_snapshot = self.tick + snapshot_interval_ticks(); if let Some(message) = self.snapshot_message() { self.pushed_snapshots += 1; self.outbound.push(message);