Complete.Org: Mailing Lists: Archives: freeciv-ai: October 2004:
[freeciv-ai] Re: [Freeciv-Dev] (PR#10216) AI Builds Too Many Transports

[freeciv-ai] Re: [Freeciv-Dev] (PR#10216) AI Builds Too Many Transports

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: undisclosed-recipients: ;
Subject: [freeciv-ai] Re: [Freeciv-Dev] (PR#10216) AI Builds Too Many Transports
From: "Benedict Adamson" <badamson@xxxxxxxxxxx>
Date: Sun, 3 Oct 2004 18:19:13 -0700
Reply-to: rt@xxxxxxxxxxx

<URL: >

I've done some further investigation of this problem. Initially I'd 
thought that the city code for emigrating settlers (function 
domestic_advisor_choose_build) was building transports for colonists too 
often. However, debugging with additional  assertions and logging code 
suggests that the military advisor is making the decision to build the 
numerous transports.

What seems to happen is this:

1) The military advisor (function military_advisor_choose_build) 
considers building a naval attacker (for example, a battleship) by 
calling ai_choose_attacker(pcity, SEA_MOVING).

2) When the military adviser examines whether it can use that attacker 
(by calling function kill_something_with), the code can select a land 
unit as the target. That is, it can choose a naval bombardment.

3) That code (kill_something_with)) then checks whether there is a path 
from the city (were the attacker will begin) and the target (the enemy 
land unit to be bombarded), using function goto_is_sane. That call is 
used to decide whether a land attacker needs a ferry; a land attacker 
will need a ferry if there is no valid (land) path from the city to the 
target. However, the function is also used for sea attackers. For those 
units, the kill_something_with function incorrectly concludes that the 
(naval!) attack unit will need a ferry (go_by_boat becomes TRUE). I 
guess it is not handling the 'overlap' needed for shore bombardment 

4) Consequently, the military adviser decides to build a transport for 
some (many?) cases when it should build a naval attacker.

Note that there is no feed back loop here: the completion of an 
additional transport will not diminish the desire to build more transports.

Does this analysis seem plausible? I'm investigating further, and 
testing a candidate fix.

[Prev in Thread] Current Thread [Next in Thread]