Page 1 of 1

CE networking/Timers

Posted: Wed Jul 10, 2019 11:40 pm
by Personwithhat2
There's an ocean of deprecated stuff, especially related to networking.
Could someone please work on cleaning it up?

There's frequent comments alluding to Crysis, along with bugged network functionality.
E.g. in GameContext.cpp, pFlags are NOT passed into serialization.
So pflags |= ssf_compensate_time_diff; not used anywhere -> All implementation around this useless.

Plus RequestRemoteUpdate() which is basically marking aspect dirty but also sending a eNOE_PartialUpdate event.
Triggers ContextView::NotifyPartialUpdate() -> And I have no idea what this is for, sends a one off message for that entity??

Reasoning conflicts with:
// register a partial update in the netcode without actually serializing - useful only for working around other bugs
virtual void RequestRemoteUpdate(NetworkAspectType aspectMask) = 0;

It's marked dirty, so ofc it serializes. No explanation of these 'other bugs' and it's only used when there's an entity physics event (e.g. after updating position and what not).

The lack of documentation on networking coupled with code that hasn't been touched in 3+ years is ofc a place for improvement.
Most of my network knowledge is by digging and reverse-engineering CE network code, and one discussion with i59 sometime last year where he clarified a bit on memento streams/aspects.

Additionally I'd like to mention my Time PR (again) which has extensive work done to function with the MPFR library.
Have streamlined and removed inaccuracies, while updating existing serialization/etc.
There's plenty areas of improvement for CE code involving timing and networking......

Have not had any time-related question answered by CryTek (I have posts from November/etc.)
As an example, why would you increment base time?
And why would you serialize CTimeValue's with only 2 digits of precision??
And so on.

Again, some cleanup is in order and networking shouldn't be only in R&D.