public void DoTimeStep() {
		// Add ships to each non-neutral planet according to its growth rate.
		for (Planet p : planets) {
			if (p.Owner() > 0) {
				p.AddShips(p.GrowthRate());
			}
		}
		// Advance all fleets by one time step.
		for (Fleet f : fleets) {
			f.TimeStep();
		}
		// Determine the result of any battles
		for (Planet p : planets) {
			FightBattle(p);
		}

		boolean needcomma = false;
		for (Planet p : planets) {
			if (needcomma)
				gamePlayback.append(",");
			gamePlayback.append(p.Owner());
			gamePlayback.append(".");
			gamePlayback.append(p.NumShips());
			needcomma = true;
		}
		for (Fleet f : fleets) {
			if (needcomma)
				gamePlayback.append(",");
			gamePlayback.append(f.Owner());
			gamePlayback.append(".");
			gamePlayback.append(f.NumShips());
			gamePlayback.append(".");
			gamePlayback.append(f.SourcePlanet());
			gamePlayback.append(".");
			gamePlayback.append(f.DestinationPlanet());
			gamePlayback.append(".");
			gamePlayback.append(f.TotalTripLength());
			gamePlayback.append(".");
			gamePlayback.append(f.TurnsRemaining());
		}
		gamePlayback.append(";"); //added for logging turns - Melvin
		gamePlayback.append(numTurns); //added for logging turns - Melvin
		gamePlayback.append(":");
		// Check to see if the maximum number of turns has been reached.
		++numTurns;
	}