VG has the worst network code in the history of computing: discuss

Semc should be ashamed of their network code. It’s embarrassingly bad. Just two examples that I experience regularly:

  • Playing on mobile (data connection) short random disconnects are the norm. The game goes into conniption fits, it can’t handle the mobile network environment at all. One behavior I’ve never seen in another game: read-only networking. It will reconnect but in what I call “tourist mode” - you can see everything happening in the game, in real time, even walk around the map and watch people fight, but you are a ghost player, not even there.
  • In tourist mode the networking is physically 100%, VG is the culprit. The only recourse is to turn data on and off, which works sometimes. When it doesn’t, you must exit and restart the game.
  • Of course when you exit and restart you are very likely (50/50 chance) of hitting the nice new bug introduced last spring, where this logs you out of the game entiely, causing the reconnect process to take so long you almost always are marked afk.

Back when there was still a way of talking to the developers all this was reported, months ago. They are oblivious. It seems most likely that the developers themselves always play in a robust perfect wifi environment. Or to put it in other words: they literally don’t know they’ve made a mobile game.

5 Likes

VG is easily the app that is most finicky and unforgiving of less-than-perfect network performance that I’ve ever used. Ever.

8 Likes

I want to hand out a like, but the thread title is misleading: There’s no discussion required.

These connectivity issues have been a plague for weeks now. Solid weeks. There’s dozens of posts about it on here, concerning different servers.
If SEMC has not caught on by now, they can just as well close shop.

Edit: Just now - 2 minutes queue time for a BR match, but hero select screen doesn’t load. Of course you can not restart the App in time, so kek.

2 Likes

Even though it is blatantly obvious, we live in a democratic society that demands discussion.

We’ll see a fix after 51% of players complain or quit… SEMC are sitting there looking at the stats, thinking… HMMM… 49% means 51% of players are happy right? :face_with_raised_eyebrow:

7 Likes

I would take multiple updates in a row, fixing nothing but connectivity and matchmaking issues, with no new content or even balance changes, quite happily. I know that they have different departments doing things so that Department A never stops working as Department B releases new content. However, they need to prioritize. Put everyone who who has the knowledge to be put onto the connectivity issue, on it.

7 Likes

You don’t want to invite someone to perform surgery on a patient because they’ve seen ER. And you don’t want too many cooks in the kitchen, they’ll just start stepping on toes.

But I agree some time should be spent fixing issues.

4 Likes

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.

20 Likes

would it be fair to say, that net code can be simplified to travel faster over low latency networks? and recieved faster, processed faster and the results viewed faster ?

so a 0.3 second connectivity lag issue with good net code could see a 0.31 second difference due to good net code?

1 Like

Thanks for going into detail there, but from what we can observe, those two tend to be related. Part of the problem seems to be that the netcode cannot handle packet loss / latency of a certain magnitude, and switches the client to either send- or read-only mode.
There’s clearly a connection, because either your commands are being executed despite the client not updating (e.g. hero selection registers despite client being “stuck”), or you can see what happens, but your commands don’t go through (not to mention the terribad rubberbanding you described yourself).

Tl;dr: VG netcode sucks at handling exceptions (and/or in general), but this is a mobile game, and exceptions are the norm.

2 Likes

For sure netcode in general can be optimized on the network, but that would be an optimization to the network and connectivity rather than an optimization to netcode itself, though netcode itself can be optimized to be faster and provide better, more accurate results. But what you are proposing sounds like network optimization. Netcode simply decides how best to display what is happening to you and to others given that 0.3 second latency. It wouldn’t improve or change that number. Does that make sense @Ve3nNo0wM

Absolutely they are related @Wali! The worse connectivity is, the harder it is for netcode to show you things in a rational manner because it’s all messed up.

But yes, it could certainly handle delays better, and handle exceptions better! I’m not arguing with that at all! And OP’s original example is very likely a netcode issue, seeing everyone do their thing, but being a ghost in the world because the netcode got disconnected somewhere. So the netcode on you client is showing you what you are able to see, but you are a ghost because somehow the server has lost track of you or something.

The issues nearly always start as connectivity issues and then the netcode can’t handle it in a way we would like. But I’m sure there are some purely netcode issues that exist that could be fixed.

6 Likes

Lolol… and another 4 x 8 minutes LPQ due to this. Yeah. It may be time to just take a break.

It’s really bad for me right now I’m just not doing 5v5… There are constant frame drops, creating lag spikes and watching + FIGHTING in slow motion. (doesn’t work) Also abilities have about a one second delay, ruining the point of tap controls and skillshot abilities. It’s just horrible.
Edit: That was part my fault, tried better networks, works OK now.

But SEMC needs to have it load faster and no crashing. They need to make it so if your internet dies out you can connect to a new one and instead of having to reload it can just sync up.

Where I am arguing the netcode is deeply flawed (compared to other games) is in its inability to sync back up again after a momentary connection loss. That, and the crazy log-you-out bug as you try to force the app to get it’s brain sorted by restarting.

1 Like

stopping everything possible would hurt the game more than the current issues, as they are not experienced by all players.
no balance or game changes would hurt everyone.

better would be to make a few basics for events (maybe they have that already now), so you can keep players busy with them, use a few programmers for new heroes and balance changes and put the rest as needed on the network issues (if you dont know what to fix, you wont get far with all your manpower. let a few experts figure it out so the rest can always work as effective as possible)

3 Likes

It’s quite funny that the game disconnects you even for ms of connection problem(for example your wifi is not perfect and you decide to turn off the wifi and let the 4G do the work… ofc this will insta lead to 30 seconds of afk and reloading lol) and then you need to reload the whole game. The netcode is flawed big time.

4 Likes

I don’t care what the problem is or why it’s happening, I want it fixed.

That’s how I feel anyway.

1 Like

That is also a flaw in your phone if you have Android you can fix that in Dev options to allow data and wifi to be active at the same time and switch faster

Can an iphone do that? I’m too lazy to look…

How is the fact that the game can’t handle a brief disconnect, having something to do with the android OS? I know about that setting and that it will go around the problem, xda is the place I spend my most time from any forum and from 10+ years… but it drains the battery as you would guess. Thanks for the tip tho.

1 Like

You don’t want to, keeping the radio always active will drain quite a noticeable more battery. Not like if you use it, but it will be more and if you care about the best possible battery life, you would not want to enable such a thing.

1 Like