complete game loop