Page MenuHomeFeedback Tracker

Bushes, vegetation, terrain and water affecting movement speed and fatigue!
New, WishlistPublic


I really think walking on roads should take somewhat less effort and running or sprinting on roads noticeably less effort than running through grass. It should be impossible to sprint through bushes and moving quickly through bushes or water should slow you down significantly! Also if there’s any sand or swamps moving through there should both slow you down and take more effort obviously.

Historically video games rarely take terrain into consideration leading to roads in video games just being purely decorative but anyone who has ever walked through terrain knows you will want to stick to the road when possible!


Legacy ID
Feature Request

Event Timeline

Sneakson edited Steps To Reproduce. (Show Details)Jun 18 2013, 9:06 PM
Sneakson edited Additional Information. (Show Details)
Sneakson set Category to Feature Request.
Sneakson set Reproducibility to N/A.
Sneakson set Severity to None.
Sneakson set Resolution to Open.
Sneakson set Legacy ID to 266494304.May 7 2016, 2:39 PM
Bohemia added a subscriber: ceeeb.Jun 18 2013, 9:06 PM

By the way I'm not sure to what extent moving uphill or downhill affects movement right now but it should make a BIG difference.

Rolling added a subscriber: Rolling.May 7 2016, 2:39 PM

From what I've seen it makes NO difference, you can sprint up-hill.

TTc30 added a subscriber: TTc30.May 7 2016, 2:39 PM
TTc30 added a comment.Jun 19 2013, 3:08 AM

I'm not sure, but after coming up the water you should be heavier because you're wet

EDcase added a subscriber: EDcase.May 7 2016, 2:39 PM

Voted for slowing in bushes but I don't think there is much difference running in grass or road.

aoshiS2 added a subscriber: aoshiS2.May 7 2016, 2:39 PM

voted up, i fogot to make the request, fórum thread

Yeah, perhaps not much different running on grass or asphalt...

Upvoted with the condition of improving fatigue system, operators get fatigued very quickly even with light weight

ceeeb added a comment.Jun 21 2013, 1:46 AM

Related to #5681

Currently slope of terrain affects fatigue, but not speed. I agree that speed should also be affected by slope. Adding modifiers for different surface types would also be great (this is already done to vehicles).

To do some testing with speed and fatigue, use this script. It starts displaying the players info in a hint, with the argument defining the update frequency. It measures current speed via four ways (3d/2d first principles from polled positions, and using speed and velocity engine commands) to check discrepancies . It also shows the engine's 2D only method of applying movement speed (means sprinting up/down a steep hill is actually moving faster than over flat ground)

//example: 1 execVM "monitorMovement.sqf"
CEEB_fnc_distanceFP3D = compile
(((_this select 0) select 0) - ((_this select 1) select 0)) ^ 2
(((_this select 0) select 1) - ((_this select 1) select 1)) ^ 2
(((_this select 0) select 2) - ((_this select 1) select 2)) ^ 2

sleep 1;

_step = _this; update delay
_oldPos = [0, 0, 0];
last check position
_newPos = [0, 0, 0]; new check position
_3dDist = 0;
3d distance from first principals
_2dDist = 0; 2d (horz plane) distance from first principals
_3dSpeed = 0;
3d speed in km/h
_2dSpeed = 0; 2d (horz plane) speed in km/h
_veloSpeed = 0;
3d speed in km/h from engine velocity command
_rise = 0; 2d (horz plane) difference
_run = 0;
vertical difference
_slope = 0; angle in degrees between old and new positions
_oldFatigue = 0;
last fatigue
_newFatigue = 0; new check fatigue
_fatigueTime = 0;
time to max/min fatigue

while {true} do
_newPos = visiblePositionASL vehicle player;
_3dDist = [_oldPos, _newPos] call CEEB_fnc_distanceFP3D;
_2dDist = [[(_oldPos select 0), (_oldPos select 1), 0], [(_newPos select 0), (_newPos select 1), 0]] call CEEB_fnc_distanceFP3D;

_newFatigue = getFatigue vehicle player;
_fatigueCost = (_newFatigue - _oldFatigue) / _step;
if (_fatigueCost == 0)
then {_fatigueTime = 0;}
else {_fatigueTime = 1 / _fatigueCost;};

_3Dspeed = _3dDist / _step * 3.6;
_2Dspeed = _2dDist / _step * 3.6;
_veloSpeed = ([[0, 0, 0], velocity vehicle player] call CEEB_fnc_distanceFP3D) * 3.6;

_rise = (_newPos select 2) - (_oldPos select 2);
_run = [[(_newPos select 0), (_newPos select 1), 0], [(_oldPos select 0), (_oldPos select 1), 0]] call CEEB_fnc_distanceFP3D;
if (_run == 0) then {_slope = 0;} else {_slope = atan (_rise / _run);};

hintSilent composeText

parseText "<t color='#ff0000'>Movement monitor</t>", linebreak,
parseText format ["<t align='left'>Fatigue: %1</t>", _newFatigue], lineBreak,
parseText format ["<t align='left'>Fatigue Cost/s: %1</t>", _fatigueCost], lineBreak,
parseText format ["<t align='left'>Time to exhaustion (s): %1</t>", _fatigueTime], lineBreak,
parseText format ["<t align='left'>FP 3D Speed: %1</t>", _3dSpeed], lineBreak,
parseText format ["<t align='left'>FP 2D Speed: %1</t>", _2dSpeed], lineBreak,
parseText format ["<t align='left'>Speed: %1</t>", speed vehicle player], lineBreak,
parseText format ["<t align='left'>Veloctiy 3D Speed: %1</t>", _veloSpeed], lineBreak,
parseText format ["<t align='left'>Angle: %1</t>", _slope]

_oldPos = _newPos;
_oldFatigue = _newFatigue;
sleep _step;

Bohemia added a subscriber: Bohemia.May 7 2016, 2:39 PM
Lex added a subscriber: Lex.Jan 28 2017, 2:41 PM
Lex removed a subscriber: Lex.Jan 29 2017, 12:03 AM