Jump to content
klamacz

AI Driving - Feedback topic

Recommended Posts

we'll see after the patch on 11th April, but probably boats will still be oblivious to something called 'going backwards'. Now, if the devs don't take or have the time to add this little thing that every other arma 3 vehicle is capable of since launch in 2013, why would they have the resources to work on something bigger like proper path finding and object avoidance on land!

Share this post


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

we'll see after the patch on 11th April, but probably boats will still be oblivious to something called 'going backwards'. Now, if the devs don't take or have the time to add this little thing that every other arma 3 vehicle is capable of since launch in 2013, why would they have the resources to work on something bigger like proper path finding and object avoidance on land!

 

IMO vehicle pathfinding on roads should be prioritized above boat AI and other AI fixes.

 

example, this is not acceptable

 

 

 

  • Like 2
  • Sad 1

Share this post


Link to post
Share on other sites

you are absolutlely correct; what i mean is, this little thing about the boats missing for four years shows that the lights in the AI department have been pretty much out for a very long time. You simply can't use boats in a mission for dropping off and picking up troops on the beach if u don't drive them yourself. I can't believe it would take one dev more than 1-2 days to add this functionality. Still here we are. And getting convoys to do their thing in cluttered urban terrain would probably take much longer to code in a proper way. Alas, if there ain't time to fix small things, probably there ain't resources to tackle the elephant in the room.

  • Like 1
  • Sad 1

Share this post


Link to post
Share on other sites
22 hours ago, fn_Quiksilver said:

 

IMO vehicle pathfinding on roads should be prioritized above boat AI and other AI fixes.

 

example, this is not acceptable

 

 

 

I have paid attention to a problem in a point of change of a route too. Almost always there is a problem when the line of a route to the following traveling point concerning the line of a route before turn, creates a route bend angle within 0-90 or 270-0 degrees.

 

Share this post


Link to post
Share on other sites

Yeah, the Devs really need to take a look at AI driving, and maybe even revert it to pre-Tanks levels, because I was trying out tacops Stepping Stone on Dev (I always find playing an 'old' campaign a good way to evaluate the effect of a new set of updates in the wild) and the infantry branch of Disintegration Point is hopeless due to the Panther you're supposed to RV with deciding that it'd rather go for a swim in that lovely Malden Sea.

Share this post


Link to post
Share on other sites

Another issue with AI driving.

An AI group occupying a vehicle will only move to waypoints (either editor-placed or Zeus) if the team leader is in the second seat. Team leader in driver seat or any other seat for the matter does prevent the AI for moving. 

Feedback tracker: https://feedback.bistudio.com/T127995 (includes repro)

  • Like 1

Share this post


Link to post
Share on other sites
On 23.03.2018 at 10:13 AM, xon2 said:

I can't believe it would take one dev more than 1-2 days to add this functionality. 

I can. Your "simple" attempt to add it would likely end up breaking the whole AI for a reason that would take a month to track down and another month to fix. And then somebody else would make a change in armor code and they'd have to do it all over again, because the armor change broke it for some mysterious reason. We're talking about OFP-era code that's already been patched multiple times by a whole lot of people, and this is a typical result of such lengthy development.

 

They should focus on making driving work, as though as it might be. Boats are a much less integral part of the gameplay than that.

Share this post


Link to post
Share on other sites

I just had an idea (tell me if this was said before) why not make infantry invincible to neutral and friendly controlled AI vehicles, so if the infantry is struck with a vehicle they can just faze through or get pushed with or around the vehicle. This can ease the pain of mechanised infantry scenarios. 

  • Like 3

Share this post


Link to post
Share on other sites
14 hours ago, B_Fox said:

I just had an idea (tell me if this was said before) why not make infantry invincible to neutral and friendly controlled AI vehicles, so if the infantry is struck with a vehicle they can just faze through or get pushed with or around the vehicle. This can ease the pain of mechanised infantry scenarios. 

 

odd hack

Share this post


Link to post
Share on other sites
On 3/28/2018 at 7:23 PM, The Man Without Qualities said:

 

odd hack

@B_Fox idea is actually a good compromise compared with the Carmageddon we have since OFP where a team gets run over in 99.9% cases in a city in mech missions.

  • Thanks 1

Share this post


Link to post
Share on other sites
On 5.4.2018 at 10:59 AM, krycek said:

@B_Fox idea is actually a good compromise compared with the Carmageddon we have since OFP where a team gets run over in 99.9% cases in a city in mech missions.

 

Problem with such hacks are the other side effects:

 

- performance impact (need to check on every collision if damage must be applied or not based on unit faction of both patricipants)

- lower simulation level (accidential road kill impossible etc)

- mission impact (sometimes it must be possible to kill a friendly unit by overrun)

 

That's why I do not like such workarounds.

  • Like 1

Share this post


Link to post
Share on other sites
3 hours ago, The Man Without Qualities said:

Problem with such hacks are the other side effects:

 

- performance impact (need to check on every collision if damage must be applied or not based on unit faction of both patricipants)

- lower simulation level (accidential road kill impossible etc)

- mission impact (sometimes it must be possible to kill a friendly unit by overrun)

 

That's why I do not like such workarounds.

Accidental road kill is what I'm trying to prevent, but in the case that you want to kill a friendly unit by running them over it can enable that via a script which disables the vehicles protective bubble. Do you have any suggestion on solving this problem.

Share this post


Link to post
Share on other sites

Here's a script I made a while ago to prevent friendlies driving over friendlies to death:

private _unit = _this select 0; //: Object - Object the event handler is assigned to.
private _source = _this select 3; //: Object - The source unit that caused the damage.
private _instigator = _this select 6; //: Object - Person who pulled the trigger

if ((side _source == side _unit) && /*(_projectile == "") &&*/ (isNull _instigator)) then
{
	0
};

Add it to the "HandleDamage" event handler with addEventHandler of the unit you want to protect from vehicle collision dammage.

Now, if you do want a specific soldier to be killed with a vehicle... just don't give him this event handler, or remove it from him.

Share this post


Link to post
Share on other sites

Is anybody else noticing that vehicles in AI convoys seem to just stop at random times? I am playing Vanilla at present and am testing out simple convoys of three AI controlled vehicles, with myself in the rearmost as a gunner or passenger to observe things, but I am noticing that now, one vehicle in the convoy, usually the second will just suddenly stop at random (or at least without a discernible reason to me), causing every other vehicle behind it to stop as well. 

 

I'm running the convoy in a fairly simple way, three vehicles and their crews in one large group (six to nine units), set to COLUMN or FILE formation and on the SAFE behaviour setting and I've tried variations on route, road type and the amount of waypoints used. Sometimes they seem to stop when a waypoint completes (as they have on my most recent test) but sometimes, two vehicles will pass a given point and then the third will suddenly hit the breaks.

 

Is anybody else seeing the same thing?

Share this post


Link to post
Share on other sites
13 hours ago, [VW]Wrath said:

Is anybody else noticing that vehicles in AI convoys seem to just stop at random times? 

Sometimes, drivers are overwhelmed by their inability to drive normally, so they temporarily stop to break down and cry. Some of the more experienced AI take regular brakes to think of the road ahead of them and plan their route carefully, even if it's just a straight piece of road. Finally, a high percentage of Arma 3 AI drivers are unfortunately alcoholic. One of the biggest reasons for rampant alcoholism among Arma 3 drivers is the existentialist realization that they are just a crappy driver, and not a specops marine with their own campaign. Arma 3 tries to counter this by requiring regular mandatory stops for drivers where they have to clear a breathalizer test that is part of the vehicle. If they don't pass the test, the car won't continue. I hope this anwers your question.

  • Like 1
  • Haha 6
  • Sad 1

Share this post


Link to post
Share on other sites

I would also drink if I had no women around me.

  • Like 2
  • Thanks 1
  • Haha 3

Share this post


Link to post
Share on other sites
On 4/16/2018 at 7:52 PM, [VW]Wrath said:

Is anybody else noticing that vehicles in AI convoys seem to just stop at random times?

 

I'm having trouble getting them to drive in the right direction in the first place...

 

Cheers

  • Like 1
  • Sad 1

Share this post


Link to post
Share on other sites
16 hours ago, Grumpy Old Man said:

 

I'm having trouble getting them to drive in the right direction in the first place...

 

Cheers

 

Did you set them to "Safe" and "Column"? That will definitely help.

Also pull the apart more, since the Quad bike has a high acceleration, they tend to drive into each other at the start.

 

EDIT: Just tried it, and if you set them to Column and then"Transform -> Move to Formation", they get it on reasonably well

  • Like 1

Share this post


Link to post
Share on other sites

After many test with AI drivers, I found best options (in Init vehicle):

This Setbehaviour "Stealth";
This forceFollowRoad true;
This setConvoySeparation 12.5;

And ideal speed is 25-30;

This ForceSpeed 25;

Best solution for me, though of course, is not perfect.

Share this post


Link to post
Share on other sites
On 25.02.2018 at 3:40 AM, fn_Quiksilver said:

there is still 2 AI driving bugs outstanding for a long time now. Bridge crossings + vehicle stops and wont continue along its route, for no apparent reason

 

This is exactly where I'm having major issues. Both of these...

 

Short background story: I've been working on a very comprehensive AI mod since Arma 2 that I'm now developing for Arma 3 and plan to even release it sometime soon hopefully. Anyway, one thing on which I've spent many hundreds of hours is trying to get AI in dynamic missions from point A to B with no failures... The points are usually very separated, with AI having to travel across the whole map and they often have to start from "outside" the map even. Each of my AI groups used for this task is almost always formed up of 1-3 troop transport trucks + sometimes an armed vehicle (could be a light vehicle or APC/IFV etc.).

 

I've been working on a long script for this purpose that tries to handle all the clunkiness that the driving AI throws at me and get them one way or another to where they're supposed to reach. A separate instance of this script runs for each group. But despite using a few cheats (such as repairing transport vehicles every few seconds so they're not forced to move at 10% speed for the whole time after hitting a tree and losing wheels...), putting in all the "standard" stuff like COLUMN formation, CARELESS behaviour and all that, currently on most occasions about 25% of the groups don't end up reaching the target and instead get stuck (getting stuck either on or off-road seems to be equally likely) even though all groups started at almost the same position in a wide open area. And I'm not just talking about giving one move order and them either following it or not. I'm talking about a script worth a few hundred lines of code, closely tracking the movement of the group, favoring "move" over "doMove" for convoy movement, but reserving "doMove" for use if the other fails, and also makes use of some really awkward last-line-of-defense "teleport the convoy across the map to the other side of the target" function to completely change the path if all else fails. Alas, for the groups that fail, even this is not enough apparently. And here's where they exhibit either of those two problems I quoted. Bridges seem to be one of their greatest enemies, and other times they just seem incapable of moving any longer for no apparent purpose. At most I see the driver madly turning the steering wheel left and right in quick succession or turning the engine on/off even though the vehicle hasn't been moving for the last 30 minutes...

 

So what I want to ask is, is there any workaround that can almost reliably get a "stuck" vehicle to start moving again? I've just learned about the forceFollowRoad and setDriveOnPath commands and will be using the former to test if it helps at all, though afaik CARELESS AI already do that as much as possible. I don't think I'll be getting into setDriveOnPath unless I want to go completely nuts and try to write a full-on high level path-finding algorithm (no thanks I'd rather be hired by BIS and get payed for that...).

Share this post


Link to post
Share on other sites
7 hours ago, k-hunter said:

So what I want to ask is, is there any workaround that can almost reliably get a "stuck" vehicle to start moving again? I've just learned about the forceFollowRoad and setDriveOnPath commands and will be using the former to test if it helps at all, though afaik CARELESS AI already do that as much as possible. I don't think I'll be getting into setDriveOnPath unless I want to go completely nuts and try to write a full-on high level path-finding algorithm (no thanks I'd rather be hired by BIS and get payed for that...).

If that vehicle is a part of multi-vehicle convoy group, try to select a new leading vehicle, if you notice that the convoy has stuck. It helped me a lot.

Also I wouldn't do "forceFollowRoad true", because then they won't be able to drive around an obstacle in the middle of a road.

Share this post


Link to post
Share on other sites
On 22.04.2018 at 1:01 PM, Sparker said:

If that vehicle is a part of multi-vehicle convoy group, try to select a new leading vehicle, if you notice that the convoy has stuck. It helped me a lot.

Also I wouldn't do "forceFollowRoad true", because then they won't be able to drive around an obstacle in the middle of a road.

 

This actually indirectly helped me. I realised how important the "doFollow" command could be. I didn't change the lead vehicle when a vehicle got stuck, but I did have the script re-issue a "doFollow" the leader to any trailers not moving as a first attempt to unstuck them. This actually helped immensely as it managed to solve problem #1.

 

I just want to summarise the problems that currently persist in my tests. Some of them have been reported already and BIS should really attempt solve these critical issues:

@klamacz

 

1) Some of the trailing vehicles randomly stop, while the rest of the convoy in front keeps moving. I noticed this happens more often when the convoy slows down to take sharp turns or avoid obstacles. It might have something to do with the trailers not wanting to fall below the convoy separation distance and stopping, but never starting up again...

Workaround: The stuck vehicles need to be given a doFollow command on the leader to keep following the convoy.

 

2) It seems that the effect of the limitSpeed command gets reset every time the convoy makes one of those weird few second stops (I guess it stops for path planning?). Whenever this happens and the convoy is ready to move again, the lead vehicle (often being a faster vehicle in my case) revs up and leaves the rest of the convoy in the dust. Workaround: Manually re-issuing the limitSpeed command manages to bring it down to convoy speed again.

 

3) It really would be good if the lead vehicle were smart enough to adjust its speed according to the situation of trailing vehicles. Either I'm doing something wrong, or the lead doesn't care about how far he's left behind the rest of the convoy. Is my memory mistaking me or was the AI capable of doing this back in Arma 2 and waiting for any slow trailers? This is especially a problem when you have an agile vehicle leading the convoy, and the rest take turns much more slowly and maybe have a smaller turn radius too, so they have to make maneuvers in dense areas. In this case, even limitSpeed won't help to keep the convoy moving at the same pace, unless used dynamically inside a control loop and have the lead go slower than the trailers (which really should be done by the engine...)

EDIT: Issuing limitSpeed regularly to solve #2 seems to somehow remind the lead vehicle to wait. If he wanders too far, he actually does seem to stop and wait for the rest using this method... Or at least at each "path planning point", the renewed speed limit causes it to not get moving until all are waiting behind him.

 

4) If the convoy does get separated one way or another and vehicles are far apart from each other, any vehicles other than the leader's will have extreme trouble following any move orders. Path planning seems to get borked for the group when this happens. They will just stand in place and not attempt to reach the leader, and most likely they will not respond to anything other than short doMove's (in many cases a long-range doMove will also fail). There should at least be some way for the vehicles to attempt regroup with the lead vehicle. This problem would be less prominent if #3 were fixed/implemented.

 

I won't get into the problems with bridges again as it's well known and I don't have a workaround for it that's not extremely nasty. Although building sandbags around the bridge will at least keep the AI safer from doing the most stupid things...

 

  • Like 1

Share this post


Link to post
Share on other sites

best way to get an AI vehicle moving is “setVelocity” or “addForce”.

 

Not sure which is more practical..

 

- get AI drivers to reliably move from A to B

 

- get BIS developers to fix the damage theyve done to AI drivers since 2016

 

both seem unlikely

Share this post


Link to post
Share on other sites
On 24.04.2018 at 3:44 AM, k-hunter said:

3) It really would be good if the lead vehicle were smart enough to adjust its speed according to the situation of trailing vehicles. Either I'm doing something wrong, or the lead doesn't care about how far he's left behind the rest of the convoy.

Yes indeed. Since they can't do this I was forced to make a simple controller for that, might be helpful for you. It checks the maximum separation between vehicles in convoy(that is,  maximum distance between pairs of cars following each other). Then if the distance is lower or higher a threshold it changes the lead vehicle speed linearly. Those who know the control theory might implement a PID controller for that.

Spoiler

// THefunction that calculates separation
AI_fnc_landConvoy_getMaxSeparation =
{
	//Gets the maximum separation between vehicles in convoy
	params ["_allVehicles", "_vehLead"];
	//diag_log format ["All vehicles: %1", _allVehicles];
	//diag_log format ["Lead vehicle: %1", _vehLead];
	private _vehArraySort = [];
	{
		_vehArraySort pushBack [_x distance _vehLead, _x];
	} forEach _allVehicles;
	//diag_log format ["Unsorted array: %1", _vehArraySort];
	_vehArraySort sort true; //Ascending
	//diag_log format ["Sorted array: %1", _vehArraySort];
	//Get the max separation
	private _dMax = 0;
	private _c = count _allVehicles;
	for "_i" from 0 to (_c - 2) do
	{
		_d = (_vehArraySort select _i select 1) distance (_vehArraySort select (_i + 1) select 1);
		if (_d > _dMax) then {_dMax = _d;};
	};
	_dMax
};

                //!!! Perform this check every 2 seconds or so !!!
				//Check the separation of the convoy
                private _separation = 19; // Separation you want to have in meters
				private _sCur = [_vehArray, vehicle leader _vehGroupHandle] call AI_fnc_landConvoy_getMaxSeparation; //_sCur is the current maximum separation between vehicles
				#ifdef DEBUG_FORMATION
				diag_log format [">>> Current separation: %1", _sCur];
				#endif
				if(_sCur > 1.9*_separation) then
				{
					//We are driving too fast!
					if(_speedLimit > 15) then
					{
						_speedLimit = _speedLimit - 3;
						(vehicle (leader _vehGroupHandle)) limitSpeed _speedLimit;
						#ifdef DEBUG_FORMATION
						diag_log format [">>> Slowing down! New speed: %1", _speedLimit];
						#endif
					};
				}
				else
				{
						//We are driving too slow!
						if(_speedLimit < _speedMax) then
						{
							_speedLimit = _speedLimit + 3.5;
							(vehicle (leader _vehGroupHandle)) limitSpeed _speedLimit;
							#ifdef DEBUG_FORMATION
							diag_log format [">>> Accelerating! New speed: %1", _speedLimit];
							#endif
						};
				};

 

 

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

×