basic game loop complete