/// <summary>
    /// Initialization of required variables for proper game manager behavior.
    /// </summary>
    void Init()
    {
        /** Player init **/
        playerObject = new Dictionary <string, GameObject>();
        GameObject[] playerObjects = GameObject.FindGameObjectsWithTag("Player");
        foreach (GameObject g in playerObjects)
        {
            playerObject.Add(g.name, g);
        }
        if (DefinedVariables.IsMultiplayerOn == false)
        {
            playerPucksFormation = SC_GameTactics.ChosenFormation(DefinedVariables.chosenFormation);
        }


        /** Enemy init **/
        enemyObject = new Dictionary <string, GameObject>();
        GameObject[] enemyObjects = GameObject.FindGameObjectsWithTag("Enemy");
        foreach (GameObject g in enemyObjects)
        {
            enemyObject.Add(g.name, g);
        }
        if (DefinedVariables.IsMultiplayerOn == false)
        {
            ChooseEnemyTeamAndFormation();
            enemyPucksFormation = SC_GameTactics.EnemyFormation(enemyChosenFormationIndex);
        }

        /** UI init **/
        uiObject = new Dictionary <string, GameObject>();
        GameObject[] uiObjects = GameObject.FindGameObjectsWithTag("SinglePlayerUI");
        foreach (GameObject g in uiObjects)
        {
            uiObject.Add(g.name, g);
        }
        uiObject["Image_GameFinished"].SetActive(false);
        uiObject["Text_Username"].GetComponent <Text>().text = DefinedVariables.userName;

        /** General init **/
        initialPuckPositioningSpeed = 480.0f;
        IsPuckMoving = false;
        IsGameOver   = false;
        EventSubs();
        if (DefinedVariables.IsMultiplayerOn == false)
        {
            InitPucksTeamLogoImg();
            IsPlayerTurn = true;
            ResetRound();
        }
    }