widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #13606
Re: [Merge] lp:~widelands-dev/widelands/frisian_balancing_with_ai_hints into lp:widelands
As for grouping the same buildings together - I was proposing new vector of nearby productionsites based on id - this could be used here
Also see some comments in code.
Generally we can do small tweaks in this branch even if out of scope :)
Diff comments:
>
> === modified file 'src/ai/defaultai.cc'
> --- src/ai/defaultai.cc 2018-04-29 09:20:29 +0000
> +++ src/ai/defaultai.cc 2018-06-03 20:52:04 +0000
> @@ -2867,16 +2883,21 @@
>
> if (bo.is(BuildingAttribute::kSpaceConsumer)) {
> // we dont like trees nearby
> + // NOCOM this means we must have 30 trees in a radius of 6 to get a negative value
> + // NOCOM note: the radius to calculate all nearby values is hardcoded to 6 (kProductionArea)
> prio += 1 - bf->trees_nearby / 15;
I dont mind changing 15 to lower number (or remove "/ 15" entirely), even in this branch
> // we attempt to cluster space consumers together
> + // NOCOM not sure whther rangers are considered here as well cause they have also the
> + // NOCOM space consumer = true AI hint.
> prio += bf->space_consumers_nearby * 2;
see https://bazaar.launchpad.net/~widelands-dev/widelands/frisian_balancing_with_ai_hints/view/head:/src/ai/defaultai.cc#L5797
rangergs are excluded from space_consumers_nearby
> // and be far from rangers
> + // NOCOM as rangers have a very big working area we might be still to close to them
This probably need two ranges when looking for neighbors - doeable, but more CPU will be used
> prio += 1 -
> bf->rangers_nearby *
> std::abs(management_data.get_military_number_at(102)) / 5;
> } else {
> // leave some free space between them
> - prio -= bf->producers_nearby.at(bo.outputs.at(0)) *
> + prio -= bf->collecting_producers_nearby.at(bo.collected_map_resource) *
> std::abs(management_data.get_military_number_at(108)) / 5;
> }
>
> @@ -5714,6 +5736,9 @@
> }
> assert(bo.stocklevel_count < std::numeric_limits<uint32_t>::max());
> } else if (!bo.outputs.empty()) {
> + // NOCOM from what I understand from the definition of calculate_stocklevel
> + // it is expecting a ware index or a worker index but I believe we are delivering a building index here
> + // might lead to nonsense results.
The function is overloaded:
https://bazaar.launchpad.net/~widelands-dev/widelands/frisian_balancing_with_ai_hints/view/head:/src/ai/defaultai.cc#L5690
> bo.stocklevel_count = calculate_stocklevel(bo, what);
> } else {
> bo.stocklevel_count = 0;
--
https://code.launchpad.net/~widelands-dev/widelands/frisian_balancing_with_ai_hints/+merge/347166
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/frisian_balancing_with_ai_hints into lp:widelands.
References