question: private void startGame ( GameLaunchMessage gameLaunchMessage , Faction faction , RatingMode ratingMode , Integer localRelayPort ) { if ( isRunning ( ) ) { logger . warn ( "Forged Alliance is already running, not starting game" ) ; return ; } stopSearchRanked1v1 ( ) ; List < String > args = fixMalformedArgs ( gameLaunchMessage . getArgs ( ) ) ; try { localRelayServer . getPort ( ) ; process = forgedAllianceService . startGame ( gameLaunchMessage . getUid ( ) , gameLaunchMessage . getMod ( ) , faction , args , ratingMode , localRelayPort , rehostRequested ) ; setGameRunning ( true ) ; this . ratingMode = ratingMode ; spawnTerminationListener ( process ) ; } catch ( IOException e ) { logger . warn ( "Game could not be started" , e ) ; notificationService . addNotification ( new ImmediateNotification ( i18n . get ( "errorTitle" ) , i18n . get ( "game.start.couldNotStart" ) , Severity . ERROR , e , Arrays . asList ( new ReportAction ( i18n , reportingService , e ) , new DismissAction ( i18n ) ) ) ) ; } }
target:  Actually starts the game. Call this method when everything else is prepared (mod/map download, connectivity check etc.)