PDA

Просмотр полной версии : Условия капитуляции ИИ



Lexad
14.08.2008, 22:13
Анализ кода - ori, инициатор вопроса - alexchamp, переводчик - искренне ваш.

ori:
<div class='quotetop'>Цитата</div>
anyway - this code is extremely convoluted... I&#39;ll do my best:

the AI will refuse to capitulate if
- their power is greater than the average of all players
- their power is greater than 2/3 of yours
- their success + 40 is greater than your success

note:
success is +1 for every unit killed and (if I understand the code correctly) +10 for every city captured
if another player is also at war with the AI you want to capitulate and its success is greater than yours the success for the AI you want to capitulate is increased by the difference between your and the third player&#39;s success

power is complicated, I&#39;ll just post the calculation:
yourPower= 2*your power rating (I believe its what the demographics graph shows)*your success / [yourSuccess+theirSuccess]
this is modified: if you are the AIs worst enemy (which is usually the case during war) its multiplied by 3/4, if you have no land connection to the AI its multiplied by 1/2
theirPower=their power rating * VassalPowerModifier for the leader (in Civ4LeaderheadInfos.xml)

note: VassalPowerModifier can be e.g. 10 this means that their power is multiplied by 1.1 - if it is -20, their power is multiplied by 0.8 etc...
[/b]
Код весьма запутан, но вроде так.

ИИ откажется капитулировать, если:
- его сила (немного не та сила, пояснение ниже) больше средней силы всех игроков
- его сила больше 2/3 нашей
- или его военный успех на 40 больше нашего (в войне нас и его, естественно).

За убитый юнит дается +1 успеха, за взятый город (если ori все правильно понял) +10.

Если другой ИИ (Х) тоже в войне с жертвой и его успех больше нашего, то успех жертвы в войне с нами увеличивается на разницу нашего успеха и успеха (Х).

НашаСила = 2*наш рейтинг силы (можно посмотреть в Демографии) * нашУспех / (нашУспех + жертвыУспех)
жертвыСила = их рейтинг силы * (1 + 0.01* Множитель силы для Вассализации VassalPowerModifier) (свой для каждого лидера, смотреть в Civ4LeaderheadInfos.xml)

От тако-то.

ppbis
11.09.2008, 11:47
<div class='quotetop'>Цитата</div>
ИИ откажется капитулировать, если:- его сила (немного не та сила, пояснение ниже) больше средней силы всех игроков- его сила больше 2/3 нашей- или его военный успех на 40 больше нашего (в войне нас и его, естественно).[/b]
Выходит, ИИ может капитулировать независимо от хода войны? Т. е. можно обьявить иму войну, и, практически не воюя, сделать его вассалом только потому, что он слабый?

Lexad
11.09.2008, 14:19
<div class='quotetop'>Цитата</div>
Т. е. можно обьявить иму войну, и, практически не воюя, сделать его вассалом только потому, что он слабый?[/b]
Да, но совсем не воевать не получится - иначе нашУспех = 0, следовательно, нашаСила = 0.

ppbis
11.09.2008, 15:06
Точно, я малость затупил :)

Monster
11.09.2008, 20:40
<div class='quotetop'>Цитата(Lexad * 11.9.2008, 16:19) 260121</div>

<div class='quotetop'>Цитата
Т. е. можно обьявить иму войну, и, практически не воюя, сделать его вассалом только потому, что он слабый?[/b]
Да, но совсем не воевать не получится - иначе нашУспех = 0, следовательно, нашаСила = 0.
[/b][/quote]
Вот только есть тонкий момент:
в начале войны нашУспех=0 и жертвы успех=0, получаем "division by zero".

Lexad
11.09.2008, 21:18
<div class='quotetop'>Цитата</div>
Вот только есть тонкий момент:
в начале войны нашУспех=0 и жертвы успех=0, получаем "division by zero".[/b]
И часто у тебя игра вылетала в начале игры? ;) Я код не видел, только переводил ori, но уверен, что там, как и везде, стартовое значение 1 (или 0,01) - по крайней мере успех жертвы.

Artemios
23.09.2008, 23:40
В общем это конечно объсняет почему непросто завассалить государство типа Ватикан, находящеся на острове из 1 клетки где-то во льдах.

Но думаю там более обширный подсчёт. Так как замечал, что капитуляция никак не происходит за 1 ход, даже если затопить в первый же ход много кораблей и захватить пару прибрежных городов. Кроме того видел, что капитулируется охотнее, если затянуть на территорию врага армию, просто затянуть даже без битв.

Ещё интересно как считается, если воюешь в компании с вассалами, сам в битвах не участвуя.