Arrakis.py map script discussion

Ah-ha! You are still on this thread. Great. On another thread we were discussing about reducing the peak percentage, but deliverator tried and reported that any reduction leaves huge boring flat areas. Killing one out of a 2x2 seems to give "spiny" results, that is, you have rows of mesa around. That seems right. I am sure a few people will try it out and see what they think.

In related news, the Fremen are still dying young. Their settler has a promotion to move on all terrain, and they do not have any early game transport units. As a player, I can expand pretty fast; but the AI seems to totally stall. Apart from giving them a transport unit, can you suggest something in the AI which we might adjust?
 
Arrakis version 0.55. This is a patch since it also retunes bonus placement and ensures bonuses are placed according to the XML rules whatever mapscript or scenario is used.

I have altered the options to simplify things and allow the polar area size to be altered, in response to koma's request for bigger polar areas on smaller mapsizes. The grain and noise options are bundled into a new Landmass Style option. You can also alter the outer radius of the land area. By varying the options quite a wide range of styles of map can be created.

Land Percentage
16, 18, 20, 22 (Default), 24, 26

Landmass Style
Islands Style (Default) (Grain 8, Noise 1.5)
Irregular Islands Style (Grain 8, Noise 1.75)
Pangaea Style (Grain 16, Noise 1)

Landmass Outer Radius
64, 66, 68 (default), 70, 72, 74 degrees
This controls roughly how far land will extend away from the pole

Polar Region Size
Normal (Default), Bigger, Biggest
Bigger or Biggest recommended for Small size and below
 
In related news, the Fremen are still dying young. Their settler has a promotion to move on all terrain, and they do not have any early game transport units. As a player, I can expand pretty fast; but the AI seems to totally stall. Apart from giving them a transport unit, can you suggest something in the AI which we might adjust?

Remember the AI is area based. You have to have the appropriate units continue their missions through the ocean areas. You might try setting ocean to AREAAI_AGGRESSIVE and see if that doesn't break a bunch of stuff.
 
It would have to be AREAAI_OFFENSIVE or AREAAI_ASSAULT, there isn't a AREAAI_AGGRESSIVE.

To my inexperienced eyes it looks like all that would have to be changed is line 653 in CvTeamAI.cpp.
 
It would have to be AREAAI_OFFENSIVE or AREAAI_ASSAULT, there isn't a AREAAI_AGGRESSIVE.

To my inexperienced eyes it looks like all that would have to be changed is line 653 in CvTeamAI.cpp.

Yes, OFFENSIVE, that's it. You don't want assault, or else they will go back home and try to board ships.
 
If a workaround is needed, you could give the Fremen a transport that uses some infantry graphic and call it an escort, or something. It may be possible to swap out the unit's graphics for one that adds some soldiers to the settler unit graphic when the settler is loaded onto the transport. Or you could give one of the existing early units that they build anyway the ability to transport 1 unit with the specialunit type that matches only the settler (again, possibly fiddling with the grapics when loaded).

This isn't much of a change since settlers are non-combat and automatically die if whatever units are with them get killed. It adjusts their settlers so they will use a transport of some sort instead of setting off across the desert alone.
 
To my inexperienced eyes it looks like all that would have to be changed is line 653 in CvTeamAI.cpp.

I have not taken much time to look through the function, either before or after cephalo's change. But, I did one small experiment. On a tiny 3 player map, I ran 255 turns once without this change. Then I changed line 653 to return OFFENSIVE, reloaded the initial position, and ran again. In the original, unexpectedly, the Fremen expanded fine and in fact started a colony on the other side of the map. Clearly they got there somehow. In the revised, they did not start a colony on the other side. The other two AI players looked about the same. The total population and number of cities were about the same.

I will try some more autoplays with and without, to see if I can get a smoking gun. But, is this one line change really all that is needed?
 
the Fremen expanded fine and in fact started a colony on the other side of the map

Keep in mind that very, very often the Fremen get offshore colonies by conquering barbarian cities (defended by soldiers) with their crysknife fighters.

So in just a couple of simulation runs, it is easy to get false interpretations depending on the randomness of whether this happened or not. Check if the city name of their colony comes from the barbarian list or the Fremen city list.
 
Good point. The Fremen colony city was called "Uzbek" so it is clearly a captured barb city. This change requires some focused study.
 
The fundamental issue is probably going to be that AI is designed to be continental - it assigns states (AREAAIs) to each continent. I wonder whether giving all the ocean tiles on the map the same state is sophisticated enough a solution. There will probably be situations in which you want the AI to treat ocean as AREIAI_OFFENSIVE and some where it should be AREIAI_DEFENSIVE, AREIAI_NEUTRAL or whatever. Briefly skimming the amount of code that determines the status for continents, it feels like giving ocean the same status whatever the circumstances might be too simplistic.

It might be a question of thinking what behaviour you actually want. Cephalo did a good job of this within the transport logic I think, he decided roughly how he wanted the AI to act in different circumstances and then wrote some code to create that behaviour. Perhaps the Fremen need to treat ocean tiles differently to all other factions.
 
I wonder whether giving all the ocean tiles on the map the same state is sophisticated enough a solution.

All I want is for the AI to recognize that the settler and soldier can travel on all terrains. This would never happen in vanilla; perhaps the AI just needs to check whether settlers need transport to cross oceans instead of assuming it.
 
Good point. The Fremen colony city was called "Uzbek" so it is clearly a captured barb city. This change requires some focused study.

Easiest way is just to remove barbarians from the game when doing simulation runs.

Perhaps the Fremen need to treat ocean tiles differently to all other factions.

Yes, I think this is the case. Fremen need to realize that a) they can walk across desert with land units without transports to get to land on the other side, and b) they can conduct combat in deserts; if you attack me with a stack of transports, the fremen infantry can head out into the desert to destroy them.

Another possibility: if you don't want to give guardsmen the sandrider promotion so that they can cross desert by themselves, why don't you eliminate normal transports for Fremen, but give 1 transport slot (infantry only) to each Fremen melee UU? (And maybe create some extra UU infantry)?
That way you still can't easily hunt down thopters in the desert with sand-riding missile troopers, but you can still load up missile troopers and guardsmen as cargo on the worms steered by your melee troops.
 
Fremen need to realize that a) they can walk across desert with land units without transports to get to land on the other side, and b) they can conduct combat in deserts; if you attack me with a stack of transports, the fremen infantry can head out into the desert to destroy them.

This is exactly what the bCanMoveAllTerrain flag *should do*. ""All we have to do"" is make the AI realize that. This flag was either unused, or not well used in vanilla.

Another possibility: if you don't want to give guardsmen the sandrider promotion so that they can cross desert by themselves, why don't you eliminate normal transports for Fremen, but give 1 transport slot (infantry only) to each Fremen melee UU?

Loop detection. We have been arguing about whether fremen worms should operate as transports for at least 6 months. I really, really want scouts, settlers and warriors to be able to operate on their own without requiring a transport worm.
 
Yes.... but IMO there is a difference between:

a) Fremen needing to use transport units like other factions (particularly those that are desert-only). Weak transports with multiple transport slots. This is the design that you have rejected in the past, and I agree with you.
vs

b) This proposal. Scouts, workers, settlers, melee soldiers all able to cross desert by themselves (as they currently can). Only guardsmen units (city defenders and anti-air/anti-tank) and maybe a mortar unit (maybe make a mortar UU which is the same as a normal mortar except that it is guardsmen class, so can be loaded into infantry-only transports) need be transported. And rather than being transported on normal weak transports with lots of transport slots, they could be transported on the normal melee units.

Its just an idea, and it might be too hard to get the AI to work for it (AI is hard, I realize that), but it could be a nice compromise if you continue to insist that Fremen guardsmen units shouldn't be able to cross desert by themselves.

Fremen have to have some way of getting guardsmen across ground - they *need* the anti-air anti-armor support, particularly if we're weakening the bladesmen to make them more city assault and less general field combat. So either the guardsmen have to be able to cross by themselves, or they have to be transported.

And I would rather they be transported on worms than using suspensor transports and carryalls, which is what we currently have.
 
b) This proposal. Scouts, workers, settlers, melee soldiers all able to cross desert by themselves (as they currently can). Only guardsmen units (city defenders and anti-air/anti-tank) and maybe a mortar unit (maybe make a mortar UU which is the same as a normal mortar except that it is guardsmen class, so can be loaded into infantry-only transports) need be transported.

That is fine, and we can discuss that separately. I want to solve early game expansion first. This means settlers and warriors, and maybe workers.
 
I want to solve early game expansion first.

Agreed that the early game expansion is far more important. But if you're trying to change Fremen AI, you might need to keep both goals in mind.

The *simplest* (not the the best, but the simplest) fudge-fix would be to give the Fremen scout a transport slot - other factions expand fine across desert using scout thopters.
 
Good point. The Fremen colony city was called "Uzbek" so it is clearly a captured barb city. This change requires some focused study.

That's actually progress though right? Was that happening before?
 
That's actually progress though right? Was that happening before?

I don't remember precisely what was happening before. What I notice *now* is that:

a) Exploring crysknife fighters will take barbarian cities.
b) Later game Fremen melee don't take cities by themselves; they do so only with transports.

The AI is much better at amphibious transport assaults than it used to be thanks to your changes - nice job! The AI isn't unloading troops when they hit land, so often their stack of suspensors and transports can be destroyed before they unload by land units, but this partly isn't your fault since David's transport loading/unloading changes have meant that a transport unit can't unload if it has zero movement points left. So a transport that moves onto land and runs out of moves can't unload until next turn, so even a human-manged transport has this problem (though the human can exploit it by unloadnig before it runs out of movement points).
This needs a fix too.
 
That's actually progress though right? Was that happening before?

It is hard to study separately, but I am pretty sure it happened occasionally before also. The key point is to get *settlers* to move across ocean.

ahriman said:
David's transport loading/unloading changes have meant that a transport unit can't unload if it has zero movement points left.

These are small individual changes, but there are more than a dozen, with unexpected side effects. I will see if I can isolate that one and undo it.
 
These are small individual changes, but there are more than a dozen, with unexpected side effects. I will see if I can isolate that one and undo it.

I realize its complex, and so easy to create unanticipated side effects. You have fixed a lot of exploits, which is very nice. But it would be good to check if the not unloading is just an artifact of this or not; we could test it with completely old transport method if necessary. If its an artifact, then that issue doesn't need any further AI changes.

If it helps: the transport still has an unload button when it is out of moves, but pressing it doesn't do anything. Transport units no longer have an unload from transport button when the transport runs out of movement points.
 
Top Bottom