Dom Pedro II
Modder For Life
jdog,
What's been your focal point for the next release, and when can we expect it?
What's been your focal point for the next release, and when can we expect it?
jdog,
What's been your focal point for the next release, and when can we expect it?
Does the AI not consider their military resource situation when choosing techs?
Yes, although the real content of AI tech decision making is hardly changed.
AttitudeTypes CvTeamAI::AI_getAttitude(TeamTypes eTeam, bool bForced) const
{
int iAttitude;
int iCount;
int iI, iJ;
FAssertMsg(eTeam != getID(), "shouldn't call this function on ourselves");
iAttitude = 0;
iCount = 0;
/************************************************************************************************/
/* BETTER_BTS_AI_MOD 10/24/09 ######## */
/* */
/* Diplomacy AI */
/************************************************************************************************/
int iAttitudeWeight = 0;
/************************************************************************************************/
/* BETTER_BTS_AI_MOD END */
/************************************************************************************************/
for (iI = 0; iI < MAX_PLAYERS; iI++)
{
if (GET_PLAYER((PlayerTypes)iI).isAlive())
{
if (GET_PLAYER((PlayerTypes)iI).getTeam() == getID())
{
for (iJ = 0; iJ < MAX_PLAYERS; iJ++)
{
if (GET_PLAYER((PlayerTypes)iJ).isAlive() && iI != iJ)
{
TeamTypes eTeamLoop = GET_PLAYER((PlayerTypes)iJ).getTeam();
if (eTeamLoop == eTeam || GET_TEAM(eTeamLoop).isVassal(eTeam) || GET_TEAM(eTeam).isVassal(eTeamLoop))
{
/************************************************************************************************/
/* BETTER_BTS_AI_MOD 10/24/09 ######## */
/* */
/* Diplomacy AI */
/************************************************************************************************/
/*
iAttitude += GET_PLAYER((PlayerTypes)iI).AI_getAttitude((PlayerTypes)iJ, bForced);
*/
int iMySideWeight = GET_PLAYER((PlayerTypes)iI).getTotalPopulation() + 1;
int iTheirSideWeight = GET_PLAYER((PlayerTypes)iI).getTotalPopulation() + 1;
if (GET_TEAM(GET_PLAYER((PlayerTypes)iI).getTeam()).isAVassal()) {
iTheirSideWeight /= 3;
iTheirSideWeight += 1;
}
int iLocalWeight = iMySideWeight * iTheirSideWeight;
iAttitudeWeight += iLocalWeight;
iAttitude += iLocalWeight * GET_PLAYER((PlayerTypes)iI).AI_getAttitudeVal((PlayerTypes)iJ, bForced);
/************************************************************************************************/
/* BETTER_BTS_AI_MOD END */
/************************************************************************************************/
iCount++;
}
}
}
}
}
}
if (iCount > 0)
{
/************************************************************************************************/
/* BETTER_BTS_AI_MOD 10/24/09 ######## */
/* */
/* Diplomacy AI */
/************************************************************************************************/
/*
return ((AttitudeTypes)(iAttitude / iCount));
*/
// This function is the same for all players, regardless of leader or whatever
// so it's fine to use it for the team's attitude
return GET_PLAYER(getLeaderID()).AI_getAttitudeFromValue(iAttitude/iAttitudeWeight);
/************************************************************************************************/
/* BETTER_BTS_AI_MOD END */
/************************************************************************************************/
}
return ATTITUDE_CAUTIOUS;
}
which the UI doesn't show
The attitude of AIs towards you (or other AIs) remains their average of the attitudes of their team members towards you and your vassals.
It doesn't matter if you are a continent-spanning empire, and your vassal is a beat down single city in the corner you accepted capitulation from, or a small colony you split off.
But why not make vassals painless for diplomacy? Vassal states are less useful than simply destroying an enemy civ as it is.
OFC this would enter in the game desing side of the barricade, but all the sugestions done so far in here enter there as wellWell, I would not call the interface liar... the fact is that, if you look well, the intel is all there ( yes, including the hidden modifiers, if you care to look at the global diplo in a turn-per-turn basis ). But I would definitely call the interface badly implemented, because it doesn't show important intel in a easy way. Those things are very diferent: the UI will never tell you that a AI is pleased with you when it is annoyed with you ( thus is not a liar ), but it won't tell you that will act as it was annoyed with you in spite of being pleased with you because you have a vassal that it dislikes furiously ( the badly implemented part ).
On the mechanics proper : IMHO, and this is a opinion that I have for a long time, the averaging part is stupid, because it doesn't reflect the simple fact that , for what matters, the important part of the diplo ( war and peace ) is made with/taking account the relationship with the master. The averaging reduces the master just one more of that "team" and if there is a lot of vassals ( like in games with lots of civs , where it is not uncommon to see civs with 6, 7 or more vassals ) it makes almost inconsequent gaining good stances for the master ( even if I go to friendly with other civ, they will never be really friendly if it isn't friendly with one of my who knows how much vassals , so why bother? ) and will make less atractive to mend relations with people that is in ill disposition towards you if by acident they like your vassals a lot more than you ( it happens ).
I sincerily would had prefered that, in stead of averaging, they gave a positive or negative diplo bonus ( obviously not hidden ) per vassal. Something like +2 We like your vassal(s) or -2 We dislike your vassal(s) ( maybe with a -2 Your vassal is our worst enemy in top ) . That way the diplomacy would be decided by the relationships with the master, but taking in account who are the vassals of that master instead of treating master and vassals as equal partners, a thing they obviously aren't.
The spy AI was really weak ... it picked targets basically randomly based on distance and attitude. Also, you know how sometimes your farm would get destroyed and you'd wonder WTH? Yeah, that behavior is completely random ... AI spies would never set out to destroy normal improvements (they do go after bonuses), but if they're wandering around exploring your territory and happen to start a turn on your farm, they'll go for it. Anyway, spies should now actually get in position and revolt down city defenses when attack stacks show up, something they couldn't do before since they moved after attack stacks so the 1 turn of revolt would have been pointless.
But why not make vassals painless for diplomacy? Vassal states are less useful than simply destroying an enemy civ as it is.
ideally the vassals should not be able to toss someone from friendly to annoyed, right?
Interestingly, the three kinds of vassals are different.However, treating vassals as equals doesn't really make sense to me. If Japan declares war on China and India, and India whoops on Japan until they capitulate, why should the relations between India and China suffer much? For China to effectively spread the "-3 you declared war on us" between India and Japan is ludicrous.
But what makes a good mechanic for vassals? So far the suggestions have been:
- Leave averaging as is
- Weight the averaging based on empire size (population)
- Instead of averaging, add something between -2 and +2 per vassal based on attitude towards vassals
- Remove vassal consideration entirely