Feature Requests and Discussion

Kiech said:
The last time it happened to me, I had to wait like 10 turns, but they capitulated. Try to avoid getting EXTRA negative marks when you are at war with them.
Interesting. So if I had just waited long enough it would have become an option? I guess I should have just dragged the first war out another dozen turns instead of making peace and coming back for the last city in a second war. Still, this seems silly to me.
I did manage to get capitulation in my latest game by following this formula. It appears that you just need to be at war for a certain amount of time in order to get your opponent to accede to capitulation. If the war is new enough, than it won't be an option no matter what the relative power situation is. It takes much longer to become a possibility than other things, like techs or money or cities, though.
 
Has anyone proposed changing the Tower of Mastery from a building to a project? Rush buying/GE building it and avoiding the period of always-war seems a bit cheesy to me.

EDIT: Same for the Altar of Luonnotar (Final). I suppose the one downside with changing that one is that you lose the associated bonuses with the building if you're playing with the victory condition off (but who does that?).
 
Could you allow python to force map trading between players, or better yet give the sort of visibility that can be gained from being on the same team or using the Steal Plans espionage mission?

I very much like the idea of the Shape Maps resolution I have added to my modmod, but I am afraid that the way it currently works (by using python to cycle through all the players in he game and tiles on the map to set every tile revealed to one Overcouncil member as revealed to all of them) slows the game down considerably.
 
Has anyone proposed changing the Tower of Mastery from a building to a project? Rush buying/GE building it and avoiding the period of always-war seems a bit cheesy to me.

EDIT: Same for the Altar of Luonnotar (Final). I suppose the one downside with changing that one is that you lose the associated bonuses with the building if you're playing with the victory condition off (but who does that?).

I turn them both off. I suspect I'm not the only one ;)
 
I don't turn anything off either.
Tholal has responded to this in the past though - he considers it a feature.
This is a EitB change of course.
@MC I would hate to be "forced" to trade maps or give visibility in mp.
 
Tholal, do you have any way of associating a tech with a tech line, like culture, mounted, recon, melee?

I want to specialize emerging BarbarianCivs a bit, and such information would be useful.

FLAVOR_XXX only has MILITARY. If there is not a way I overlooked, I will probably add some extra FLAVOR types, and I want to avoid conflicts and inconsistence with things you are possibly planning.
 
Is it possible to more heavily guide the AI in civic choices and worker choices? I grow frustrated watching my teammate civ screw up his economy when playing Basium or a civ that summons Basium, but this applies more generally.

Most of this comes from atakosh's guide. The main questions I'm asking here are:

  1. What should workers be building on flood plains and flat grassland tiles?
  2. What civics should the civ be picking?

The answers, generally:

  • Kuriotates and Bannor should prefer cottages to farms on all flatland tiles with the exception of farm resource tiles and the occasional tile for carrying irrigation to a city or farm resource tile. Ljosalfar and Svartalfar should similarly prefer cottages over farms on any forested tile.

    As such, these civs should avoid Aristocracy and Agrarianism in favor of one of the other four choices in those civics, depending on the situation. God King should be an early priority for all four. Svart/Ljos should go for GoN fairly quickly.

    (Also, Ljosalfar/Svartalfar should almost never build lumbermills - they do this way too much. A cottage/mine or workshop/windmill is almost always better on a forest tile.)

  • Most other civs should try to prioritize farms on grassland and flood plains, and go for Aristocracy + Agrarianism, with no changes in Government until late in the game, and never switching from Agrarianism.

  • Lanun, Sidar, and Infernals have their own peculiarities and would probably each need a customized guidance. Lanun can start Aristograrian but can head other ways once their water economy starts going. Sidar should start Aristograrian but want to move towards XP-maximizing Civics (Theocracy+Apprenticeship+Conquest) once their production is strong. Infernals have no use for Aristograrianism or, ironically, Sacrifice the Weak - they will often want Guilds or Caste System when those become available but are fairly open-ended aside from that.

Additionally, all civs should avoid farming non-farm resource plains tiles unless they have no other food options in the BFC. Plains are for cottages (or lumbermills, if available, or workshops later).
 
IMO the AI should just evaluate its units, civics, buildings and any other unique options it has to decide what to do as it is doing now. If the AI is just forced to follow a certain path, it will lose its flexibility and any game changes (coming either from MNAI or any modmods based on it) would require rewriting the AI code instead of requiring no changes at all or just tweaking the evaluation options.
 
IMO the AI should just evaluate its units, civics, buildings and any other unique options it has to decide what to do as it is doing now. If the AI is just forced to follow a certain path, it will lose its flexibility and any game changes (coming either from MNAI or any modmods based on it) would require rewriting the AI code instead of requiring no changes at all or just tweaking the evaluation options.

Right now, what the AI does is wrong more often than not. It would be great if the AI was clever enough to recognize when an unusual strategy was called for. But what happens right now is that, quite often, the AI will bounce around between civics when the standard approach would work very well and there's no reason to deviate from that.

FWIW, What I laid out there is very far from a straightjacket. I'm suggesting basically locking one of four civics (Agrarianism) for twelve civs, and leading them strongly towards a second (Aristocracy) for midgame. I'm suggesting basically locking one civic (GoN) for two civs. I'm suggesting a suite of civics should be more strongly emphasized for the Sidar. That still leaves a ton of options - 2 civics wide open and a third open in early and late game for the 12 aristograrians, and 3 or 4 civics open for 6 of the other 7 civs. That's a lot of flexibility to play the situation and the map.

Yes, I agree that it would be great if the AI could "evaluate its units, civics, buildings and any other unique options it has to decide what to do", and do better than just going Arisograrian every time with most civs. But that's manifestly not the case currently. At the least, the AI should be pushed more heavily towards the options that are usually best.
 
I'm not talking about the AI being forced to follow a certain path.
I simply need a way to identify to what group a tech belongs and I'm trying to find out if there is another, maybe better way than adding FLAVORs.

EDIT: OK, Terkhen, you referred to doktarr?

It just came to my mind that I maybe could also loop the units and buildings enabled by a tech to find it's group
 
Could you allow python to force map trading between players, or better yet give the sort of visibility that can be gained from being on the same team or using the Steal Plans espionage mission?

I would imagine this sort of thing is already available to python. What are the function names you're trying to use?

Is it possible to more heavily guide the AI in civic choices and worker choices?

IMO the AI should just evaluate its units, civics, buildings and any other unique options it has to decide what to do as it is doing now. If the AI is just forced to follow a certain path, it will lose its flexibility and any game changes (coming either from MNAI or any modmods based on it) would require rewriting the AI code instead of requiring no changes at all or just tweaking the evaluation options.

Terkhen is correct and that's the way I try to approach the AI coding. Locking them into a certain path is not a good idea. What if you're playing an Archipelago map? Aristo-grarianism probably wont be so great.

The best way is to teach the AI why certain choices are more valuable than others and to evaluate its current situation to figure out the best choices. Easier said than done of course.

I agree that the AI's use of Workers is pretty poor overall. The whole thing could probably use a good comb-over. If anyone is interested in taking on this task, the code starts in CvUnitAI::AI_workerMove()


Tholal, do you have any way of associating a tech with a tech line, like culture, mounted, recon, melee?

I want to specialize emerging BarbarianCivs a bit, and such information would be useful.

FLAVOR_XXX only has MILITARY. If there is not a way I overlooked, I will probably add some extra FLAVOR types, and I want to avoid conflicts and inconsistence with things you are possibly planning.

It just came to my mind that I maybe could also loop the units and buildings enabled by a tech to find it's group

That's what the DLL does when evaluating techs and is kind of what I was referring to. Does your Barbarian mod edit the DLL? If not, then I'm not sure you can add new Flavor types.
 
I would imagine this sort of thing is already available to python. What are the function names you're trying to use?

I haven't found anything in the BtS API that seems like it would do either of those.

I can find how to tell if a unit is able to steal plans, or the odds of it succeeding. It depends on a unit and its plot though. I see a way to force an espionage mission, but it is also specific to a unit and requires adding the mission to the xml.

I can see whether a player is willing to trade a map, but don't see a way to make it actually trade it.

I currently have it working like this:
Code:
		elif iMembership == gc.getInfoTypeForString('CIVIC_OVERCOUNCIL'):
			iOvercouncil = gc.getInfoTypeForString('DIPLOVOTE_OVERCOUNCIL')
			bShare = CyGame().isVotePassed(gc.getInfoTypeForString('VOTE_SHARE_MAPS'))
			for iPlayer2 in range(gc.getMAX_PLAYERS()):
				if iPlayer != iPlayer2:
					pPlayer2 = gc.getPlayer(iPlayer2)
					if pPlayer2.isAlive():
						if pPlayer2.isFullMember(iOvercouncil):
							iTeam2 = pPlayer2.getTeam()
							if iTeam != iTeam2:
								eTeam.setHasEmbassy(iTeam2, True)
								if bShare:
									for iPlotIndex in range(CyMap().numPlots()):
										pLoopPlot = CyMap().plotByIndex(iPlotIndex)
										if pLoopPlot.isRevealed(iTeam, False):
											pLoopPlot.setRevealed(iTeam2, True, False, iTeam)
			if bShare:
				CyMap().updateVisibility()

(It is elif because this comes right after lines making sure members of the Undercouncil have embassies with each other too.)
 
FWIW, What I laid out there is very far from a straightjacket. I'm suggesting basically locking one of four civics (Agrarianism) for twelve civs, and leading them strongly towards a second (Aristocracy) for midgame. I'm suggesting basically locking one civic (GoN) for two civs. I'm suggesting a suite of civics should be more strongly emphasized for the Sidar. That still leaves a ton of options - 2 civics wide open and a third open in early and late game for the 12 aristograrians, and 3 or 4 civics open for 6 of the other 7 civs. That's a lot of flexibility to play the situation and the map.

Although it may be certainly possible to create a "fixed" implementation for each civilization and/or civic that is flexible, it is still a straightjacket in the development sense. Although the current path may not give optimal results in all situations, it has been greatly improved since its beginning and it will continue to improve in the future thanks to Tholal's great work with the AI. Eventually, it will do what you want. If we switch to a fixed implementation, we are renouncing to the advantages of the flexible implementation forever.

Yes, I agree that it would be great if the AI could "evaluate its units, civics, buildings and any other unique options it has to decide what to do", and do better than just going Arisograrian every time with most civs. But that's manifestly not the case currently. At the least, the AI should be pushed more heavily towards the options that are usually best.

In that case the way that the AI evaluates civics and its civilization own strengths needs to be tweaked. For example, an AI leading the Sidar should evaluate the extra benefits of its specialists and plan civics accordingly. The decision of using aristograrian would then emerge from its own evaluations, instead of being forced to adopt it. Under certain circumstances, aristograrian may not be an optimal choice for the Sidar and the AI should also plan accordingly.

I'm not talking about the AI being forced to follow a certain path.
I simply need a way to identify to what group a tech belongs and I'm trying to find out if there is another, maybe better way than adding FLAVORs.

EDIT: OK, Terkhen, you referred to doktarr?

It just came to my mind that I maybe could also loop the units and buildings enabled by a tech to find it's group

Yes, I was referring to doktarr's post. Barbarians do not need to be flexible IMO, just flavourful. Therefore, a fixed set of rules to push each barbarian type to the units it should be building would be okay.
 
I'm suggesting a suite of civics should be more strongly emphasized for the Sidar.

In that case the way that the AI evaluates civics and its civilization own strengths needs to be tweaked. For example, an AI leading the Sidar should evaluate the extra benefits of its specialists and plan civics accordingly.

Good example! I just looked through the Player AI and couldnt find anywhere that it evaluates any bonuses that it gets from SpecialistTypeExtraCommerce (which is a new tag that Kael added for FFH):eek: ! I'll enter a bug for that issue. Thanks for pointing this one out guys!
 
Heh, maybe that's part of the reason why I've never seen the AI Sidar do well.
Although it may be certainly possible to create a "fixed" implementation for each civilization and/or civic that is flexible, it is still a straightjacket in the development sense. Although the current path may not give optimal results in all situations, it has been greatly improved since its beginning and it will continue to improve in the future thanks to Tholal's great work with the AI. Eventually, it will do what you want. If we switch to a fixed implementation, we are renouncing to the advantages of the flexible implementation forever.
I still feel like this is a little bit of a dodge.

Why do Khazad (for all practical purposes) ALWAYS go for Runes, and Ljosalfar ALWAYS go for Leaves? If this is hard coded, then frankly, that's fine with me, because well over 95% of the time it's the best choice for the AI anyway. If it's not a pure hard-code, then at the least there are some heavy weights pointing these civs towards those choices. Why can't we do the same to push the civs towards their best civic choices?

You can come up with examples where the Khazad shouldn't go for Runes, and probably even an example where the Ljosalfar shouldn't go for Leaves. But the overwhelming majority of the time these are the right choices, and it's correct to lead the AI into them. Similarly, you can come up with cases where Flauros shouldn't choose Agrarianism. But these cases are very rare. Right now we have a situation where Flauros is about as likely to run Foreign Trade as Aristograrianism, and that's just silly.

If we steer the AI towards the correct religion choices when one choice is dominant over another, why not do the same for civics?
 
Back
Top Bottom