Jump to content
Koumei & the Five Fates: Share Bug Reports and Feedback Here! ×

Missions and network code fixing ideas


Zilotz
 Share

Recommended Posts

Just a small note: if you aren't skilled in IT it can be boring or hard to understand for you, do not feel bad about it, just jump to examples, they are simple to understand for everyone :)

So not too long ago(maybe week ot two, dont remember exactly) there was another DDoS that did show some weak spots in game code.

I did write about some solutions in DDoS discussion thread but i think it is time for separate thread for imporovement ideas.

And small thing that feel clunky since months with laggy host too :)

First things first: i do not know 100% exactly how game code works as i'm not allowed to dig it so i rely on symptoms(and my skills) and logs that i have right to see.

1) Server sync requests during mission should be redesigned a bit to let people play even if game cannot reach server(disable forced logoff but keep logs you send for next try).

2) Mission result/endless droptable fetch should be fixed for situations server does not respond fast enough(i'm talking about retries with inceasing wait time between them not to hog network but avoid still losing data). 

3) UI improvements for Liset during lag: Instead of showing "Network not responding" show which action is stuck.

4) Client/host inconsistency causing numerous bugs and lags.

There is a pile of problems in that but not all of them could be easily fixed.

First approach on solving can be session network code rewrite to make it fully asynchronous and as much independant on every player as possible.

Some examples on what is buggy/clunky and how it will be after such rewrite:

a) Client comes to door but it does not open for 500ms or even some seconds. 

If rewrite done: Client comes to door and it opens instantly for him(like it does for host), other clients that are away for door can see it open with some delay(as they do not interract with it).

b) Client jumps out of frame(to operator mode) and sees nothing sor some seconds, all actions are blocked except running.

If rewrite done: Client can jump out and back without any problems with delay exactly like host can, for team it can look laggy like when they see host doing it but that's okay as it does not afect gameplay in a bad way.

c) Equinox clone does not shoot well and the damage does not count to client.

If rewrite done: Equinox clone works as good as on host, damage is calculated properly the same way as when on host. 

d) Dead trin casting ult(downed some milliseconds before cast because of delay). 

If rewrite done: Trin will not die casing ult because health gets restored when she casts, not with host delay. Health restoring to teammates/allies will be affected with same delay as before. 

e) Shattering impact works only for host.

If rewrite done: Shattering impact works for whole team as good as it works for host now but can be small delay to see effect from teammates using it. 

 

So there is a way to improve life of players in many situations, i know that code rewrite is hard(you never want to break old working thing to make new even better working and taht is totally inderstandable) but if you make test branch for that and do some testing in high-delay(or even packet loss) conditions(you can simulate delay using network tools or some software on PC) you will see significant improvements in gameplay it can bring. 

Thanks for reading :)

Link to comment
Share on other sites

8 hours ago, Zilotz said:

1) Server sync requests during mission should be redesigned a bit to let people play even if game cannot reach server(disable forced logoff but keep logs you send for next try).

If you are in IT, why are you suggesting trusting the Client?

8 hours ago, Zilotz said:

3) UI improvements for Liset during lag: Instead of showing "Network not responding" show which action is stuck.

99% of the people don't know anything particular about it, so why tell them?

You seem to be under the impression that the Client should be trusted. This does not work in an online game, straight up, no qualifier.

Link to comment
Share on other sites

3 hours ago, peterc3 said:

If you are in IT, why are you suggesting trusting the Client?

I do not suggest to trust client more than before. I only suggest to be less aggressive to player on network failures(which do happen a lot during DDoS). 

I still suggest to keep and send the whole log(for example part 1 lagged so it got combined with part 2 and sent when its time to send part 2), just do not kick immediately client out of mision because there is a communication problem somewhere.

3 hours ago, peterc3 said:

99% of the people don't know anything particular about it, so why tell them?

Because they can eaily understand if it shows lag on "Saving build" or "Foundry" or "Saving fasion".

3 hours ago, peterc3 said:

You seem to be under the impression that the Client should be trusted.

I do not propose to put any bigger trust here, only the same trust mission host has(which is player too so can never be completely trusted). 

So in fact all that data is still tripple-checked(on full squad) just there will be more fluid way to sync the data.

Edited by Zilotz
Link to comment
Share on other sites

Allowing any desynch whatsoever opens the doors for hackers to start fiddling with the game. With your proposed tweaks, I could temporarily cut network access, use CheatEngine to have an enemy drop 5mil credits, then reactivate network access and it would all be a-okay. The current system requiring constant uptime is the largest factor preventing exploits of that sort.

Link to comment
Share on other sites

2 hours ago, EmissaryOfInfinity said:

With your proposed tweaks, I could temporarily cut network access, use CheatEngine to have an enemy drop 5mil credits, then reactivate network access and it would all be a-okay.

Nope, it will not be okay as you:
1) Will fail to verify with squad (3 other people have clients that send data that you did not get 5mil credits).

2) Will still send true info in game log exactly the same way you did before, just with a bit of delay.

Also, i do not propose to stop sending data, just to delay forced kick for time game tries to resend information that could not be sent at first try.

Right now if tcp connection closed game logs you out immediately(cutting internet access(dropping tcp packets) for the time you need to do cheats(10-30 sec) will not drop connection, it will still be alive).

I propose to re-establish connection and send the same data(always including packets that got delayed) if network problem occured. 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...