Actually, netcode has more to do with things like the different versions of your hero. There is your client version, the server version, and then the ‘you’ on each other player’s client.
So when you launch a Glimmershot for example. The netcode is what decides if your shot should show to you immediately or wait till you are actually in the location the server expects you to be, or if your shot should look like it came from where you were supposed to be on the server, even if it makes it look strange to you because you were slightly to the left, etc. And it also decides if it actually landed, even if it looks like you hit the enemy, you may not have on the server.
How each other player’s device sees you will be different from how the server sees you and different from how your client sees you. And Netcode is what handles all those interactions and situations, etc.
Usually you want ‘movement’ skills to show immediately on the client so that it ‘feels’ right when you use it. You use Merciless Persuit, you should instantly start dashing, etc. So those usually have priority on the client side and then make up for any differences later.
Things that can affect the enemy’s movement will have much different priorities, and usually happen on the server and then propagate to each client. So you might have stunned the enemy under your turret on your client, but the server had that happening just outside turret range, so you wonder why the turret didn’t focus them, etc., but on their client, they were never stunned under the turret to begin with so the discrepancy is only seen on those clients that didn’t have that player’s position fully updated at that moment in time.
And the hardest part is showing things properly when they conflict, like, you are about to be stunned so you Afterburn away and use Reflex Block just in case. Now depending on your timing, your actual server position, on the enemy timing and actual position, etc. there could be a number of ways that ends up ‘happening’ and some you will agree with and others you won’t.
Basically, you used movement, so your client wants to immediately send you flying, so it likely will, but lets say you actually were stunned before you got the Afterburn off. Now your client thinks you are over the wall, but the server knows you aren’t. So you end up over the wall, but stunned, and then when you next try to move, you stutter and feel like you are lagging or something is holding you back (it’s trying to correct your client/server positioning), then you see you’ve been greatly damaged, even though your block was up. But then you realize it was never showing “block” for the stun (that is netcode too, do I show you block or show you stun, that should usually depend on server and propagate, but depending on the code it could possibly show you block even if you were stunned). This has become a cluster of explanation but the gist of it is, netcode is not about connecting you to the server. What you see happen vs what actually happen can be off to you, but not off to others and not off to the server. If it is handled poorly, it can look really bad or be really bad. But usually Vainglory handles it rather well. Though there are lots of times when I don’t feel like that, haha.
A perfect example of netcode in action that you can easily see yourself even in practice mode is when you hit the teleport home button and you ‘slide’ into place while the teleport starts or you slide into place but the teleport particle effect stays where you ‘used’ to be, etc. All the different variations of how that happens is “netcode” at work.
Both the netcode and connectivity have issues for sure. The tl;dr of this post was simply: don’t confuse netcode with actual connectivity.