hybrid game loop