Read: determinism
Printable View
Read: determinism
it uses randomized basses for the calculations or set values if u have set values it will always go the same (as in BC2 with havok or pshyX with multilayer games) the problem is in when u have the randomized values it ends up different. if u look at things like source were it dose that it will send debris randomly on every1s clients as there are no set values. if u dont then u get ghost recon with phsyX were things move differently on each players client and it turns into a huge mess ending with no physics being used since it has to be removed
so if u want random or non stock explosions/physics with things that people interact with in multilayer u have to have set values generated by a central client then distributed but that would add alot of latency. the only other way u could do is to make a way of not using floating point but then it would be a mess and with alot of overhead.
It's not really so hard. The clients can sync with the server or agree with eachother on a seed value at the map/match start. Subsequent operations based on the seed will look random but are deterministic.
People don't understand chaos theory very well. It's not that you can't determine the outcome - it's that the outcome varies wildly based on small differences in starting values. But if the starting values are exactly alike (binary) then the outcome will be the same.
but the values are generated based on rounded floating point numbers and on positional data that can vary client to client. im not saying that it cant be done its really impractical or seams that way based on the previous implementations
The Physics has to be done at the server level, job done.
The initial seed values are exact binary exchanges. Any subsequent calculations based on the seed should come out the same - assuming everyone is running processors that conform to established standards.
I like the PhysX Nurien demo, anyone got some more examples?:ROTF::ROTF::rofl::rofl:
I've pointed out that this is an obvious, but unfortunately, unfeasible solution. A rube's solution.
Okay, so you do the physics calculations server-side. And THEN what?
Good thing with have established standards, then. Such as x86.
The no-brainer fix to this is to generate them based on something that's no so prone to desyncrhonization. A random seed can be any arbitrary variable. You could even make the server spit them out once every N seconds.
How is one thread full of so much fail? And more importantly why is it so hard for some to understand that we don't want something for nothing from Nvidia. We only want what we paid for! We're not asking for our ATI cards to run PhysX, we want our Nvidia cards to do what we bought them for. How is that getting anything for free? As a paying Nvidia customer I expect the product I payed for to do what it says it will do and in fact is supposed to do.
Then we have some people who say why should only Nvidia pay for development to support ATi users? We don't want them to pay for anything! In fact we are trying to save them money by not having to keep paying their developers to purposely cripple their own cards! Obviously they are paying their devs to do this. They could have just left it alone and none of this would be an issue and hey, they'd have a few more bucks in the bank. And more importantly they wouldn't have generated all this negative press and inadvertently shot themselves in the foot.
Why would ATI/AMD need to pay Nvidia to use it when the ATI card is not using it. Customers are paying for it when they buy an NVIDIA card, Nvidia is just a bunch of :banana::banana::banana::banana::banana:s that say "if you dont use us as primary, then you don't get to use the product you purchased".
The hilarious thing is an actual Ageia PPU will refuse to work with an ATi card as well.
It seems you have some assumptions in your theory which aren't really accurate. Order of operations can have this varying effect you're referring to on calculations. Things can be different driver to driver.
Server-side seems the way to go to me in order to ensure the same output across multiple computing architectures (think some physics on CPU some on GPU), at least for multiplayer games.
I already said this,it was ruled as unfeasible.:eek:
it's reasonable to keep the position of ... let's say, 64 player characters synchronized.
It's entirely unreasonable to keep coordinates of 200,000 physics objects synchronized.
Read: unfeasible solution.
(a lot of posters in this thread seem to have trouble reading)
By quoting this post in its entirety, I affirm that I can neither read nor write, and am, in fact a big dumb babby.
It sounds perfectly feasible to me.
Because we already have it.
I play a game of pool on-line with 12 others watching each game is random & so is each hit, everyone sees that ball fly around & interact with the other balls on the table exactly the same as everyone else, because the server is sending out the same results to everyone even tho the the balls gets it differently every time i take a shot.
Actually i do understand.
It just need to be established that its a matter of computation power & not because of everyone would get random results to each other which would happen if all advanced physics was computed on everyone's client side.
This just in: Source engine game support player-interactive physics and have since release.
off topic much?
If the computers are all in sync then they should be performing the same operations in the same order on the same data. Client side prediction throws a wrench in this by letting the local computer work with data the others don't have yet. That's when it (the game state) becomes a chaotic system. Until the other clients are updated with the new data (and vice versa) the state of the system diverges more and more wildly with time. That's why I advocate an honest dedicated server and why real peer-to-peer game networking died shortly after doom. Because even if the clients' calculations are diverging for whatever reason ( lag, etc ), it will get synced with the server periodically. Hopefully in short enough intervals that the divergence doesn't harm gameplay.
So what if debris flies around differently on different clients. They aren't critical to the gameplay anyway, it's just visual. Just like entire PhysX thingie.