[D1X-Rebirth nightly] Possible bug - homing missile behavior changed
#1
In 0.60 you can outrun a homing missile with bi-chording, where it was only possible with tri-chording in 0.58.1 (on Insane skill). I have two demos when I am running for a minute with homing missiles on my tail, both 0.58 and 0.60 nightly to illustrate it.
https://www.sendspace.com/filegroup/XTt8...k%2BO6XuXQ
Could be a (new) bug with missile speed, homing algorithm or ship's physics.
Reply
#2
Actually, D1X-Rebirth 0.58.1 is the version with the bug here: homing weapons in that version are much more difficult to dodge than in the original MS-DOS version. The original homing weapon behavior - or as close to it as we could get - was restored in the nightly builds about a year ago. If you'd like to see all of the discussion that led to this change (and be warned: it's a ton of reading Wink ), here are some links:
Reply
#3
(01-17-2018, 10:57 PM)Ryusei117 Wrote: Actually, D1X-Rebirth 0.58.1 is the version with the bug here: homing weapons in that version are much more difficult to dodge than in the original MS-DOS version. The original homing weapon behavior - or as close to it as we could get - was restored in the nightly builds about a year ago. If you'd like to see all of the discussion that led to this change (and be warned: it's a ton of reading Wink ), here are some links:

Ok, good to know! But those are mostly concerned with acq cones and turning algorithm (I also know the basics of how it works from studying the code), and this problem, at first look, concerns relative speeds (homer/player ship). But maybe there is smth I missed here... Still if you looked at the new demo and say that this behavior is correct and old one is wrong, so far so good! The only question remaining, whether D2 homers behaviour is correct in 0.58.1 and latest/previous nightlies?
Which D2 version should I trust (BTW I don't play DOS versio so cannot really compare to it)
Reply
#4
Whoops, that was me jumping to conclusions ... Tongue I took one look at this thread and thought it was about dodging Homing Missiles - but I overlooked that you had said "outrun a homing missile" and not "dodge a homing missile". Sorry about that.

This is interesting ... I compared Descent 1.4a on DOSBox, D1X-Rebirth 0.58.1, and a recent development version of D1X-Rebirth (commit "do_powerup_frame: reject invalid vclip frametime"), following the flight path shown in your demos, but using only dichording (forward-left) in all of the versions. In Descent 1.4a and D1X-Rebirth 0.58.1, the Homing Missiles would follow me and eventually detonate close enough to cause minor splash damage. In the development version, however, the missiles never got close enough to cause any damage.

An identical test of Descent II using the mission `D1CONV.MN2` revealed similar results - except that the missiles didn't get close enough to damage me in both D2X-Rebirth 0.58.1 and the development version, while they did in Descent II 1.2 on DOSBox.

So yeah, this might be a subtle issue in the latest homing code ... Should be interesting to see what Kp and zico think of it. Thanks for finding this!
Reply
#5
I don't recall any intentional changes to homing missile speed / performance, so it's probably fair to call it a bug if some versions let you outrun the missile and others don't, assuming equal pilot performance, level topology, etc.

Would either of you be willing to bisect where this started? Bisecting runtime changes like this is a bit tedious since no test harness is available to automatically and objectively judge whether a given commit is good, but it's a good first step to identifying why the performance changed.
Reply
#6
(01-21-2018, 12:35 AM)Kp Wrote: I don't recall any intentional changes to homing missile speed / performance, so it's probably fair to call it a bug if some versions let you outrun the missile and others don't, assuming equal pilot performance, level topology, etc.

Would either of you be willing to bisect where this started?  Bisecting runtime changes like this is a bit tedious since no test harness is available to automatically and objectively judge whether a given commit is good, but it's a good first step to identifying why the performance changed.

I can only bisect on the nightly builds (7 or 8 of them in the Archive), not the commits between them (because I still cannot compile the code on Windows). Is this ok?
Reply
#7
It is a useful start. Even a broad bisection like that will narrow down the area to search, whether that later search is someone else bisecting commits between builds or is regular debugging / code analysis.
Reply
#8
I just discovered that in D1X-Rebirth 0.59.100, the Homing Missiles also behave differently than in the MS-DOS version. That narrows things down a bit more. So far, we have this:
  • D1 - latest known version without the bug: D1X-Rebirth 0.58.1
  • D1 - earliest known version with the bug: D1X-Rebirth 0.59.100
  • D2 - latest known version without the bug: Descent II 1.2 (MS-DOS)
  • D2 - earliest known version with the bug: D2X-Rebirth 0.58.1
So unfortunately, AlexanderBorisov won't find the version that introduced the bug in any of the Windows nightly builds. I'll see if I can find some time to finish bisecting D1. D2, on the other hand, ugh ... Tongue It could be anywhere between the MS-DOS version and 0.58.1 ...
Reply
#9
Don't worry about the D2 version for now. If it has gone unreported this long, it could take a substantial effort to find.
Reply
#10
Hmm ... I encountered a strange problem while bisecting for the D1 bug. These are the steps I took:

Code:
git bisect start git bisect bad 0.59.100 git bisect good 0.58.1-d1x # Git suggested commit f5e751644830e3caf66e5b001def850a83604411. That one # segfaults upon starting a new game, so I skipped to the previous commit. git reset --hard HEAD~1 # Commit d312248d45c217d7b37905b6858d40e0972b8347 has the bug. git bisect bad

... but then, Git suggested commit "Move */main/menu.h -> common/main/menu.h". When I built that one and ran it, the version number on the main menu and in the game log was "0.57.3". Confused That can't possibly be right, can it? Should I just test that build and continue bisecting, or did something go wrong ... ?
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)