public static void init() {
        System.out.println(Runtime.getRuntime().availableProcessors() + " available cores detected");
        try {
            Settings.init();
        } catch (IOException e) {
            e.printStackTrace();
        }

        if (networkConnection == null) {
            player = new Player();
            map = Map.load("example_1");

            actors = new ActorSet();
            actors.addAll(map.actors);

            graphics.core.Model.loadModels();
        } else {
            map = networkConnection.getHello().map;
            actors = networkConnection.getActors();

            graphics.core.Model.loadModels(networkConnection.getHello().modelNames);
        }


        //turns on controller if enabled in settings
        if(Settings.Profile.controllerOn) {
            try {
                //starts xbox controller thread
                controller = new XboxInputListener();
                Thread myThread = new Thread(controller);
                myThread.start();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }




        renderer = new graphics.core.Renderer(player.getCamera());
        renderer.setHud(new graphics.Hud(player));
        input = new KeyboardListener();


        // When we pass player.getCamera() the sound doesn't match the player position
        if (sound.Manager.enabled)
            sound.Manager.initialize(player.getCamera());

        game = new GameMultiThread(actors);
        // CL - We need to get input even if the game is paused,
        //      that way we can unpause the game.
        game.addCallback(input);
        game.addCallback(new Updateable() {
            public void update(boolean paused) {
                player.updateCamera();
            }
        });
        if (sound.Manager.enabled) 
            game.addCallback(new Updateable() {
                public void update(boolean paused) {
                    sound.Manager.processEvents();
                }
            });
        // Single player only callbacks
        if (networkConnection == null) {
            //game.addCallback(new AsteroidField());
            game.addCallback(new Bandits());
        }
    }