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.