public void LaunchGame()
        {
            var playerCount = PlayerCount;
            var fascistCount = playerCount % 2 == 0 ? playerCount / 2 - 1 : playerCount / 2;
            var liberalCount = playerCount - fascistCount;

            //Generate Decks

            PlayerHand[] decks = new PlayerHand[playerCount];
            var j = 0;
            for (var i = 0; i < fascistCount; i++, j++)
                decks[j] = new PlayerHand(new CardSecretRoleFascist(i), new CardMembershipFascist());
            for (var i = 0; i < liberalCount; i++, j++)
                decks[j] = new PlayerHand(new CardSecretRoleLiberal(i), new CardMembershipLiberal());

            Player hitler = null;
            var fascists = new List<Player>();
            //Shuffle and hand out decks
            decks.Shuffle();
            var sendMsgs = new ServerResponse();
            StartGame();
            for (var i = 0; i < playerCount; i++)
            {
                var player = SeatedPlayers[i];
                player.Dead = false;
                player.Hand = decks[i];
                var sendToPlayer = new NetworkCardObject(ServerCommands.AnnounceCard, decks[i].Membership, decks[i].Role, decks[i].Yes, decks[i].No);
                if (decks[i].Role.IsFascist)
                    fascists.Add(player);
                if (decks[i].Role.IsHitler)
                    hitler = player;
                sendMsgs.AddObject(sendToPlayer, player);
                //Announce decks to player
            }
            var rand = new Random(Environment.TickCount * 5);
            var president = SeatedPlayers[rand.Next(playerCount)];
            SetPresident(president);
            var presidentMsg = new NetworkPlayerObject(ServerCommands.AnnouncePresident, president);
            sendMsgs.AddObject(presidentMsg);
            //Announce Fascists to other party members
            for (var i = 0; i < playerCount; i++)
            {
                var player = SeatedPlayers[i];
                if (player.Hand.Membership.IsFascist && (playerCount <= 6 || !player.Hand.Role.IsHitler))
                    foreach (Player announcePlayer in fascists)
                        if (player != announcePlayer)
                            sendMsgs.AddObject(new NetworkRevealRoleObject(announcePlayer), player);
            }
            Server.SendResponse(sendMsgs);
            FascistActions = FascistAction.GetActionsForPlayers(playerCount);
        }