View Issue Details

IDProjectCategoryView StatusLast Update
0002918FSSCPgameplaypublic2015-08-31 05:09
ReporterApollo Assigned ToMageKing17  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
OSWindows 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.

Activities

Apollo

2013-09-14 17:48

reporter  

Glidebug.zip (2,399 bytes)

SmashMonkey

2015-01-04 03:54

reporter   ~0016438

Reproducible

Goober5000

2015-01-04 07:21

administrator   ~0016440

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

MageKing17

2015-01-04 07:44

developer   ~0016442

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.)

MageKing17

2015-04-07 19:55

developer  

physics.cpp.patch (784 bytes)   
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 );
physics.cpp.patch (784 bytes)   

MageKing17

2015-04-07 19:58

developer   ~0016609

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)?

Goober5000

2015-04-09 01:34

administrator   ~0016624

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

MageKing17

2015-08-31 05:09

developer   ~0016769

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:")

Issue History

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