UI + game main loop