#Network Prediction Systems
1 messages · Page 1 of 1 (latest)
Using this cool Thread System, which will totally not help me here, cause others will just spam away the main post ;_;
I wonder what other ways are there. It's somewhat clear that different systems need different prediction (e.g. GAS has a hard time working with the concept of NPP/CMC), but on the other hand it's somewhat problematic when multiple systems use different prediction logic, as they can't rely on each other.
A good example for that is the CMC <-> GAS problematic. If one activates a SprintAbility, which adds a GE that modifies MovementSpeed Attribute on Server and Client, you'd think that "Great, I have a predictive Sprint System!", but then you'll notice that you still receive corrections.
Reason for that is that CMC simply isn't guaranteed to tick its predicted movement and Server Movement in the same "rhythm" as GAS sends the RPC to activate the Ability. Simply put, Server and Client would perform at least a few moves with different MovementSpeeds, causing corrections.
People then tend to either ignore that or change the setup to be a fixed Sprint Speed Value and communicating the Sprinting through the CMC entirely, while only setting the Local bWantsToSprint boolean via a local Ability.
@jaunty junco If you may want to repost that comment. Keeps things clean :D
not as far as I'm aware, whys that? Thinking of writing something yourself? (Looks like it could be useful)
Yes and no. I'm working with NPP for weeks now and it has its flaws. On the other hand, if one looks online, there isn't anything beyond the basics of Prediction, Interpolation and Reconciliation, and mostly only for Movement related prediction (so nothing akin to GAS).
I like to learn more and more stuff and I'm sure there are some pretty intelligent people out there who already researched this stuff. Wondered if someone wrote something done.
It's relatively straight forward to write the same PredictionSystem that CMC or NPP use, but they wouldn't support GAS that well. So a mix or a completely different setup would probably be better.
man i feel like your speaking into my soul with this thread. there really isn't many resources, or i'm just too small brained to find them. i've been hoping that you or wizardcell or someone will eventually save the day with a NP compendium haha.
i'm really not familiar with GAS so i don't have much to offer. if you have any resources you've found helpful other than just reading the CMC/NPP code, plz send
currently i'm looking at this project https://github.com/Fragsurf/Fragsurf-2 although so far it seems to be similar to CMC
since unity has no built in networking i've been having better luck finding public codebases
i am really keen on hearing what flaws you encountered in NPP , obviously other than things we can fix,
As for other prediction system in terms of behavior i don't think it's any different. you covered the 2 types.
GAS only predicts and syncs "actions" , by making the client revert them when it disagrees, or ack and do nothing when it does agree. not the state, that is why over time effect and some calculations can't be predicted. this means when you create a "predictable action" you need to also know the opposite of that action to undo it (this gets very tricky is some cases).
CMC and NPP do almost same thing, except who checks for corrections as you said. matter of fact when using NPP in independent mode it behave exactly like CMC. these sync "State". and i believe this is way more reliable in multitudes of network conditions and gives more freedom of type of simulation you can make.
i don't think there's a perfect solution that would work for all situations and GAS is a really smart way of doing prediction but it is crucial to sync things that they operate on the same cadence. i hope there's someone here who can prove this rule wrong but i wasn't able to.