private void addRandomTile(){
		List<Point> freeSpaces = new ArrayList<Point>();
		for(int x = 0; x < GameState.FIELD_SIZE; ++x){
			for(int y = 0; y < GameState.FIELD_SIZE; ++y){
				if(gameState.getTile(x, y) == 0){
					freeSpaces.add(new Point(x, y));
				}
			}
		}
		if(freeSpaces.size() <= 0){ return; }
		Random r = new Random();
		Point choosen = freeSpaces.get(r.nextInt(freeSpaces.size()));
		long value = r.nextInt(2)+1;
		if(gameMode == GameMode.GM2048){ value *= 2; }
		gameState.setTile(choosen.x, choosen.y, value);

		//Performance improvement (game over doesn't has to be calculated this way):
		if(freeSpaces.size() >= 2) {
			//Only one tile was set -> At least one tile is left empty -> game not over yet
			gameState.setGameOver(false);
		}
	}