fix interverted naming : AI_HARD vs AI_CHEATING
Reply To alain_bkr
_("\nThis skill level has the same features as 'Hard', " "but may enjoy additional ruleset-defined bonuses."));
It has *ruleset* defined bonuses, in most rulesets including unlimited rates (that Hard has as a hardcoded bonus). civ2civ3 might be an exception as people are reporting that unlimited rates are actually hurting AIs performance.
I did a second patch, S3_0 only .
/* real AIs */ case AI_LEVEL_NOVICE: case AI_LEVEL_HANDICAPPED: BV_SET(handicap, H_DANGER); /* paranoia : Believes its cities are always under threat. */ BV_SET(handicap, H_PRODCHGPEN); /* may suffer prod penalty when changing city's production * which is not the case generally for sake of code simplicity * and reasonable efficiency of AI */ /* continue below */ case AI_LEVEL_EASY: BV_SET(handicap, H_NOPLANES); /* does not build planes */ BV_SET(handicap, H_LIMITEDHUTS); /* reduced bonus from huts */ BV_SET(handicap, H_DEFENSIVE); /* Prefers defensive buildings and avoids close diplomatic relations. */
I can make a similar comment patch for each branch if someone thinks it is valuable.
Reply To cazfi
Reply To alain_bkr
_("\nThis skill level has the same features as 'Hard', " "but may enjoy additional ruleset-defined bonuses."));
It has *ruleset* defined bonuses, in most rulesets including unlimited rates (that Hard has as a hardcoded bonus). civ2civ3 might be an exception as people are reporting that unlimited rates are actually hurting AIs performance.
No matter what the ruleset adds or removes.
=> just name things correctly with a trivial patch :-)
I ended by making the 'S3_0_add_comments...patch' , because I spent a lot of time to be sure of what H_XYZ 'inverted' does compared to what is written in the help message.
Reply To alain_bkr
Reply To cazfi
Reply To alain_bkr
_("\nThis skill level has the same features as 'Hard', " "but may enjoy additional ruleset-defined bonuses."));
It has *ruleset* defined bonuses, in most rulesets including unlimited rates (that Hard has as a hardcoded bonus). civ2civ3 might be an exception as people are reporting that unlimited rates are actually hurting AIs performance.
* cheating level is handicaped with H_RATE which is a handicap, not a bonus (inverted handicap) compared to HARD. This is opposite to what is explained in the help message.
Lack of H_RATE is a bonus compared to rules, and *Cheating gets equivalent bonus through the rulesets*, but with better control (e.g. in civ2civ3 it's better for the overall AI perfromance *not* to have that freedom (to shoot oneself in the foot, in that ruleset))
Reply To cazfi
Lack of H_RATE is a bonus compared to rules, and *Cheating gets equivalent bonus through the rulesets*, but with better control (e.g. in civ2civ3 it's better for the overall AI perfromance *not* to have that freedom (to shoot oneself in the foot, in that ruleset))
yes lack of H_rate is a bonus
currently in master, ai/difficulty.c , line 125
case AI_LEVEL_CHEATING: BV_SET(handicap, H_RATES); break; case AI_LEVEL_HARD: /* No handicaps */ break;
* HARD has the bonus, and players thinks it is a bug, because tax can be 100% under monarchy and this is forbidden by the rules (no matter if it is efficient or not.)
This behavior would not be reported as a bug for CHEATING, because the player is aware that AI is...cheating.
Edited : in other words , HARD should have BV_SET(handicap, H_RATES); because the help text never informs the player that AI will cheat (and this one is visible by the player)
So, all what you actually want to do is to add H_RATES for hard, so that it would not have that cheat?
Reply To alain_bkr
This behavior would not be reported as a bug for CHEATING, because the player is aware that AI is...cheating.
Minor note that current behavior matches what is documented, e.g. '/help hard' tells it.
I understand why we are discussing so much for a seemingly so simple thing :-)
Your point of view is from inside freeciv-server shell , where no player goes.
The inside server doc seems to automagically generate content, and thus is always correct. But i only went there recently, after many years of occasional play/wait-next-version/retry.
My point of view is a player one, using the GUI :
In the first screen, i can choose ai_level, and they are sorted by strenght. (also no help is available in gtk* first screen, and anyway players never read the doc until it is too late)
As 'cheating' is mentioned, so i don't expect previous levels to cheat (in a visible way). The expected behavior is that CHEATING cheats more than HARD ( be it good or bad is not the question).
In a ticket for something else, i noticed btw that HARD did not respect tax rate, and really thought it was a bug. As a player I don't like when a game is "obviously" buggy, and #42309 will make this very visible
As a newcomer developer, i don't want to waste more of your time.
I propose you to :
case AI_LEVEL_HARD: BV_SET(handicap, H_RATES); break;means:
case AI_LEVEL_HARD: BV_SET(handicap, H_RATES); /* follow government rules wrt %gold / %sci / %lux */ /* below are listed 'inverted' handicaps */ /* BV_SET(handicap, H_TARGETS); without this AI CAN target unknow stuff */ /* BV_SET(handicap, H_HUTS); without this AI KNOWS the location of huts in unexplored territory */ /* BV_SET(handicap, H_REVOLUTION); without this AI AVOIDS anarchy during revolution */ /* BV_SET(handicap, H_PRODCHGPEN); without this AI CAN change city production without penalty */ /* AI always know map and see through fog (v3.x) */ /* BV_SET(handicap, H_FOG); without this AI CAN see through fog of war */ /* BV_SET(handicap, H_MAP); without this AI KNOWS the complete map, including unexplored territory */ break;
Attached a patch to add H_RATES for Hard and Experimental.
- Hardcoded properties of Hard and Cheating are the same, the only difference are ruleset provided cheating for Cheating level - Experimental is like Hard + H_EXPERIMENTAL
Not targeting to stable branches.
Currently AI_LEVEL_HARD is cheating on rates , which is visible by user in nation reports (when AI_LEVEL_CHEATING was not). (All others 'cheats' for AI are not visible to the user)
This is not what a player can expect, as the help says :
(As a player, i played at normal level fist, then hard, and only tried cheating lately , and i expected it to be even strong than hard, not the opposite.)This trivial patch applies on all branches S2_6,S3_0, S3_1, master.
I checked the code in S3_0 , and this patch has no effect other than just naming things correctly, in a way players can understand.