Same mechanics as Game 57—cleaner architecture: helpers, pure functions, and a single update/render loop.