Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

D2X-Rebirth Dec 27 2019: Homing projectiles/possibly robot projectiles in general (?) seem easier to dodge versus 0.58.1 #488

Open
kakhome1 opened this issue Jan 5, 2020 · 6 comments

Comments

@kakhome1
Copy link

kakhome1 commented Jan 5, 2020

In the latest Rebirth, it seems somewhat easier than in 0.58.1 (or Dos) to evade Homing Missiles or other homing projectiles. At least in Descent II, haven't tested Descent I. I'm not sure if they are moving a bit slower than they should or don't home as strongly. Might be slightly easier to dodge robot fire in general in fact but noticed it most for homing shots.

(As for not just using 0.58.1...I prefer a more recent version because I can suppress the Thief bot...of whom I hate, personally.)

@kakhome1
Copy link
Author

kakhome1 commented Jan 5, 2020

(Probably need to check robot/projectile/ship speeds and homing 'box of sight' to confirm if anything is amiss here or not...I don't know how to do that myself...it just seemed easier to dodge)

@vLKp
Copy link
Contributor

vLKp commented Jan 6, 2020

Homing weapons are a perpetual source of argument in the Descent community. @zicodxx reworked them after 0.58.1 to try to make them more like DOS.

If you can present an analysis of their performance in both 0.58.1 and tip, I will look at it.

@ghost
Copy link

ghost commented Jan 7, 2020

I have spent the better part of the day comparing the homing code (turn, tracking) and the majority of the weapon code in general with the original Descent and Descent 2 source releases. Apart from the obvious fixes to only execute homing related code parts (i.e. turning and tracking) based on a 30 FPS interval, Rebirth seems to match the original game fine. 0.58.1 used a different approach in that it tried to execute the homing code in every frame and instead scale the vector added to target by FrameTime. The scaling was off and 0.58.1 didn't produce faithful results.

To my best knowledge and belief, I would say the current base reproduces the original game "as if running on a constant 30 FPS setting" faithfully.

I did also try and compare to the DOS game and apart from it being really hard to run them consistently at 30 FPS (and considering that the Descent 2 tracking behavior changing at 32 FPS), I cannot tell a difference either.

If there is something off, I cannot find it. I'm sorry.

@vLKp
Copy link
Contributor

vLKp commented Jan 8, 2020

Given that zico has reviewed this again in detail, and I'm not inclined to doubt his work, I think the only remaining thing that could be done here is if someone wants to collect and present data showing that DOS and tip behave substantially differently at 30 FPS, which is generally considered the standard environment for homing weapons. @kakhome1: is that something you would be interested in collecting?

@kakhome1
Copy link
Author

kakhome1 commented Jan 8, 2020

I fully trust zico...but the difference in dodge-ability between Dos and 0.60 is incredible. I posted two videos to YouTube (kakhome1) illustrating.

What seems to happen is in Dos if you dodge a homing missile that was fired in front of your ship (ie you can see it in your FOV) by flying above, below, or to the side of it, the missile will U-turn quite frequently, and aim toward the back of the player ship. While in Rebirth, strafe type movement to dodge a missile seems to usually result in a successful evasion; much less chance it will U-turn and keep you under its fire.

@ghost
Copy link

ghost commented Jan 16, 2020

Considering the comparison videos I was investigating the issue more. I was and still am unable to reproduce the issue as shown in the videos. However, I tried a replication process that was hopefully more reliable and I did in fact find something. Provoking a robot to shoot a missile towards me, then flying backwards (away from the missile) while slightly turning the ship to the left or right (so I would fly in a large circle), I was in fact able to make the missile lose track reliably. I have been using this technique in a specific test level made for homing missile tests:
trainer.zip

In the DOS version I am unable to lose track of the missile, even with the program running not even closely to 30 FPS. So there is something evidently different. However even knowing it should be related to the tracking, I am unable yet to isolate the cause. The only tracking related function that does not seem to match the DOS version from what I can tell seems to be find_homing_object() which just calls find_homing_object_complete() now. But that function does not apply to regular homing missiles but other tracking projectiles such as the Omega.

My assumption is that the issue is hidden somewhere within track_track_goal(), object_is_trackable() and/or find_homing_object_complete(). But all these functions seem to be in order compared to the original D2 code base. I may need to bisect the issue and see if I can find the check in that introduced the issue, because I am not confident I will be able to find it by just reading and comparing. In the end, it may be a piece of vector math code that got altered. I hope I can find whatever it is. This is an extremely challenging and equally annoying issue, especially considering how much time I spent with this particular part of the game code already.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants