public GameControllerServerSide(Game g, List<PrintWriter> outWriters, List<BufferedReader> playerInputs) {
		gameHistory = "";
		this.game = g;
		players = g.getPlayers();
		String allPlayerReps = "";
		for(int i = 0; i < g.getPlayers().size(); i++){
			RemotePlayer player = (RemotePlayer) g.getPlayers().get(i);
			player.setGameController(this);
			allPlayerReps += (player+":"+player.getFirstCard()+":"+player.getSecondCard()) + ":";
		}
		for(int i = 0; i < g.getPlayers().size(); i++){
			PrintWriter writer = outWriters.get(i);
			writer.println(allPlayerReps + i);
		}
		
		for(int i = 0; i < g.getPlayers().size(); i++){
			
			Player player = g.getPlayer(i);
			
			nameToOutWriter.put(player.toString(), outWriters.get(i));
			nameToPlayerInput.put(player.toString(), playerInputs.get(i));
			
			RemoteCardChooser remoteCardChooser = new RemoteCardChooser(nameToOutWriter,nameToPlayerInput);
			ActionList playerActions = new ActionList(g,player,remoteCardChooser);
			Map<String,Action> actionStringToAction = new HashMap<String,Action>();
			String allActionStrings = "";
			for(Action action : playerActions.getAllActions()){
				String actionString = action.actionDescription();
				actionStringToAction.put(actionString, action);
				allActionStrings += actionString + "++";
			}
			allActionStrings = allActionStrings.substring(0,allActionStrings.length()-2);
			playerActionMaps.put(player.toString(),actionStringToAction);
			outWriters.get(i).println(allActionStrings);
		}
	}