PPB has several ways to mark time: fixed-rate updates, frames, and idle time. These are all exposed via the event system.


The event is fired at a regular, fixed rate (defaulting to 60 times a second). This is well-suited for simulation updates, such as motion, running NPC AIs, physics, etc.


The and are fired every frame. This is best used for particle systems, animations, and anything that needs to update every rendered frame (even if the framerate varies).


While both PreRender and Render are fired every frame, it is encouraged that games only use PreRender to ensure proper sequencing. That is, it is not guaranteed when on_render() methods are called with respect to the actual rendering.

Idle# is fired whenever the core event loop has no more events. While this is primarily used by systems for various polling things, it may be useful for games which have low-priority calculations to perform.