Game Loop Demo — Demonstrates the update → render cycle using a bouncing ball.
A Game runs the loop and delegates updates and rendering to its Pipeline.
A GameObject implements update(dt) and render() to animate and draw itself.
This demo shows a ball that moves and bounces off canvas edges on each frame.