|View Issue Details|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0003708||Spring engine||General||public||2013-04-16 07:18||2013-08-21 00:43|
|Target Version||Fixed in Version||94.1.1+git|
|Summary||0003708: Please use realistic physic drag to solve issue 3704 (do not block impulse)|
|Description||Physic drag is really simple:|
newUnitSpeed = oldUnitSpeed + totalImpulse + (drag)
drag = -1*(unitVelocity*unitVelocity*unitDragCoefficient*fluidDensity)
This is based on http://en.wikipedia.org/wiki/Drag_equation
This system really work. I have coded & tested them in ZK gadget and it show realistic behaviour & could also handle exceptional case without additional coding.
Exceptional case that the equation can handle automatically:
1) simulate friction + external impulse + drag at same time without needing to treat them as seperately case (drag increases if unit move toward specific direction but the unit's engine power will remain constant and the drag equation automatically set the max velocity based on fluidDensity and or dragCoefficient)
2) no unit thrown up from underwater (drag increase rapidly if unit moved too fast due to transient impulse, leading to hi fluid resistance and causing unit to stop more rapidly than slower unit)
|Steps To Reproduce|
To see how it work:
Simply remove any code that multiply unitSpeed with "drag".
Simply replace them with unitSpeed = unitSpeed + Drag(unitSpeed, fluidDrag)
With Drag= -1*(unitSpeed*unitSpeed*fluidDrag)
And stuff is automatically calculated.
The equation is simplified from http://en.wikipedia.org/wiki/Drag_equation where mass, and fluid mass is set to 1.
|Tags||air, friction, physic, simulation, water|
|Checked infolog.txt for Errors|
Last edited: 2013-04-16 07:48
The benefit is:
you don't have to remove feature that is fun (like explosion underwater push unit), you don't have to rely of hax "drag" that always break physics, and you simultaneously make the unit's behaviour more realistic.
|when you learn to accept special and general relativity|
issue 3704 is solved wrongly.
If you fix the physic then it would not need to block impulse at all.
It is "solved" within the current limits of Spring's simulation which is neither wrong nor right.
YOU ARE ALSO ASSUMING THAT GAMES ALWAYS SET PROPER VALUES FOR EVERY PHYSICAL QUANTITY INVOLVED WHICH THEY DO NOT.
Because the physic fix is too easy, I won't rest until I can compile own Spring and see it doesn't work.
LUA can do it why not Spring?
|IS IT NOT A MATTER OF THE FIX BEING EASY OR HARD, WHY DONT YOU FUCKING READ?|
Last edited: 2013-04-16 14:25
Its not about "the proper value". I didn't say you must add unit's cross-section into the equation! IT DOESNT MATTER WHAT THE PROPER VALUE WERE!
Don't you understand what this simple equation do?:
newSpeed = oldSpeed + [dynamicDrag]
[dynamicDrag] = oldSpeed *oldSpeed *drag/2
Last edited: 2013-04-16 14:43
YES, PROPER VALUES DO MATTER OR THE OUTCOME OF EQUATIONS WILL BE AS UNREALISTIC AS NOT HAVING THEM IN THE FIRST PLACE! AND GUESS WHERE THESE VALUES NEED TO COME FROM? THAT'S RIGHT, GAMES!
WHERE DO YOU GET THE PROPER VALUE FOR THIS:
speed *= 0.95f
everywhere is 0.9! RANDOMNESS!
Last edited: 2013-04-16 22:22
i not sure what all this mean but a fact is sure for me :
impulse MUST push submarines out of water iF located under them :
not sure if the fix about was for or con
but its obivious than BA or ZK can prevent this hapendig for their special gameplay
still the physic engine must dont make artificial restriction to general logic
at the reverse ground and air unit must be pushed underwater and gamedevs just must predict it can hapend and take some dispositions (or not)
|2013-04-16 07:18||msafwan||New Issue|
|2013-04-16 07:20||msafwan||Tag Attached: physic|
|2013-04-16 07:21||msafwan||Tag Attached: simulation|
|2013-04-16 07:21||msafwan||Tag Attached: water|
|2013-04-16 07:21||msafwan||Tag Attached: air|
|2013-04-16 07:21||msafwan||Tag Attached: friction|
|2013-04-16 07:33||msafwan||Note Added: 0010469|
|2013-04-16 07:41||msafwan||Note Edited: 0010469||View Revisions|
|2013-04-16 07:44||msafwan||Note Edited: 0010469||View Revisions|
|2013-04-16 07:48||msafwan||Note Edited: 0010469||View Revisions|
|2013-04-16 08:12||abma||Relationship added||related to 0003704|
|2013-04-16 12:39||Kloot||Note Added: 0010470|
|2013-04-16 12:40||Kloot||Status||new => closed|
|2013-04-16 12:40||Kloot||Assigned To||=> Kloot|
|2013-04-16 12:40||Kloot||Resolution||open => suspended|
|2013-04-16 13:53||msafwan||Note Added: 0010471|
|2013-04-16 13:53||msafwan||Status||closed => feedback|
|2013-04-16 13:53||msafwan||Resolution||suspended => reopened|
|2013-04-16 14:02||Kloot||Note Added: 0010472|
|2013-04-16 14:02||Kloot||Status||feedback => closed|
|2013-04-16 14:02||Kloot||Resolution||reopened => suspended|
|2013-04-16 14:07||msafwan||Note Added: 0010473|
|2013-04-16 14:07||msafwan||Status||closed => feedback|
|2013-04-16 14:07||msafwan||Resolution||suspended => reopened|
|2013-04-16 14:10||Kloot||Note Added: 0010474|
|2013-04-16 14:10||Kloot||Status||feedback => closed|
|2013-04-16 14:10||Kloot||Resolution||reopened => suspended|
|2013-04-16 14:20||msafwan||Note Added: 0010475|
|2013-04-16 14:20||msafwan||Status||closed => feedback|
|2013-04-16 14:20||msafwan||Resolution||suspended => reopened|
|2013-04-16 14:21||msafwan||Note Edited: 0010475||View Revisions|
|2013-04-16 14:22||msafwan||Note Edited: 0010475||View Revisions|
|2013-04-16 14:23||msafwan||Note Edited: 0010475||View Revisions|
|2013-04-16 14:25||msafwan||Note Edited: 0010475||View Revisions|
|2013-04-16 14:39||Kloot||Note Added: 0010476|
|2013-04-16 14:39||Kloot||Note Edited: 0010476||View Revisions|
|2013-04-16 14:40||Kloot||Note Edited: 0010476||View Revisions|
|2013-04-16 14:43||Kloot||Note Edited: 0010476||View Revisions|
|2013-04-16 15:01||msafwan||Note Added: 0010478|
|2013-04-16 15:01||msafwan||Status||feedback => assigned|
|2013-04-16 22:18||emmanuel||Note Added: 0010486|
|2013-04-16 22:19||emmanuel||Note Edited: 0010486||View Revisions|
|2013-04-16 22:22||emmanuel||Note Edited: 0010486||View Revisions|
|2013-08-21 00:43||Kloot||Status||assigned => closed|
|2013-08-21 00:43||Kloot||Resolution||reopened => fixed|
|2013-08-21 00:43||Kloot||Fixed in Version||=> 94.1.1+git|