| 08-22-2007, 11:07 AM | #1 |
Well why ? it's very simple while they do it. ok i begin with the story about DeSyncing "cool" maps Grims OE my TcX... people have "random" unknown desyncs but on the other hand there a other people who DON'T expired any desyncs (disconnects) ! why ?! a lame coder made this maps ? well i would not bet... what is the reason of that disconnects !? well yesterday "my testers" ahve tested this map in "scientistic kind" (not stupid running and random actions) they just proved all in order and have made reports... well the feature is what if you have A GOOD (maybe very) internet connection you don't get disconnected ! they added 7 bots and played and no problems appears ! if that was code failue NOTHING would help they simple would get disconnected. after many test i have realized what i know (suspect) what players can be disconnected if they can support needed connection with the host (or host can't support all players) well the bot are extra traffic source they need at least like a player (traffic). "and why it's so ? i bet you have maked some shit =\" ha well... the most funny feature what it's a "trap" with out any away ! I last months i have made ALOT of sync etc. tests in war3. and have find out many interesting facts. 1) Gamecache values are not needed to be checked. they are local ! (no net traffic) 2) Local variables\arrays ARE not checked for it's content. (no net traffic) 3) Global variables\arrays ARE CHECKED for it's content at every "set" action ! (well not directly after it i thinks it' putted into some queue). so ANY action om ANY playing MACHINE MUST BE CHECKED WITH THE HOST ! if they are different kick... (blizz stupid cheat protection) !!! and btw booleans are NOT checked... (they can have local data and no desyncs are happening if use only localy) . well that the facts ^^ now to consequences well currenly we are massively use global arrays and variables (structures etc.) so other way of optimization in one hand and in the other one it's a way of more traffic needed to play such a map. (well in some cases this map is "unplayeble" in MP) why does it happens (i have wrote above) but well i want to see grims face if he will get sayed move your sys on gamecache (xD) =) well i am the same meaning... FUCK BLIZZARD ! "Just Another Stupid shit made by Blizz". what to do?! well nothing =\. BUT if there is a solutions it's only a 1 !!! to hack war3 (something like Grimoire does) and disable "need" to validate data from global arrays and variables. this would fully fix that issue and (i think) make war3 traffic usage minimal (in maps like OE and TcX). cause the most part are custom calculations in low periods. OR to use JAPI and "custom arrays" instead. what would be also possible BUT ! the map would depend fully on JAPI ! if only hack war3 it will be needed only for MP... so i dunno ='( // BTW ! THATS ALL ARE NOT MYTHS ! if you don't belive go fuck your taddy =\ |
| 08-22-2007, 11:22 AM | #2 |
Blizz > you. Anyway, sounds lame. Don't really see a big problem tho. People dont disconnect from ET anyway :) |
| 08-22-2007, 11:28 AM | #3 |
First of all cheat protection is everything but stupid. And it is not only cheat protection, when global variables desyncs for one player if that player is not kicked out of the game soon all players will desync because the player who first desynced would be sending bad data to the host. >> 1) Gamecache values are not needed to be checked. they are local ! (no net traffic) If this is true then what are SyncStoredInteger() functions for? My personal opinion is that you and Grim can't map for shit. (Witch can be obviously seen from your desyncing maps) And witch is even more obvious when someone looks at the systems you are using, like that grims' DataSystem Thats the facts, now you go fuck your taddy bear. |
| 08-22-2007, 11:39 AM | #4 |
cohadar, that is uncalled for. This could be an important issue, there's no need to pollute this thread in the same way you do with your resource submissions. Toadcop, I'll take the liberty to change the title into something more descriptive, I hope you don't mind. :) |
| 08-22-2007, 11:51 AM | #5 |
I resent that statement about my submissions. Second like I already said it is not possible to turn-OFF desync = kick mechanism because it would simply crash the game. All games with central server have this, it is not something blizzard invented for war3. As a matter of fact the only game on this planed that is not using central server syncing is Sauerbraten. The only "solution" would be for everybody to stop using structs !!! ---------------- A couple of questions: 1. How many maps are there that massively use structs and are not desyncing 1, 3, 5, zero? 2. Are you sure Toadcop that increased network traffic is what makes people disconnect? Traffic overload and desync disconnections are different. Desyncing will kick you instantly out of the game, while lagging out takes those boring countdowns while everybody waits to be able to press that drop button on you. |
| 08-22-2007, 11:55 AM | #6 | |
ok ^^ Quote:
jump... ~1 sec act well... nop to sync fire something... (shotgun espicialy) but well also need ~1-5 than it's no massive variable validating needed ! what why. btw you can simple prove it... write to global var a local data... you will be disconected (if your are not the host) and try to do the same with cache and local vars ^^ and there will be nothing... (and well war3 is not telepatic to know what values in globals are not the same ;)) + i told my tester have GOOD i-net and they can with out problems play my TcX but user with weaker i-net get kicked here replay (DampirTBs,df-Hunter are my tester) see ? they are not kicked cause they have good i-net the rest have a worser... it's the proof |
| 08-22-2007, 12:30 PM | #7 | ||
I watched the replay. I would still like to know if this people lagged before desyncing or they disconnected instantly. (this cannot be seen in replay) Also one of your testers is the host witch invalidates him as a proof. This does not mean that you are not right about globals syncing, but some spells simply need to be made with globals, all we can do here is be careful not to put things in globals if that is not really really needed. Quote:
And war3 IS telepatic because next time you try to do something in game using a global that is not the same(moving unit for example) you will desync because your unit will have different position than the one on host. Like I said all you can do to prevent this is to make sure you don't use globals for things unless you really need them. Structs are not the problem here, the biggest syncing overload in your game is happening because you are using GetLocationZ in a periodic timer (Not directly because of GetLocationZ but because you are probably storing unit coordinates in globals while you are doing a movement loop) So after all the hussle it comes down to this: Avoid using SET command on global variables in high-speed periodic loops No this is actually one mayor bullshit. EDIT: How to make movement spells without using set on globals:
|
| 08-22-2007, 12:58 PM | #8 |
-_- |
| 08-22-2007, 01:01 PM | #9 | |
I've seen a certain physics engine map that is pretty heavy on structs (global arrays) and is testable in multiplayer, I have not seen it desync during all the multiplayer tests we had, and my connection + distance from other testers would have ensured a desync. (edit ouch, didn't read: but then I don't really remember it desyncing? Could this be some OS-related desync? I've seen that happen... However if this is true, then shame on blizz, heh, I would not drop global arrays over anything... And also, have you actually verified it was not GetLocationZ making fun of you? Make sure you are not the victim of confirmation bias here. ------------- Edit: actually now that I read it, why in hell do you expect "writing local data to a global" not to desync? edit II: I notice Anitarf's title edit doesn't really describe what you tried to mean. Anyways, that kind of sucks, so a lot of globals + storing a local value there take a lot of syncing, aw blizz... ------------ Edit III: Quote:
I think we'll eventually have to force a native pack or something, of course blizzard won't like it but the engine got too much issues already, for example we could have some storage natives, they would be local already and no such thing as a 8190 limit uuuhh, we could even wrap the whole STL . The only problem would be that few people would use the addon unless we unite, but blizz may consider it a hack and screw us. Perhaps if blizz would listen to bug reports and fix this... |
| 08-22-2007, 01:22 PM | #10 | |
Quote:
|
| 08-22-2007, 01:28 PM | #11 | ||
Quote:
Hummmm, well I guess you have to make some writes to globals, otherwise it would not be possible to do anything, still one ticks integer is better than bunch other data, so it is still more efficient. Not to mention that you don't have to do Sin and Cos in a timer.... EDIT: Quote:
Wait what does number of globals have to do with this, it is only the speed in witch you use set command that matters. Is there something I am missing here? |
| 08-22-2007, 01:38 PM | #12 |
Duh? All the sane people have been using dx and dy over speed and angle for years, that's nothing revolutionary. As for using GetUnitX instead of a global, that may generate less net trafic but is more cpu intensive, so which solution is better depends on the ratio between a user's connection speed and processing speed as well as other processes that may use more processor resources (like wc3's graphics) or network resources (a torrent running in the background). In conclusion: there is no conclusion, unless you can do processor and network use benchmarks on a statisticaly relevant sample of users. Also, I suppose you could avoid the ticks integer by an external timer (or timer event) that terminates the movement once it finishes. |
| 08-22-2007, 01:47 PM | #13 |
Actually there is a big difference between using GetunitX/Y and using X, Y globals. Suppose your unit is jumping and some other unit hits it with a knockback in mid-air ? If you use GetUnitX/Y it will fly away at an angle that is a sum of jump and knockback vectors and it would look realistic, on the other hand if you use globals X/Y unit will start to berzerkly jump between 2 paths because jump and knockback will be setting unit to diverging X/Y coordinates. And since when is GetUnitX a time consuming operation? And avoiding ticks with timer? Overkill much? Besides it is even possible that ending event itself would have to be synced witch would make this even more pointless. |
| 08-22-2007, 02:00 PM | #14 |
cohadar this all will depend on your i-net connection... anyway simpli to validate globals is insane crap O_o cause ok some will hack with some prog and ? you can detect it (and i some maps) kick this player... or well the game will kick him but not var related... full crap. it's just waste of traffic. cohadar the taddy is waiting marry Blizzard and the fucked taddy... |
| 08-22-2007, 02:35 PM | #15 |
Toadcop, what in Christ's name is a taddy? |
