Space Engineers

Space Engineers

DAS - Driver Assisting System
Feature/Improvement Suggestions
Like I wrote in the comment section, here are a couple of suggestions I've been thinking about:

1) I often use "S" for braking/deaccelerating (many others do, I suspect) - when I press it too long the vehicle will go in reverse instantly after coming to a stop. Would be nice if I had to press the key again to go in reverse. Alternatively/additionally it'd be cool to have seperate speed and acceleration limits for reverse gear - in fact the reverse acceleration being too high is my main problem with the "S" key behaviour.

2) It's a bit hard to describe, but personally, I find the GSA alignment correcting a bit too agressive sometimes. Especially noticable when standing still on uneven surfaces, when it tries to lift the vehicle continuously every second or so, resulting in multiple wheels above the ground. Also, suspensions seem a bit underused, and suspensions just look cool :) Not sure how to solve this... maybe with an "acceptable alignment deviation" variable?

3) Thats a big one: Skid steering, like seen on tanks or short vehicles like fork lifts and so on. Haven't found a good script for it yet. Whiplash is working on one - it works, but far from perfect thats probably why he hasn't released it on the workshop yet. It just doesn't feel/look right to me, seems to rely on minimal friction and gyro mostly. It's on his github repository: https://github.com/Whiplash141/SpaceEngineersScripts/tree/master/Public
I suspect your script (TCS) already has a lot of the framework needed for proper skid steering - like fine control over friction, wheel torque and so on. Big feaure obviously and not an easy one, but would be really amazing to see that one day.
< >
84 yorumdan 31 ile 45 arası gösteriliyor
Wanderer_308  [geliştirici] 19 Eyl 2019 @ 15:53 
@7h3PuNiSh3R
That doesn't seem like a viable idea. Here are the problems.
First suspensions changes its height offset smooth, bit by bit over time, so if the vehicle in motion it will not have time to adapt to the terrain, it will change faster then suspension height offset changes. If i set height offset change to be instant then it will only cause the vehicle to be sent into the sky. And if vehicle stationery then what's the point in all this aligning, it's stationary so let it be so.
Second, suspension wheels height offset range is rather small to be used to level anything. It's bigger for the large grid, but for small grid 5x5 wheels it's only about half a meter, one small grid cube. For the regular car build, it will give about 1.5-3 degrees of level freedom. Not something you will notice.
Your idea is only good at first glance, and i hade it too in past, implemented, tested, analyzed and rejected. I also ha idea to counter align on a turn. Like if, say, your turning to the right, the vehicle will naturally roll to the left, inwards of turn, so i lowered suspension on the right side. Without this, the roll angle on turns was about 3 degree, and with this tech, the vehicle stayed at about 0 roll angle. But thing is that does not affect the vehicle controllability, traction, roll-over probability, stability or anything. So, along with just fancy look of rover's wiggle dance it was just a waste of computing resources.
the idea was intended fro 1 mobile bases and 2 low speed crawling air ride off road vehicles dont adjust to terrain a high speed only at low speed when off road crawling is enabled exemple low gearm or a suspension setting. Application you can have it set as a argument and when enabled it will align to gravity and limit speed :) so it can help with crawling up mountains and down aswell as having more wheel contact patch on ruff terrain because atm something you have 2 wheels floating and vehicle of tilted :) thanks for the reply btw would look cool :) maby you can use strenght instead or hight offset wich ever is more practicle and stable
En son 7h3PuNiSh3R tarafından düzenlendi; 20 Eyl 2019 @ 20:32
Wanderer_308  [geliştirici] 21 Eyl 2019 @ 9:28 
I still don't see how one can estimate a roughness of the terrain. If some wheels floating and the script will drop strength on other wheels it doesn't guaranty that said floating wheels will be put to the ground. Is say rover stands on top of a hill with high curvature then it may be just not possible to drip it with all wheels simultaneously. You will and up sitting on a belly with some wheels still floating. And there are more "underwater stones" at such an approach. The only way to know real roughness of the terrain under each wheel is to put a camera near every wheel, but that will require a metric ♥♥♥♥ tonne of raycasts.
how about just aligning to horizon ...
I have ramps on the back and jury rigged an systhem where i use timer blocks to make the suspension in front high, in middle medium and back low so my ramp is not that steep (my atv has 3 axles)
Is it possible to add such an feature in script that the vehicle "kneels" for loading?
Well trying another design (still haven't decided what i will use) and it use different wheels size as the big wheels are on the extremities and there is not enough space for the same size in the middle... Middle wheels would be here for some crater stuck protection.
So a suggestion would be the ability to change the height offset of wheels in custom data (would probably also make possible to make sloped design then needed) It would be nice...
Thank you for this script! Love it!!
Is it possible, via argument, to instruct the vehicle to drive backwards?
I have a ramp leading up to a platform where the vehicle unloads. After it's done and the AutoPilot is resumed, it goes to back up to turn around ....and falls off the platform.
Wanderer_308  [geliştirici] 19 Kas 2019 @ 12:12 
No, not directly. I may put a waypoint at the rear arc of the rover to make it go backward, but it's not reliable, the script will still try to face-forward this waypoint. You also may try to inverse propulsion at heels terminal properties, but i have no idea how it will behave this way, never tried.
Did a small quick change locally to allow different suspension heights for left and right wheels and added commands for leaning to the left and right. Using it to manually align a tunnel digger (to roll == 0).

See screenshot: https://steamcommunity.com/sharedfiles/filedetails/?id=1958740909

Would of course be even better if it could do it automatically, but were too lazy to do the formula for converting between roll and suspension heights.

@Wanderer_308: Changes are minimal, pretty much only duplicated the height properties into a left and right one. I'd gladly share the diff if you're interested.
Wanderer_308  [geliştirici] 4 Oca 2020 @ 8:08 
@Penguin, I guess you can post the diff right here so everyone might use it. I'll check it out and consider to add it officially.
In my quick change, the maximum offset of the Vanilla 5x5 wheels (-.5) is hardcoded in the two commands.

44c44,45 < double _SusHeightOffset = -1.5;// Suspension heght offset that will be setted by script. Can be changed. --- > double _SusHeightOffsetLeft = -1.5;// Suspension heght offset that will be setted by script. Can be changed. > double _SusHeightOffsetRight = -1.5;// Suspension heght offset that will be setted by script. Can be changed. 1174c1175,1176 < double HeightOffsetDelta = 0.1; --- > double HeightOffsetDeltaLeft = 0.1; > double HeightOffsetDeltaRight = 0.1; 1176c1178,1179 < double _HeightOffset; --- > double _HeightOffsetLeft; > double _HeightOffsetRight; 1221c1224 < public double HeightOffset --- > public double HeightOffsetLeft 1223c1226 < get { return _HeightOffset; } --- > get { return _HeightOffsetLeft; } 1227,1228c1230,1241 < HeightOffsetDelta = Math.Abs(value - _HeightOffset); < _HeightOffset = value; --- > HeightOffsetDeltaLeft = Math.Abs(value - _HeightOffsetLeft); > _HeightOffsetLeft = value; > } > } > public double HeightOffsetRight > { > get { return _HeightOffsetRight; } > set > { > if (value >= 0) > HeightOffsetDeltaRight = Math.Abs(value - _HeightOffsetRight); > _HeightOffsetRight = value; 1377c1390 < - Math.Max(_HeightOffset, suspension.HeightOffsetMin)); --- > - Math.Max((suspension.OrientationInVehicle == Base6Directions.Direction.Left ? _HeightOffsetLeft : _HeightOffsetRight), suspension.HeightOffsetMin)); 1596c1609,1610 < double delta = HeightOffsetDelta / ValueChangeRate * (HeightOfstSkipCycles + 1); --- > double deltaLeft = HeightOffsetDeltaLeft / ValueChangeRate * (HeightOfstSkipCycles + 1); > double deltaRight = HeightOffsetDeltaRight / ValueChangeRate * (HeightOfstSkipCycles + 1); 1603c1617 < clampedTargetHeightOffset = MathHelperD.Clamp(_HeightOffset, suspension.HeightOffsetMin, suspension.HeightOffsetMax); --- > clampedTargetHeightOffset = MathHelperD.Clamp((suspension.OrientationInVehicle == Base6Directions.Direction.Left ? _HeightOffsetLeft : _HeightOffsetRight), suspension.HeightOffsetMin, suspension.HeightOffsetMax); 1607c1621 < currentHeightOffset = Math.Max(currentHeightOffset - delta, clampedTargetHeightOffset); --- > currentHeightOffset = Math.Max(currentHeightOffset - (suspension.OrientationInVehicle == Base6Directions.Direction.Left ? deltaLeft : deltaRight), clampedTargetHeightOffset); 1613c1627 < currentHeightOffset = Math.Min(currentHeightOffset + delta, clampedTargetHeightOffset); --- > currentHeightOffset = Math.Min(currentHeightOffset + (suspension.OrientationInVehicle == Base6Directions.Direction.Left ? deltaLeft : deltaRight), clampedTargetHeightOffset); 2860c2874,2875 < public double SuspensionHeightOffset { get { return _SusHeightOffset; } set { _SusHeightOffset = TCS.HeightOffset = value; } } --- > public double SuspensionHeightOffsetLeft { get { return _SusHeightOffsetLeft; } set { _SusHeightOffsetLeft = TCS.HeightOffsetLeft = value; } } > public double SuspensionHeightOffsetRight { get { return _SusHeightOffsetRight; } set { _SusHeightOffsetRight = TCS.HeightOffsetRight = value; } } 2932c2947,2948 < TCS.HeightOffset = _SusHeightOffset; --- > TCS.HeightOffsetLeft = _SusHeightOffsetLeft; > TCS.HeightOffsetRight = _SusHeightOffsetRight; 3633c3649 < DAS.SuspensionHeightOffset = 0; --- > DAS.SuspensionHeightOffsetLeft = DAS.SuspensionHeightOffsetRight = 0; 3638c3654,3680 < DAS.SuspensionHeightOffset = -1.5; --- > DAS.SuspensionHeightOffsetLeft = DAS.SuspensionHeightOffsetRight = -1.5; > } > else if (args.Equals("LEAN_LEFT", ic)) > { > DAS.SuspensionValueChangeRate = 15; > if (DAS.SuspensionHeightOffsetRight <= -.5) > { > DAS.SuspensionHeightOffsetLeft += .1; > DAS.SuspensionHeightOffsetRight = -.5; > } > else > { > DAS.SuspensionHeightOffsetRight -= .1; > } > } > else if (args.Equals("LEAN_RIGHT", ic)) > { > DAS.SuspensionValueChangeRate = 15; > if (DAS.SuspensionHeightOffsetLeft <= -.5) > { > DAS.SuspensionHeightOffsetRight += .1; > DAS.SuspensionHeightOffsetLeft = -.5; > } > else > { > DAS.SuspensionHeightOffsetLeft -= .1; > }
I'm looking for a script that can be used on NPC vehicles, you could add a player tracking routine and a locator based on target designators.
Small cannons that would aim the targets at the vehicle.
If this could be implemented, great tank and vehicle NPCs could be created with your Script.
A couple of suggestions I'd like to see:

> Adjust the maximum Friction Value.

>Adjust the curve of the steering limit.

>Option to automatically drop the friction if the vehicle is going sideways to keep the vehicle from flipping into the air, or to drop power a'la like real-world TCS, (maybe both?)

>Handbrake + W to spin the backwheels while locking the front when stopped, and only lock the back wheels when driving.
Wanderer_308  [geliştirici] 30 Nis 2020 @ 12:33 
> Adjust the maximum Friction Value
That's a reasonable suggestion, if i find a free space i'll add it.
> Adjust the curve of the steering limit.
Highly not recommend to tinker with it. Steering limit calculated from centrifugal forces that appears on turns, slightly less restriction and rover will constantly roll over, slightly more and it will stuck like on rails.
> Option to automatically drop the friction if the vehicle is going sideways
That's already a thing since day one.
> Handbrake + W to spin the backwheels while locking the front
Already a thing since day... whatever day. But Spacebar + W or S.
I'm experiencing a ton of understeer, is why I make some of these suggestions.. Actually.. it could be because of ice? I'm doing a lot of driving on Triton
< >
84 yorumdan 31 ile 45 arası gösteriliyor
Sayfa başına: 1530 50