public TimeSliceGame ProcessGame(ScGame game, int timeGranularity, int timeSlices)
        {
            List<GameStateVector> gameStateVectors = new List<GameStateVector>();

            for (int i = 0; i < timeSlices; i++)
            {
                List<ScEvent> events = game.Events.Where(e => e.Time < timeGranularity * (i + 1)).ToList();

                Dictionary<string, float> unitCounter = new Dictionary<string, float>();
                IniUnitCounter(unitCounter, game.Race);

                foreach (ScEvent scEvent in events)
                {
                    if (unitCounter.ContainsKey(scEvent.Unit))
                    {
                        unitCounter[scEvent.Unit]++;
                    }
                    else
                    {
                        unitCounter.Add(scEvent.Unit, 1);
                    }
                }

                GameStateVector gsv = new GameStateVector() { UnitCounter = unitCounter };
                gameStateVectors.Add(gsv);
            }

            return new TimeSliceGame() { GameStateVectors = gameStateVectors, Race = game.Race , Replay = game.ReplayFile};
        }
        public NodeList<ScEvent> buildTree(int counter, ScGame game, List<ScGame> games)
        {
            NodeList<ScEvent> result = new NodeList<ScEvent>();
            if (++counter < game.Events.Count)
            {
                ScEvent r = game.Events[counter];
                result.Add(new Node<ScEvent>(1, r, buildTree(counter, game, games)));
            }

            return result;
        }
        public UnitTimeVector ProcessGame(ScGame game)
        {
            UnitTimeVector v = new UnitTimeVector();
            v.Race = game.Race;
            v.Replay = game.ReplayFile;

            IniVector(v.Vector, game.Race);

            foreach (ScEvent scEvent in game.Events)
            {
                if (v.Vector[scEvent.Unit] > scEvent.Time)
                    v.Vector[scEvent.Unit] = scEvent.Time;
            }

            return v;
        }