Skip to main content

SpectatorConfig

Struct SpectatorConfig 

Source
pub struct SpectatorConfig {
    pub buffer_size: usize,
    pub catchup_speed: usize,
    pub max_frames_behind: usize,
}
Expand description

Configuration for spectator sessions.

These settings control spectator behavior including buffer sizes, catch-up speed, and frame lag tolerance.

§Example

use fortress_rollback::SpectatorConfig;

// For watching a fast-paced game, use larger buffer and faster catchup
let fast_game_config = SpectatorConfig {
    buffer_size: 90,
    catchup_speed: 2,
    max_frames_behind: 15,
    ..SpectatorConfig::default()
};

// For spectators on slower connections
let slow_connection_config = SpectatorConfig {
    buffer_size: 120,
    max_frames_behind: 20,
    ..SpectatorConfig::default()
};

Fields§

§buffer_size: usize

The number of frames of input that the spectator can buffer. This defines how many frames of inputs from the host the spectator can store before older inputs are overwritten.

A larger buffer allows the spectator to tolerate more latency or jitter, but uses more memory.

Default: 60 (1 second at 60 FPS)

§catchup_speed: usize

How many frames to advance per step when the spectator is behind. When the spectator falls more than max_frames_behind frames behind the host, it will advance this many frames per step to catch up.

Higher values catch up faster but may cause visual stuttering.

Default: 1

§max_frames_behind: usize

The maximum number of frames the spectator can fall behind before triggering catch-up mode. When the spectator is more than this many frames behind the host’s current frame, it will use catchup_speed to advance faster.

Default: 10

Implementations§

Source§

impl SpectatorConfig

Source

pub fn new() -> Self

Creates a new SpectatorConfig with default values.

Source

pub fn fast_paced() -> Self

Configuration preset for fast-paced games.

Uses a larger buffer and faster catch-up for games where falling behind is more noticeable.

Source

pub fn slow_connection() -> Self

Configuration preset for spectators on slower connections.

Uses a larger buffer and more tolerance for falling behind.

Source

pub fn local() -> Self

Configuration preset for local viewing with minimal latency.

Uses smaller buffer and stricter catch-up for responsive viewing.

Source

pub fn broadcast() -> Self

Configuration preset for streaming/broadcast scenarios.

Optimized for live event streaming, tournament broadcasts, and replay viewers. Uses a very large buffer and conservative catch-up to avoid visual stuttering on stream.

Characteristics:

  • Large buffer (3 seconds at 60 FPS)
  • Slow, smooth catch-up to avoid jarring speed changes
  • High tolerance for falling behind
Source

pub fn mobile() -> Self

Configuration preset for mobile/cellular spectators.

Uses larger buffers and tolerant catch-up for variable mobile network conditions.

Trait Implementations§

Source§

impl Clone for SpectatorConfig

Source§

fn clone(&self) -> SpectatorConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SpectatorConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SpectatorConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Display for SpectatorConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for SpectatorConfig

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for SpectatorConfig

Source§

fn eq(&self, other: &SpectatorConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for SpectatorConfig

Source§

impl Eq for SpectatorConfig

Source§

impl StructuralPartialEq for SpectatorConfig

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more