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
Getting the D2k damage model in line with the original Dune 2000 #17972
Comments
Updated the info about inaccuracy - I did some tests with turning up weapon ranges to very high values for a bunch of different weapons and the results are the same - at very long ranges accuracy is pretty much non-existent. I noticed inaccuracy seems to scale linearly with range and there doesn't seem to be a limit, so I updated the list of things that need to be done as well. |
Rather than renaming |
Having a flag defining the meaning of |
Buildings with >1 cell footprint might be a different story, but at least for 1-cell buildings and all units we could simply shrink the circle shape to a 32 WDist radius (or even just 16?). We might still want that feature for downstream mods anyway, of course. |
I don't know if any downstream mods would want this (it is a pretty basic engine thing that RA does in one way and D2k does in another way, with neither of them being particularly "better"). |
I believe this should be now done. |
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. basic map Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. basic map Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. basic map Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. basic map Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. Revert "Align D2k weapons to better match original" This reverts commit d46e72e. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. basic map Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. Revert "Align D2k weapons to better match original" This reverts commit d46e72e. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. basic map Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. Revert "Align D2k weapons to better match original" This reverts commit d46e72e. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. basic map Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. Revert "Align D2k weapons to better match original" This reverts commit d46e72e. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. basic map Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. Revert "Align D2k weapons to better match original" This reverts commit d46e72e. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. basic map Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. Revert "Align D2k weapons to better match original" This reverts commit d46e72e. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. basic map Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit 0b224d3.
Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit 0b224d3.
This reverts commit d46e72e. Revert "Align D2k weapons to better match original" This reverts commit d46e72e. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
This reverts commit d46e72e. basic map Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972 Revert "Align D2k weapons to better match original" This reverts commit d46e72e. fix Ornithopter is not targetable Make Ornithopter targetable by ani-air units. Align D2k weapons to better match original Based on OpenRA#20021 . Changes are inline with OpenRA#17972
I was recently inspired by a discussion on Discord involving #14692 and the future of the D2k mod to dig into the original Dune 2000 in order to figure out how its damage system works so we can mimic it and move forward.
So after getting the Gruntmods Edition and TibEd (linking in case anyone wants to verify what I have to say below) I spent a significant amount of time running various in-game tests of simply making units fire at other units or at the ground, tweaking values in TibEd and observing. After a lot of testing and a thorough discussion with @pchote (for better or worse in private, so I can't link) I can safely state the following as facts (people are free to verify for themselves; testing is pretty easy with the latest version of the Gruntmods Edition):
DUNE 2000
EDIT: After further testing it seems that inaccuracy scales ROUGHLY from 0 at 1 cell away to 0c512 at 5 cells away to 1c0 at 9 cells away. This may not be 100% accurate, but it seems like a pretty good approximation to me.
Example: a tank dealing 2000 damage shooting at a tank with 2000 HP in a neighboring cell. Splash area is set to 320 (10 cells). Although not clearly visible, after some closer analysis this proves that the splash damage falloff is linear from the center to the edge, dealing 0 damage at the edge.
You can find screenshots of my earlier (and quite inconclusive because I was only firing at max range) tests on Discord shortly after the message linked above.
OpenRA
Now, with the facts about the original game out of the way, let's see what needs to be done in OpenRA and what we can currently do to approximate the system outlined above.
That is a 1:1 match with the original.Values may need to be tweaked, though, as it seems the original game has more generous inaccuracy than the D2k mod.EDIT: Since it seems that Dune 2000 doesn't have an upper limit to inaccuracy, the initial assumption here was wrong. We instead need a new setting on
Inaccuracy
.SplashDamageWarhead
to this day. That also matches the original. Values may need to be tweaked, as it seems the original has smaller splash areas that the D2k mod.SplashDamageWarhead
defaults to an exponential falloff (as explained by @pchote), and while that is even overriden on the D2k weapons to something else, it could easily be changed to the desired value to mimic the original game. So we have a complete match on this as well. Values for falloff will have to be tweaked.SpreadDamageWarhead
(how about alsoTargetDamageWarhead
, meaning directly to the baseDamageWarhead
?) calculate the damage based on the target'sCenterPosition
(actually best to do it by closestTargetablePosition
, which for the general case with the current D2k setup would be identical, but more flexible overall; or just add both as options).TargetablePositions
were added. So we have a match with the original here as well. It seems thatTargetablePositions
are properly set too, so there is probably nothing needing to be done here unless I missed a building to check. Also this likely means that dealing damage at theTargetablePosition
instead of theCenterPosition
is maybe preferable.I am writing this in the hopes that it is enough to finally put an end to all the "but we don't do damage like the original because of X or Y" arguments that have been getting in the way for the past few years. One of the goals is to close #14692 as #notAnIssue. Then a dedicated issue should be opened for the feature request about the TS/RA2 "Degenerates" thing.
As for the D2k mod, this is a summary of what needs to change so we can call the damage model "finished" as in "mimicking the original":
Tweak weapon (projectile)Inaccuracy
values. This may need further testing in the original to see what those are, but the weapons I've tested so far would have a max inaccuracy of 0c512WDist
in OpenRA terms.Add an option to projectiles to use aInaccuracyStep
property with no upper limit (and rename the currentInaccuracy
property toMaxInaccuracy
if I'm understanding it correctly).Add a flag to projectiles to denote whether the
Inaccuracy
property should be used as a maximum inaccuracy at max range or as an inaccuracy step per cell. (And then use that to adjust the inaccuracy for D2k weapons.) [D2k inaccuracy #18009]Spread
values. These can easily be taken from TibEd with the understanding that 32 world distance units in Dune 2000 are one cell, which is 1c0 or 1024WDist
in OpenRA. [D2k weapon damage spread and falloff #18010]Falloff
values. With the above reasonings we can conclude these should all beFalloff: 100, 0
for the D2k mod (except some potential special edge cases maybe??). [D2k weapon damage spread and falloff #18010]DamageWarhead
to define whether the current warhead should deal damage based on distance to HitShapes (current),CenterPosition
or closestTargetablePosition
and add the corresponding calculations. (Who knows, some community mod might even like this as a feature.) [D2k damage calculations #18023]With the 4 admittedly simple changes outlined above I believe we can finally get our D2k's damage model to completely match the original game and finally get the ball rolling on "finishing" and then "reimagining" the game (
I am pretty sure the Wiki says somewherethe repository readme says that our mods are "reimaginings" of the original games, while the website says we focus on providing "authentic experience" for D2k - we should really fix those statements, by the way).As a side bonus of all of this, the different damage model is another step away from "RA with sand" which is a positive direction to move D2k into.
Also keep in mind that until we do all of the outlined changes, the damage model will be significantly different than the original, but that shouldn't force it all to be done in a single PR (or even in a single release cycle, if things drag on).
Of course this doesn't include unit/building armor types, weapon raw damage and weapon effectiveness against different armor types, as those are presumed to be done. If those should be tweaked further they could be included in this ticket so that at the end of it we have a complete match to the original game.
EDIT: @MustaphaTR has confirmed that actor HP and weapon damage have already been set to original values x10 a while back, armor types are as in the original and damage % vs armor types is set like in the original. That means there are no additional points that need to be looked into.
Since they are three of the people responsible for bringing this up, I would like to ping @MustaphaTR, @CH4Code and @Orb370 here.
The text was updated successfully, but these errors were encountered: