**SYNC ERROR DISCUSSION** + Poll

**SYNC ERROR DISCUSSION** + Poll

Discuss your problems with the latest release of the engine here. Problems with games, maps or other utilities belong in their respective forums.

Moderator: Moderators

What is causing these SYNC errors?

Slow Computer/Internet
11
31%
Spamming CONS/units/Planes?
1
3%
To much Network traffic? (pathing, Particles on screen)
3
9%
I have no idea, but it pisses me off.
12
34%
Bugged units?
3
9%
ALL OF THE ABOVE!
5
14%
 
Total votes: 35

User avatar
MR.D
Posts: 1527
Joined: 06 Aug 2005, 13:15

**SYNC ERROR DISCUSSION** + Poll

Post by MR.D »

I have found the true Champion of Spring, his name is SYNC ERROR.

He single handedly dominates on average 8/10 games ever played, and has claimed more units than the mightiest Krogoth.

Now down to the real question, HOW DOES THIS HAPPEN?

What is the culprit, how can we avoid it, or how can we fix it?

Most games over 4 players that last longer than 20 minutes seem to be overshadowed by a silent assasin that mysteriously appears whenever he chooses.

There has to be a good explaination as to what DE-SYNCs a game.

In my opinion, there are 4 top contenders for the secret of the SYNC ERROR.

#1. Players with slow computers or internet that throw off the prediction system in game.

#2. Over use of Construction units or any mass quantity of units causing the pathing routines to be flooded, limited by bandwidth or something and then causes the destabilisation in the network.

#3. Too much information being transfered that doesn't need to be sent out to all clients(windmills turning and simple animated units like buildings being synched to all players).

#4. Random anomoly present in some units that just throw it off by mere happenstance.

What do you guys think, and I don't mean some silly answer, I mean your educated guess.

And be honest.
User avatar
jcnossen
Former Engine Dev
Posts: 2440
Joined: 05 Jun 2005, 19:13

Post by jcnossen »

1. In theory not possible, but maybe there are bugs in the network code.

2,3,4. Game simulation complexity can never cause desync, because game data (including windmill state) isn't actually send over the network. The only thing that is send are the user commands and global/group AI commands.

The most likely cause I think is bugs in the spring simulation. Bugs in the simulation don't neccessarily have to crash the game, but can cause changes and corruption in (synced) game data such as unit positions/resources/speed/other properties. When that happens there is no sync anymore.
A very massive battle might cause the bug(s) to happen earlier.
User avatar
Min3mat
Posts: 3455
Joined: 17 Nov 2004, 20:19

Post by Min3mat »

multiplayer games
aviod anything bigger than a 4v4. because within 30 mins you will have a 'gtg' or a crash or a desync
aviod certain maps, the old shore to shore being a example. different vsns of maps -> errors
faster computers really help. don't ask me why, also aviod WLan because sometimes (not always, probably not even often) this causes crashes/desuncs/lag/errors
Generuler
Posts: 38
Joined: 09 Feb 2006, 16:39

Post by Generuler »

sinc errors are caused because the K.I. is calculated by the client.
Sometimes there are errors while rounding numbers, and units that die on one computer survive on another.
A function to "resync" with the host would be great - even if sync errors arent far as common as said above :roll:
jouninkomiko
Posts: 436
Joined: 26 Aug 2004, 08:11

Post by jouninkomiko »

spring was not built with the ability to "resync", and even if that feature was put in, the sheer amount of data needed to be sent over the network to do the resyncing would be ridiculous. fixing this problem would require a rewrite of the core of spring imho, but lately that seems to be my solution to everything (currently rewriting the core of the application im working with atm at work cause i told my boss it was needed :) )
User avatar
LOrDo
Posts: 1154
Joined: 27 Feb 2006, 00:21

Post by LOrDo »

All of the above. Somtimes it will start syncing when someone gets like 100 con planes, other times it will start because some noobs pr0n downloading, or when a commander or 2 blows up, or just randomly.
User avatar
Dr.InfernO
Posts: 223
Joined: 18 Nov 2005, 13:55

Post by Dr.InfernO »

With the nForce Ethernet drivers, you have an interesting option, if you have a CPU slower than 2.0Ghz (or 2000+) you should try to set it to "Optimize for" - Throughput.


A fast CPU is really needed for big and/or metal map games. If you have 2.0Ghz or slower you will slow down such a big-war-traffic game.
If you got a fast 100Mbit host but a 1.2Ghz client it will slow down the whole match.
So the match is not faster than the slowest client.

if some has only 256MB RAM or less it will also slow down on bigger maps because of the swap file.

I also regonized some players are confused with the whole issue. They mistake their own low Frames per second with network lags.


So for your understanding:
low FPS is NOT lag, it's your connection, or a 100% used CPU which is also slowing down the network connection.
User avatar
Maelstrom
Posts: 1950
Joined: 23 Jul 2005, 14:52

Post by Maelstrom »

Dr.InfernO wrote:So for your understanding:
low FPS is NOT lag, it's your connection, or a 100% used CPU which is also slowing down the network connection.
Small correction here:

Slow gameplay (ie, slower than normal game), someone, but not you, has a slow CPU
Low FPS, your CPU card cannot keep up.

Because of the way Spring is built, even if you are not receving alot of game updates, your FPS is still free to go as fast as it can. Its only when there are lots of caluculations/lots of smoke/units/ect that you start dropping in FPS. If you start dropping in FPS due to Gfx issues, you still wont lag the game. Only when the computer cant calculate everything in time will you lag the game. But, if you take ages to render the scene, this can impact on the time the CPU has to do its calculations (i think), so Gfx issues might upset and lag the game. Its all a bit confusing.
User avatar
MR.D
Posts: 1527
Joined: 06 Aug 2005, 13:15

Post by MR.D »

One of the more noticable lag creators in FPS is alot of those Yellow dot particles when something is being built, in AA its when you use NANOtower blocks, or Farks or any Construction assist unit.

Is there a way for the Spring team to reduce the ammount of visible Sprite-particle objects somehow?

When you have 30 con units all spraying nano particles, thats a buttload of particles being drawn and alot of objects to be kept track of.

That might be a good place to start.
User avatar
Maelstrom
Posts: 1950
Joined: 23 Jul 2005, 14:52

Post by Maelstrom »

Go into the Settings.exe, and reduce the 'Max Particles' slider. That should do it.
User avatar
SinbadEV
Posts: 6475
Joined: 02 May 2005, 03:56

Post by SinbadEV »

The cause of sync errors is that no code is perfect and spring trusts itself to much... if the server held authority and could update the current simulation every 100 frames of netcode or something to resync everything...
Tobi
Spring Developer
Posts: 4598
Joined: 01 Jun 2005, 11:36

Post by Tobi »

takes too much bandwidth
User avatar
SinbadEV
Posts: 6475
Joined: 02 May 2005, 03:56

Post by SinbadEV »

sync goes out after 30 minutes... why not resync every 10 minutes or so then...
Tobi
Spring Developer
Posts: 4598
Joined: 01 Jun 2005, 11:36

Post by Tobi »

Because you won't know what is out of sync.

Assume a resync means 2 network turnarounds and sending over between 20KB and 2MB of data, that means it takes at least around 3 seconds on a 100KB/s up+down connection (slowest client counts). Conclusion: you can't do it realtime.

Doing it like pause,resync,unpause is already on the todo list, and will sometime be implemented.
mongus
Posts: 1463
Joined: 15 Apr 2005, 18:52

Post by mongus »

I think mrd was talking about the other "minor" synch thing, the one related to lag. im mistaken?
User avatar
OverDamage
Posts: 46
Joined: 06 Mar 2006, 09:47

Post by OverDamage »

A resyncing routine is entirely possible in spring.

IMO the best way would be for the engine to see who desyncs and eliminate the error by compairing it to the other players in that game.

A 1 player resync could probably take place very fast and during that time the game could auto pause.

If 1/2 the players in the game or more desynced then I would think spring could refresh everyone based on the host's game. Some code would have to be added to check for sudden unit creation or metal/energy income (see hax) in this case but it's far from impossable.

I would say the the few min wait for a large game to resync would be EASILY worth the wait verses losing hours of play to a damn rounding error.
Tobi
Spring Developer
Posts: 4598
Joined: 01 Jun 2005, 11:36

Post by Tobi »

Note that 1 and 2 are theoretically impossible. Also, rounding errors are theoretically impossible unless your CPU is f*cked or your haxxoring spring and put some instructions to change FPU rounding mode in it. Most probably any sync errors occuring now are either bugs in the networking code causing lost packets not to be detected and resend or uninitialized memory reads of synced code.

And yes, a resync system definitely would be an advantage. It is already added to the todo list actually so there's no need to discuss about it.
tutles
Posts: 2
Joined: 11 Jun 2006, 22:05

Post by tutles »

So I have been having sync errors consistently on different maps, mods, even after re-installing TA Spring. They happen right at the beginning every time. My computer should be more than powerful enough with 3.4Ghz dual core, SLI graphcs, 1 gig RAM. Running off a DSL connection thats going through a wireless LAN to this computer. Any suggestions, or should I just wait for a new version to come out and hope it fixes itself?

Also, all firewalls are off.
User avatar
Caydr
Omnidouche
Posts: 7179
Joined: 16 Oct 2004, 19:40

Post by Caydr »

Where is this todo list you speak of, Tobi?
User avatar
knorke
Posts: 7971
Joined: 22 Feb 2006, 01:02

Post by knorke »

Wouldnt it be possible, that all players recieve the "correct" game-state from the host, if the game gets out of sync?
The host would just have to send all unit postions and stuff, maybe also the heightmap.
Of course there might be problems (like units disappearing for some players) if you wait too long with the "re-sync."

Another similiar subject:
What would be usefull, if the game could notice when replays get out of sync.
I downloaded a (XTA) replay and after some time all units just stood around, constructed units exiting the factory just stood there.
The replay was probally from an older spring-version (dont remember, sorry) but this just should not happen.
There should be a check or something every few frames and a warning like "replay out of sync (outdated version?)"

I think replays also get out of sync when you fastforward too fast...
Post Reply

Return to “Help & Bugs”