Jump to content
klamacz

AI Driving - Feedback topic

Recommended Posts

7 minutes ago, R3vo said:

That's not what he meant and you know that.

R3vo, that's a little unfair man. We've talked before so I'm disappointed you'd assume that of me and that my question was sarcastic. It wasn't (which is why I said "honest question.")

Share this post


Link to post
Share on other sites
10 minutes ago, HeroesandvillainsOS said:

R3vo, that's a little unfair man. We've talked before so I'm disappointed you'd assume that of me and that my question was sarcastic. It wasn't (which is why I said "honest question.")

 

Fair enough. It's almost 12 pm, clearly missed the sarcasm ;)

  • Like 2

Share this post


Link to post
Share on other sites
On 06/03/2017 at 9:16 PM, mickeymen said:

One of the main problems of AI driving continues, the fact that AI drivers crushes their allies! Unfortunately, hardly anyone speaks about it, especially in this thread.

True, it's a problem, as is the AI blindness to friendly human players. However. it's not correct to say "hardly anyone"; there are comments and discussions all over the forums, and some excellent coders have shared mods/scripts to improve various aspects.

 

Using kju's excellent "DisableFriendlyFireServer" addon makes a huge difference. Uber-realists may carp, but it's more realistic than the mass-murder AI drivers routinely commit. The game becomes much more playable and more fun especially with the Vcom_Driving mod.

 

BIS still needs to fix the driving (not to mention AI perception deficits).

Share this post


Link to post
Share on other sites
12 hours ago, HeroesandvillainsOS said:

Honest question: BIS devs are unpaid?

 

That is not what I meant, read it in context. The thing was "AI doesn't sell DLC's", so when I said "unpaid" I mean "things you as a customer do not have to pay for", not that the BI developers are unpaid.

 

Anyway, I don't want to derail the discussion any further.

  • Like 1

Share this post


Link to post
Share on other sites
On 3/11/2017 at 11:58 AM, .kju said:

Such situation would need a different design in general, like

* Infantry moving aside

 

Agreed, Infantry right now does not react at all to vehicles, they should try to avoid them

  • Like 4

Share this post


Link to post
Share on other sites
On 12.03.2017 at 1:53 PM, orcinus said:

BIS still needs to fix the driving (not to mention AI perception deficits).

I think, this is one single problem

Share this post


Link to post
Share on other sites

Do you think or do you know if vehicles make a difference between units on foot (AI or player) and other objects?

It could be fine if yes, just increasing safety range for friendly units... and reducing it to zero for enemy ones.

Share this post


Link to post
Share on other sites
On 6/10/2016 at 8:17 PM, klamacz said:

They told me to explain what is new AI driving and how it works. We've been working on it for many months, in almost complete secrecy (excluding occasional Oukej talking about vacuum cleaners).
It is mandatory to mention, that it is still Work In Progress, has few bugs I know and many which I don't know about yet. Also, currently this new AI driving works only for wheeled vehicles, otherwise known as Cars.
Now let me try to convince you that it was worth waiting for.

 

Motivation, so why we even bother

Main issue we wanted to fix was AI's inability to drive the car through narrow streets of most of the cities without crashing, especially on tight corners and complicated junctions. Trying to solve those issues in broad aspect of driving behavior we found out, we need also to refactor big part of code, basically everything related to AI driving. This led to creation of new component class, which can be added and configured for each Car, and many other changes, movements, improvements and optimizations.
Finally, the purpose is to give us and mod-makers better ways to configure AI driving behaviors per vehicle, easier and more flexible ways for mission makers to control their AI, and precise and competent drivers for players to encounter.

 

Execution, so how it is done

Main point of new technology is a new component (AICarSteeringComponent), which encapsulates all related algorithms which steers the car. We chose to make it a component of Car, not AI agent or his brain, as tweaking of parameters of Component can happen per vehicle. In sense it defines driving behavior attached to type of vehicle, not a type of driver.
We managed to move and rework most of actions driver can do in game, simple path following, but also keeping formation, following in convoy, un-stucking himself or reacting to player direct commands. All of those had to be refactored, simplified, optimized and enclosed in mentioned component.

In the heart of new driving, we have PID controllers, those are common but very flexible algorithms, for example used in engineering for temperature control, or in automated vehicles, for speed or altitude control. We use them for both speed and steering, also allowing modification of its parameters in config. 

 

Participation, so how you can use it

As a player, you can join development branch users, run the editor and spawn yourself a Hunter and AI driver to command. You will see different driving style in any wheeled vehicle, be it a truck or tuned hatchback. Also, as it was enabled by default for all cars, vanilla or not, you should be able to see the new behavior in all old scenarios, missions wherever AI drives a car.
As a mission maker, or scripter, or if you just want to experiment more, you can still use script commands like:

vehicle limitSpeed 15;
driver vehicle forceSpeed 40;

As a mod maker, you can configure your own vehicle and experiment with the config values directly:


class AICarSteeringComponent
      {
        steeringPIDWeights[] = { 2.0, 0.2, 0.0 };
        speedPIDWeights[] = { 0.5, 0.2, 0.0 };
        doRemapSpeed = true;
        remapSpeedRange[] = { 10.0. 90.0 };
        remapSpeedScalar[] = { 1.0, 0.35 };
        doPredictForward = true;
        predictForwardRange[] = { 1, 20 };
        steerAheadSaturation[] = { 0.01, 0.4 };
        speedPredictionMethod = 2;
        wheelAngleCoef = 0.7;
        forwardAngleCoef = 0.7;
        steeringAngleCoef = 1.0;
        differenceAngleCoef = 1.0;
        stuckMaxTime = 3.0;
        allowOvertaking = true;
        allowDrifting = false;
        allowCollisionAvoidance = true;
        maxWheelAngleDiff = 0.2616;
        minSpeedToKeep = 0.1;
      };

Iteration, so what next

It is still very much work in progress, and few additional improvements are planned. We are also aware that you can encounter some issues, especially on the beginning. Problem of unstucking is still very much open, as it's a challenge to find perfect algorithm for all the situations. We also will be looking into configuring different vehicles, and also how modders will try to use it, your feedback is not only welcomed, it's crucial. 

Please, report all problematic situations and places, but don't forget important information: type of vehicle, map, exact location, waypoint, order or any other way you are making AI drive. Screenshot with map coordinates and explanation of route is like, minimal data, required for us to analyze what could go wrong. You can also try pushing the AI, for example with "unit forceSpeed 40" which essentially overrides usual safe upper limit of speed, you can send multiple convoys across your islands and test the madness that ensues after, just don't forget to share those missions with us.

 

 
 
 
 

 


class AICarSteeringComponent
      {
        steeringPIDWeights[] = { 2.0, 0.2, 0.0 };
        speedPIDWeights[] = { 0.5, 0.2, 0.0 };
        doRemapSpeed = true;
        remapSpeedRange[] = { 10.0. 90.0 };
        remapSpeedScalar[] = { 1.0, 0.35 };
        doPredictForward = true;
        predictForwardRange[] = { 1, 20 };
        steerAheadSaturation[] = { 0.01, 0.4 };
        speedPredictionMethod = 2;
        wheelAngleCoef = 0.7;
        forwardAngleCoef = 0.7;
        steeringAngleCoef = 1.0;
        differenceAngleCoef = 1.0;
        stuckMaxTime = 3.0;
        allowOvertaking = true;
        allowDrifting = false;
        allowCollisionAvoidance = true;
        maxWheelAngleDiff = 0.2616;
        minSpeedToKeep = 0.1;
      };

 

 
 
 

Hello,

Thank you for the information.

Where to execute this lines of code, actually I am not getting it properly.

 

Share this post


Link to post
Share on other sites
On 17/03/2017 at 11:02 PM, mickeymen said:

I think, this is one single problem

Unfortunately not, IME &  IMHO.

 

AI units ignore friendly human players when firing (even your own team-mates shoot you in the back) and moving (stand in front of you when you're firing; push you out of the way - and into enemy fire - at corners or other cover, etc., etc.

 

Very different situations from driving, but lacking solutions like kju's disable_friendly_fire _server, equally lethal.

 

Share this post


Link to post
Share on other sites
On 30.03.2017 at 1:54 AM, orcinus said:

Unfortunately not, IME &  IMHO.

 

AI units ignore friendly human players when firing (even your own team-mates shoot you in the back) and moving (stand in front of you when you're firing; push you out of the way - and into enemy fire - at corners or other cover, etc., etc.

 

Very different situations from driving, but lacking solutions like kju's disable_friendly_fire _server, equally lethal.

 

 

may be you right. Unfortunately, developers pay very little attention to AI. It seems to me that this is in a deplorable state, since AI in Arma3 does not know how to do anything in general, except for accurate shooting at the player ;)

 

 

Share this post


Link to post
Share on other sites

AI driving skills are still far from acceptable.

 

Outcome of some testing in 1.68 with only vanilla units.

 

- when you order wheeled vehic to your position, they tend to overshoot the position by 2-3 Metres and some wheeled try to return to that position by endless forward/backward moving

- tracked vehicles overshoot 10-15 metres, they do not slow down properly before reaching WP. When ordering with 1-1 to your position they kill you by overrunning pretty often

- maybe rather related to object definitions / map configurations - vehicles supposed to follow roads in carless mode tend to leave the road for no reason - assumption is the some rocks few metres next to road or some bushes are considered as already threatening obstacle

- some objects are totally ignored by AI driver -  and rammed. Some are native map objects (maybe object config is wrong); some are usually detected but they were added during the game.

- some of those ignored objects like bushes are ok to be ignored, but obviously wrong objects configs making those bushes or other kind of "soft" objects real wheel-breaking and tank-blocking obstacles

- pretty often it happens that wheeled and tracked vehicles ending up in front of a tree or a wall and keep on hammering the vehicles  with the same wrong steering action again and again against that obstacle until eighter vehicle or obstacle crash

- there is no such thing like an "crowd management" function that is detecting crowds of vehicles not in group&formation which are blocking each other by individual, isolated activities. In a bunch of individual vehicles a function that is able to detect such crowd should take over control, move the outer vehics a little bit away while the inner vehicles do nothing until their path is cleared

 

 

In total:

 

- after 15 years of development I cannot see any real improvement, the very same weaknesses are still present since day1

- comparing performance with other game titles suggesting that there are methods giving much better results

 

AI driving as is is not acceptable

 

 

 

Edited by BIS_QUALITY_ASSURANCE
typo

Share this post


Link to post
Share on other sites
8 hours ago, BIS_QUALITY_ASSURANCE said:

- comparing performance with other game titles suggesting that there are methods giving much better results

 

Care to give some examples of open world games of a similar scope as arma?

Should be no problem since you were comparing the performance.

Also please show which results came out of this comparison.

 

Cheers

Share this post


Link to post
Share on other sites

Just played Ghost recon wildlands. Open huge map. Ambient life is spawning with civilians and enemies units, humans or vehicles. All work flawlessly. Convoys are convoys, in "safe" or "combat" states. There is not so much weird behaviors. Just remarked the little narrow streets are not used by AI's. On the other hand, I never found AIs stuck in endless maneuver.

Share this post


Link to post
Share on other sites
1 hour ago, pierremgi said:

Just played Ghost recon wildlands. Open huge map. Ambient life is spawning with civilians and enemies units, humans or vehicles. All work flawlessly. Convoys are convoys, in "safe" or "combat" states. There is not so much weird behaviors. Just remarked the little narrow streets are not used by AI's. On the other hand, I never found AIs stuck in endless maneuver.

 

Park your car on the road. You will notice that the after-traffic starts queuing up. Nobody passes. AI is programmed to follow roads, and if they can't follow it, they simply shut down. Only in a handful of situations have I seen Unidad or Cartel cards leave the road, but for all the civilian traffic, they don't even pass your car..

 

I do agree thought that driving on the road is something they can do (most of the times)

  • Like 3

Share this post


Link to post
Share on other sites
Quote

 

Only in a handful of situations have I seen Unidad or Cartel cards leave the road, but for all the civilian traffic, they don't even pass your car..

 

 

Sometimes I'd prefer an AI which waits until the road clears up instead of doing crazy manoevres. That's more predictable.

Share this post


Link to post
Share on other sites
2 hours ago, R3vo said:

 

Sometimes I'd prefer an AI which waits until the road clears up instead of doing crazy manoevres. That's more predictable.

Not sure if you've played the game. I know in theory it sounds interesting and believable but the way it's implemented into GRW is a little shocking. Car after car after car, until it's a car orgy, will just wait and wait and wait and never pass.

 

Its jarring.

 

Not to go OT or anything. Just wanted to clear that up. FWIW I really like the AI driving in GRW and adore how they stay on roads. Makes me wish BI made roads recognized by AI like this, especially when given a follow order.

  • Like 2

Share this post


Link to post
Share on other sites
10 hours ago, pierremgi said:

Just played Ghost recon wildlands. Open huge map. Ambient life is spawning with civilians and enemies units, humans or vehicles. All work flawlessly. Convoys are convoys, in "safe" or "combat" states. There is not so much weird behaviors. Just remarked the little narrow streets are not used by AI's. On the other hand, I never found AIs stuck in endless maneuver.

 

this is bc the arma driving AI has broken parts crippling it, and relevant developers assigned to more profitable work ;)

Share this post


Link to post
Share on other sites
9 hours ago, Alwarren said:

Park your car on the road. You will notice that the after-traffic starts queuing up. Nobody passes. AI is programmed to follow roads, and if they can't follow it, they simply shut down. Only in a handful of situations have I seen Unidad or Cartel cards leave the road, but for all the civilian traffic, they don't even pass your car..

You hit a point and a big one! So nothing is perfect. We would some fluidity like Wildlands convoys, but also some understanding for trafic jam. In Arma, AI's can drive out of roads in combat situation. That's also a good point, especially for tanks. There are so much things to do from bikes to tanks, with so many different considerations (in real life, a bike can pass above some rocks, a tank can crush a wall, or even a house). The challenge is very interesting! As any AI's behavior for medics, firing, covering... The first limitation is probably the "common CPU" load.

Share this post


Link to post
Share on other sites
8 hours ago, R3vo said:

How could I miss this sexy command?

https://community.bistudio.com/wiki/setDriveOnPath

Just tested it and it works splendidly. 10 times better than BIS_fnc_UnitCapture

So, if i'm right, unitCapture is still interesting to record a path. Then you don't need unitPlay anymore, just setdriveOnPath. And the command is 10x faster than the old function?

Share this post


Link to post
Share on other sites
15 minutes ago, pierremgi said:

So, if i'm right, unitCapture is still interesting to record a path. Then you don't need unitPlay anymore, just setdriveOnPath. And the command is 10x faster than the old function?

 

 

I simple this piece of code to record the path of the vehicle.

 

[] spawn
{
    Revo_path = [];
    while {true} do
    {
        Revo_path pushBack (position player);
        systemChat "Logging Path";
        sleep 1;
    };
};

 

By 10x better I ment it works just as I expected, whereas with unitPlay I often had alot of trouble. Of course unitPlay/Capture are still very important because setDriveOnPath does not work with helicopters, planes and boats.

 

 

Share this post


Link to post
Share on other sites
2 hours ago, R3vo said:

 

 

I simple this piece of code to record the path of the vehicle.

 


[] spawn
{
    Revo_path = [];
    while {true} do
    {
        Revo_path pushBack (position player);
        systemChat "Logging Path";
        sleep 1;
    };
};

 

By 10x better I ment it works just as I expected, whereas with unitPlay I often had alot of trouble. Of course unitPlay/Capture are still very important because setDriveOnPath does not work with helicopters, planes and boats.

 

 

How could we get this to work with helicopters. For example, follow a specific route, i.e.' Road, highway, etc. 

Share this post


Link to post
Share on other sites

Among other AI-driving problems, there is the following problem:

 

If the player is a commander and he comes out of his vehicle, then the driver of this vehicle, will always start the movement. As a result, very often the driver crushes the player-commander! It is a PROBLEM that must be solved also

 

Why the AI-driver does start to movement this is not clear for me!? Probably he is trying to return to the formation.

BIS, forbid  AI-drivers to do this, because very often this crazy feature,  kills the player!

  • Like 1

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×