View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
---|---|---|---|---|---|---|---|---|---|
0003708 | Spring engine | General | public | 2013-04-16 07:18 | 2013-08-21 00:43 | ||||
Reporter | msafwan | ||||||||
Assigned To | Kloot | ||||||||
Priority | normal | Severity | feature | Reproducibility | always | ||||
Status | closed | Resolution | fixed | ||||||
Product Version | |||||||||
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. https://code.google.com/p/zero-k/source/browse/trunk/mods/zk/LuaRules/Gadgets/unit_float_toggle.lua https://code.google.com/p/zero-k/source/browse/trunk/mods/zk/LuaRules/Gadgets/unit_impulsefloat_toggle.lua 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. | ||||||||
Additional Information | Note: 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 | |||||||||
Attached Files |
|
![]() |
|
msafwan (reporter) 2013-04-16 07:33 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. |
Kloot (developer) 2013-04-16 12:39 |
when you learn to accept special and general relativity |
msafwan (reporter) 2013-04-16 13:53 |
issue 3704 is solved wrongly. If you fix the physic then it would not need to block impulse at all. |
Kloot (developer) 2013-04-16 14:02 |
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. KTHXBAI! |
msafwan (reporter) 2013-04-16 14:07 |
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? |
Kloot (developer) 2013-04-16 14:10 |
IS IT NOT A MATTER OF THE FIX BEING EASY OR HARD, WHY DONT YOU FUCKING READ? |
msafwan (reporter) 2013-04-16 14:20 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 |
Kloot (developer) 2013-04-16 14:39 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! |
msafwan (reporter) 2013-04-16 15:01 |
WHERE DO YOU GET THE PROPER VALUE FOR THIS: speed *= 0.95f everywhere is 0.9! RANDOMNESS! |
emmanuel (reporter) 2013-04-16 22:18 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) |
![]() |
|||
Date Modified | Username | Field | Change |
---|---|---|---|
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 |