settlers scared by ocean animals

davidlallen

Deity
Joined
Apr 28, 2008
Messages
4,743
Location
California
In Dune Wars (now with its own sub-forum!) we have a problem where AI settlers are built, but left sitting in their cities afraid to move. This is on an archipelago type map, and we have observed that when the ocean animals are removed, then the settlers will move. The ocean animals are actually sandworms, and they are supposed to be able to destroy stuff, that is the point. BTW if you haven't seen the sandworm art, go look and come back. It's jawdropping good.

I would like to find some way to have dangerous ocean animals, but still have the settlers go out. If they do not, then the human player can easily out-expand the AI and the game is not challenging.

I thought about making them into features. I could swap out the feature and then swap it back in when the sandworm moves. But when the user mouses over the terrain, the feature will be noticeably absent; this seems fake.

I have tried making them defensive only just as a test; this did not seem to help, which is weird, because the settler should not be scared of a defensive only animal. Perhaps the AI does not include defensive-only in its check.

Currently the sandworms are part of the standard barbarian civ. I thought about making another civ, which would be friendly with all the other civs. Then the sandworms would belong to this other civ. Maybe the settlers would not be scared. I don't know how to create another civ within python. Also the game mechanics will probably either prevent my friendly civ from attacking, or will make the civ an enemy after it does attack; so that is not a permanent solution in the game.

Can anybody suggest a way to have strong animals, but keep the settlers moving?
 
Well, in CvUnitAI::AI_settleMove there's the following:

Code:
GET_PLAYER(getOwnerINLINE()).AI_getPlotDanger(plot(), 3)

This really shouldn't be a problem, as it checks only plots in the same area ("water" plots would be in a different area) and also checks whether the enemy units could attack into the plot where the settler is (which barb units can not).

So there must be something else going on ...

Does the AI have city sites picked out?
 
I wonder if asking Kael would not be a good idea, given that FfH has a lot of nice sea creatures too.... He might already had adressed that quirk ( I really dunno ;) )
 
Well, in CvUnitAI::AI_settleMove there's the following:

Code:
GET_PLAYER(getOwnerINLINE()).AI_getPlotDanger(plot(), 3)

This really shouldn't be a problem, as it checks only plots in the same area ("water" plots would be in a different area) and also checks whether the enemy units could attack into the plot where the settler is (which barb units can not).

So there must be something else going on ...

Does the AI have city sites picked out?

In Dune Wars, the map is archipelago. So one related function may be AI_getWaterDanger. I am not sure how it affects the decision; we did not trace back far enough yet. I assume the AI realizes that the settler in the boat is vulnerable to barbs, animals and enemies, so it looks for any possible threat (enemy and can attack). It may wait until there is no threat to actually send the settler to the chosen site.

We have also noticed that when there are high strength ocean animals around, the AI gets very nervous and builds a huge number of defensive ocean vessels. So the ocean animals are causing at least two problems.

I have done one experiment where I make the animals into map-only effects using python. From the AI standpoint, this causes units to die unexpectedly, since they cannot see the risk. This is different, but not better, so I would like to find some other solution.

r_rolo1 said:
I wonder if asking Kael would not be a good idea, given that FfH has a lot of nice sea creatures too.... He might already had adressed that quirk ( I really dunno )

Good suggestion. I will also post in one of the FFH forums where he may look.
 
Back
Top Bottom