2019-10-19 11:58 EDT


View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0002918FSSCPgameplaypublic2015-08-31 01:09
ReporterApollo 
Assigned ToMageKing17 
PrioritynormalSeverityminorReproducibilityalways
StatusresolvedResolutionfixed 
PlatformOSWindows 7OS VersionHome Edition
Product Version3.7.0 
Target Version3.7.4Fixed in Version3.7.3 
Summary0002918: +Max Glide Speed is broken
Description"+Max Glide Speed:" becomes completely nonfunctional if the player releases the acceleration or deceleration keys before they press either of the glide keys. This makes it possible to glide at afterburner speed for an indefinite period of time, causing a wide variety of mechanic imbalances. Most obviously, engine power has little worth.
Steps To Reproduce1. Run attached mod with 3.7.0 or 3.7.1 (other builds seem to work too).

2. Load "glidetest.fs2" in the mission simulator.

3. Without changing to a different ship, start the mission. You will find that the Ulysses's tabled max gliding speed (70 m/s) only works when the acceleration or deceleration keys are held down when the glide key is pressed. For convenience, you may wish to change the default glide key binding.
Additional InformationListed as major because a feature is basically broken.
TagsNo tags attached.
Attached Files
  • zip file icon Glidebug.zip (2,399 bytes) 2013-09-14 13:48
  • patch file icon physics.cpp.patch (784 bytes) 2015-04-07 15:55 -
    Index: code/physics/physics.cpp
    ===================================================================
    --- code/physics/physics.cpp	(revision 11296)
    +++ code/physics/physics.cpp	(working copy)
    @@ -715,8 +715,7 @@
     			vm_vec_scale_add2(&pi->desired_vel, &orient->vec.rvec, xVal);
     			vm_vec_scale_add2(&pi->desired_vel, &orient->vec.uvec, yVal);
     
    -			// Only do the glide cap if we have one and are actively thrusting in some direction.
    -			if ( curGlideCap >= 0.0f && (ci->forward != 0.0f || ci->sideways != 0.0f || ci->vertical != 0.0f) ) {
    +			if ( curGlideCap >= 0.0f ) {	// so if negative, don't bother with speed cap
     				float currentmag = vm_vec_mag(&pi->desired_vel);
     				if ( currentmag > curGlideCap ) {
     					vm_vec_scale( &pi->desired_vel, curGlideCap / currentmag );
    
    patch file icon physics.cpp.patch (784 bytes) 2015-04-07 15:55 +

-Relationships
+Relationships

-Notes

~0016438

SmashMonkey (reporter)

Reproducible

~0016440

Goober5000 (administrator)

Marking for code review because MageKing17 says that this is actually intended behavior.

~0016442

MageKing17 (developer)

It should be possible to add, say, a game_settings.tbl flag to allow mods to alter this behavior, but I think this ultimately is a feature request, given that the code intentionally (both by the code and the comments) doesn't decay velocity when the ship isn't actively thrusting. I've assigned this to myself because I think it wouldn't be hard to do, but I don't see any reason to crowbar this into 3.7.2.

(If anybody else wants to take a look or try their hand at this, the relevant code seems to be in physics.cpp, especially line 719.)

~0016609

MageKing17 (developer)

After this conversation on the forum, I think it's time to take another look at this: http://www.hard-light.net/forums/index.php?topic=89438.0

Given the fact that the condition was added by Sushi who can't remember why it was added, and that the impact on existing mods is fairly limited, and that the current behavior is counter-intuitive to pretty much everybody, does anybody think we actually need a flag to preserve the old behavior? Or does it make sense to just revert r8628 (as the attached patch does)?

~0016624

Goober5000 (administrator)

Can you poll a few mod leaders of mods which use glide? Diaspora et al.?

~0016769

MageKing17 (developer)

This had a pull request (https://github.com/scp-fs2open/fs2open.github.com/pull/288) and was merged (https://github.com/scp-fs2open/fs2open.github.com/commit/9bc635e0982fdafc75b7aa213820258ac5ae0296) ten days ago. Default behavior is now the intuitive one, and the old behavior can be restored with an AI profile flag. I'd link to the wiki entry for the flag, but HLP is down at the moment; I'll edit this note to add that link later.

(In case I forget to do that in the future: it's "$glide decay requires thrust:")
+Notes

-Issue History
Date Modified Username Field Change
2013-09-14 13:48 Apollo New Issue
2013-09-14 13:48 Apollo File Added: Glidebug.zip
2015-01-03 22:54 SmashMonkey Note Added: 0016438
2015-01-04 02:21 Goober5000 Note Added: 0016440
2015-01-04 02:21 Goober5000 Status new => code review
2015-01-04 02:21 Goober5000 Target Version => 3.7.2
2015-01-04 02:44 MageKing17 Note Added: 0016442
2015-01-04 02:44 MageKing17 Assigned To => MageKing17
2015-01-04 02:44 MageKing17 Priority high => normal
2015-01-04 02:44 MageKing17 Severity major => feature
2015-01-04 02:44 MageKing17 Status code review => assigned
2015-01-04 02:44 MageKing17 Target Version 3.7.2 =>
2015-04-07 15:55 MageKing17 File Added: physics.cpp.patch
2015-04-07 15:58 MageKing17 Note Added: 0016609
2015-04-07 15:58 MageKing17 Status assigned => code review
2015-04-07 15:58 MageKing17 Severity feature => minor
2015-04-08 21:34 Goober5000 Note Added: 0016624
2015-08-31 01:09 MageKing17 Note Added: 0016769
2015-08-31 01:09 MageKing17 Status code review => resolved
2015-08-31 01:09 MageKing17 Resolution open => fixed
2015-08-31 01:09 MageKing17 Fixed in Version => 3.7.3
2015-08-31 01:09 MageKing17 Target Version => 3.7.4
+Issue History