game_time 0.2.0
Time handling for games and other real-time simulations.
Provides types and helpers for dealing with time in games. game_time allows for
easy decoupling of internal "game" time and external "wall" time, as well as tracking
frame rate.
Additionally, different kinds of time steps may be used, while also setting a multiplier for speeding up/slowing down game time progression.
Usage
Put this in your Cargo.toml:
[]
= "0.2.0"
Overview
game_time consists of 4 main types.
GameClockprovides the basic time keeping for a simulation, tracking frames and returning aGameTimeat the beginning of each.GameTimeprovides the time information for each frame.FrameCountobjects can be optionally used to track frame rate and other runtime statistics, utilizing swappable methods for computing the average fps.FrameRunnercombines aGameClockandFrameCountand makes it easy to run the simulation at a given frame rate.
For each frame, a TimeStep is passed to GameClock in order
to advance the frame. This allows the frame rate to be changed at any time, and allows different
kinds of time steps (fixed, variable and a constant step are supported by default) to be used
based on what is most useful. Together, these objects combine to form a convenient but
flexible framework for time progression.
Examples
Run a simulation with 50ms frames, without fps counting:
use GameClock;
use step;
use FloatDuration;
let mut clock = new;
let end_time = seconds;
let mut sim_time = clock.last_frame_time.clone;
let step = new;
while sim_time.total_game_time < end_time
Run a simulation at 30fps, sleeping if necessary to maintain the framerate:
use ;
use RunningAverageSampler;
use step;
let mut clock = new;
let mut counter = new;
let end_time = seconds;
let mut sim_time = clock.last_frame_time.clone;
while sim_time.total_game_time < end_time