Thursday 23 July 2015

Insider Talks: Ghost Shells explained

Hello warriors,

the Insider returns to give us some insight into the ghost shell issue. This info is gleaned from a discussion between two developers. As usual, take it with a grain of salt as an interpretation of what the developers said.

The Insider:

Short description

The problem is not the servers nor the clients, it's actually a BigWorld engine fault process that begins when the server fails to calculate a penetration value. In layman terms, here's the process (missing a few filler elements such as shell travel time, tank velocity, gun arc, type of shells, etc etc etc. for the sake of simplicity):

- client is driving
- server receives the "drive command" replies back "you are now driving" and sometime later it determines there is an enemy  tank in sight that the client can see, so it sends the data back saying "you have a tank in sight"
- client now sees enemy tank
- server acknowledges the tank is there and all the aiming mechanics occur
- client shoots at tank
- server acknowledges the client has shot and triggers the reload timer for the client while also processing the penetration value of the shell, angle, RNG (+/-25%), area to damage and determines, if theres a penetration/ricochet or damage to any internal modules (shoot commander's hatch, driver dies! *trollface*) or (shoot driver's compartment, suddenly tank gets tracks damage *trollface v2*) (Insider: actually this is explained by ricochets inside the tank, but ill leave it at that).
- Bigworld engine which is running along the streamline of the server fails to process the client request and delivers a "null"
- Server: hey, but I just sent the data!
- Bigworld: yes and I say it's null, now obey!
- Server: ??? okay ._.

Server sends the ping back with null value: "lel, tank wasn't there". Client displays a ghost shell event in return.




What causes this failure?

There are some key events related to it regardless of ping, it can be several factors such as microlags, this is a very minimal packet loss (I'm talking bits, not even bytes in size) that the server can interpret as "noise" (partially unrecoverable packets). This is influenced by a lot of stuff, depending on client connection quality, distance and even interferences, server micro overloads, etc.

Can it be corrected? Yes, absolutely, but this isn't about server quality or connection (I'll explain more down below), its about the game's Bigworld engine that would require a patch. Technically the server always is set to respond on every shell fired, the bug is indeed, rare because Bigworld simply forgot to receive the data from the server because of the "noise".

It's not a fatal error and i can safely say that about 90% of the cases reported as ghost shells are actually not the bug described above and are related to lag or small de-synchs from the client-server (again, caused by factors such as servers being used between the connection from the client to the server as an example: telia.net and its faulty level2 server that some time ago was the bane of many issues on the NA community).

I'm sorry I'm not a super tech wiz and I tried to explain in the most simpler manner as possible, I'm sure an IT expert would be able to explain much better this term about microlags and discrepancies. But yes, the bug is real and detected, but the patching process is the "complicated one" because the server "doesn't acknoledge" it's missing anything.

So, how common is this bug?

It's extremely hard to give an accurate number -but in a rough estimate, it can happen to any client, regardless of geolocation or hardware configuration at least once a day and very rarely it occurs more than once in a single match (very important: No, I'm not saying it happens every match, I'm saying that when it happens in the match, it's most likely it won't repeat itself during THAT match).

So whats the issue then? The ghost shells needs to be fixed in 2 areas and are considered separate issues:

1 - is the bug caused by the de-synchs between client-server (microlags) (VERY hard to fix, because a ton of factors are involved, usually caused by  connection issues between the computers between the connection of servers-client).

2  - bugs of Bigworld becoming a pony - can be patched by psychotherapy or an update of the engine with a hotfix in the future.

WoT Cbox isnt reporting that issue btw.

I hope this helps and stops making it a mystery. As a little ways off to explain, and with a bit of fun:

Other games had this kind of issue  (desynchs causing bugs) in the past where this was more than an issue, it was actually exploited. I am referring to World of Warcraft. Back in WOTLK/CATA there was this kind of issue, fortunately the engine of WoW has been more than 12 years in the making and pretty much it has been over researched. Back then you could see gold seller advertising made of dead bodies by exploiting the game engine by making the characters "jump-exploit lag" until they reached a height where they would die from the fall and, eventually, forming a word. This is no longer the case for WoW.


No comments:

Post a Comment