Anonymous | Login | Signup for a new account | 2025-06-16 22:19 UTC | ![]() |
My View | View Issues | Change Log | Roadmap | Zandronum Issue Support Ranking | Rules | My Account |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||||||
0000713 | Zandronum | [All Projects] Bug | public | 2012-03-25 17:33 | 2012-05-01 01:49 | ||||||||
Reporter | TIHan | ||||||||||||
Assigned To | TIHan | ||||||||||||
Priority | urgent | Severity | minor | Reproducibility | sometimes | ||||||||
Status | feedback | Resolution | open | ||||||||||
Platform | OS | OS Version | |||||||||||
Product Version | 98d | ||||||||||||
Target Version | Fixed in Version | ||||||||||||
Summary | 0000713: Lost Souls desync online | ||||||||||||
Description | More info here:'http://www.skulltag.com/forum/viewtopic.php?f=33&t=26770 [^]' " Lost Souls will desync a lot when infighting, and probably when fighting in general. But it's reproducible by watching them infight. It seems that their positions aren't displayed correctly, so when they attack, their attack starts at a position behind their actual one. Sometimes both of the Lost Souls will "lock-up" together for a few seconds and then suddenly teleport to their true positions. Also in the demo, you'll see that when one of the Lost Souls "charge backwards", the other Lost Soul won't attack the position of the sprite, but a position behind it instead. This means that there's a desync between what you see client-side and what's going on server-side, I think. It's a bit difficult to explain. " | ||||||||||||
Attached Files | ![]() ![]() ![]() ![]() | ||||||||||||
![]() |
|
unknownna (updater) 2012-03-27 21:35 |
> If you run into a Lost Soul that is charging backwards, it'll lock up at that position until it's true position hits a wall (or another actor). That's why a Lost Soul was attacking a spot behind the sprite of another Lost Soul, because it knew the true location of the other Lost Soul. > Cacodemons' z-axis movement tend to desynchronize badly when you shoot them with a rocket from below and make them thrust up and towards a wall. There's a great desynchronization between the client and the server in terms of thrusting the Cacodemons when they're shot. |
TIHan (reporter) 2012-04-15 04:45 |
If someone can provide a WAD that can, for the most part, easily reproduce the issues stated, we can probably work out this bug. |
TIHan (reporter) 2012-04-24 03:09 |
Can someone try this? 'http://www.mediafire.com/download.php?65p1njbkb6py3yx [^]' I've attempted to address the issues stated above. Please tell me if they are gone. Also in the build, I've included the monster bandwidth reduction patch. |
unknownna (updater) 2012-04-24 08:06 |
Nice, it seems that you considerably improved the LS behavior. I recorded a demo of the Cacodemon issue with your test build since it's not fixed yet. |
TIHan (reporter) 2012-04-24 13:17 edited on: 2012-04-24 13:29 |
> I recorded a demo of the Cacodemon issue with your test build since it's not fixed yet. Then it must not be in P_ZMovement. I'll have to look at this later. Probably late tonight or tomorrow. FYI, to fix the lost soul issue I applied a custom THRUACTORs flag for monsters. Looks like the client doesn't handle stuff properly when actor monsters hit other actors. |
unknownna (updater) 2012-04-24 13:50 |
> FYI, to fix the lost soul issue I applied a custom THRUACTORs flag for monsters I noticed a side effect: Monsters that are moving on bridge things will glitch around. It looks like their positions are updated only when they change their direction or attack. |
TIHan (reporter) 2012-04-24 14:57 |
> It looks like their positions are updated only when they change their direction or attack. This is the new system Carn wrote of how monsters are handled, they are only updated under those conditions, everything else is client-side. The problem we have, is that monsters do not update when they hit things - which we are seeing is a problem in certain cases. If I allow updates when monsters hit actors/walls/ceilings - bandwidth would skyrocket 150%. Since I believe bridge things are also actors, the custom THRUACTORs flag applies to those bridges. When I get a chance, I'll modify the flag and make something like THRUMONSTERS. But, even with this I fear problems, because what if monsters are piled up on top of each other? The client-side will just make them go through each other. Perhaps we need an entirely new approach to the problem. |
Torr Samaho (administrator) 2012-04-25 01:52 |
Since actor-actor hits are important for monster movement I don't see why turning off client side actor-actor hits while still not letting the server inform the client about the hit should improve the situation (unless there was no actor-actor hit on the server and the client mispredicted this). Perhaps there is more to the issue. |
TIHan (reporter) 2012-04-25 02:22 |
> I don't see why turning off client side actor-actor hits while still not letting the server inform the client about the hit should improve the situation (unless there was no actor-actor hit on the server and the client mispredicted this). Perhaps there is more to the issue. My first thought was that the server would take care of some of it, so it gave me the idea that the client won't do any hit detection. Looks like I didn't think properly. So, let's stay away from THRU* stuff. I think it's fine for the client-side to predict the hit-detection and obviously, that is not being handled properly. |
TIHan (reporter) 2012-04-26 02:06 edited on: 2012-04-26 04:05 |
Here is a screenshot of where I see desync issues between client and server hit dection regarding the lost soul. 'http://imgur.com/9WJ3t [^]' Edit: I believe I have pinpointed exactly what is causing the lost soul desync. Stay tuned. |
TIHan (reporter) 2012-04-26 05:47 edited on: 2012-04-26 06:07 |
THIS should solve at least the lost soul issue. I haven't tried the cacodemon one, but someone please test that. I have a theory of these desyncs, as I can somewhat reproduce them on ground monsters now by comparing large crowds of monsters online vs offline. It's very subtle - since nothing is ever perfectly timed between client and server, even if its close, there is chance an actor will force itself through another actor on the client-side even though it's impossible as the game mechanics forbid it. It can be caused by lack of precision and/or timing. In our case, our lost soul had a desync with its position when it got shot. The player could run into the lost soul and it would stop. What happened here was that the player actually went into the lost soul, breaking game mechanic rules and causing bad results. Setting the lost soul's precise 32-bit position when it got shot, fixed the desync issues. Oh but wait, there's more! Due to latency and non-absolute perfect timing, there is a chance I could still move through our lost soul even at perfect precision, causing our charging backwards desync issue. To fix this, I have to find a way to manage what happens when actors go through actors without breaking game mechanics, but with the lost soul this was pretty easy. |
unknownna (updater) 2012-04-26 07:30 |
> THIS should solve at least the lost soul issue. It seems to have fixed the charging backwards issue, but the lost souls will still "lock-up" and desync when attacking one another. Quote from unknownna It looks like the lost souls sometimes aren't thrusted backwards by the damage they receive from another charging lost soul, so they suddenly start to attack from a position far away from their position on the client-end. > I haven't tried the cacodemon one, but someone please test that. The cacodemon issue is still there. |
Torr Samaho (administrator) 2012-04-26 11:32 edited on: 2012-04-26 11:34 |
> there is chance an actor will force itself through another actor on the client-side even though it's impossible as the game mechanics forbid it. It can be caused by lack of precision and/or timing. To me this does doesn't sound as if it is caused by lack of precision or timing. The only exception I can think of right now is if the server instructs the client to move an actor into another actor with SERVERCOMMANDS_MoveThing. Did you check whether the client properly checks the position it is told in SERVERCOMMANDS_MoveThing? |
TIHan (reporter) 2012-04-26 13:33 edited on: 2012-04-26 13:39 |
> To me this does doesn't sound as if it is caused by lack of precision or timing. The lost soul charging backwards was most certainly a precision issue. However, I didn't test very rigorously to see if it was. > Did you check whether the client properly checks the position it is told in SERVERCOMMANDS_MoveThing? No I have not. I'll look at that later tonight. |
TIHan (reporter) 2012-04-27 05:23 |
Try this to see what affect this has on collision detection. I started a branch.'https://bitbucket.org/TIHan/tst/changeset/cd0cfc4318af [^]' |
unknownna (updater) 2012-04-27 08:17 |
> Try this to see what affect this has on collision detection. The charging backwards lost soul issue and the monster on bridge thing issue is gone, but I still noticed the other lost soul and cacodemon issues. Did you check out the demo yet? It's very easy to reproduce the cacodemon issue. |
Torr Samaho (administrator) 2012-04-27 11:27 |
>> To me this does doesn't sound as if it is caused by lack of precision or timing. > The lost soul charging backwards was most certainly a precision issue. As I said above: "To me this does doesn't sound as if it is caused by lack of precision or timing. The only exception I can think of right now is if the server instructs the client to move an actor into another actor with SERVERCOMMANDS_MoveThing." The second sentence of my statement is very important and from what we discussed yesterday it seems as this my conjecture has to do with what's causing the problems. |
TIHan (reporter) 2012-04-27 22:17 |
> but I still noticed the other lost soul and cacodemon issues. I have a feeling these may not be related to the actors moving into other actors problem. A lot of this is very new to me, as I'm having to understand at least a big chunk of the physics and collision handling behind ZDoom. |
TIHan (reporter) 2012-04-28 17:26 |
This should fix the cacodemon desyncs. Changeset The other lost soul issues are still there though. Trying to figure out what is happening. |
TIHan (reporter) 2012-04-28 19:59 edited on: 2012-04-28 20:00 |
I think I've got it! Please test this to see what desyncs you can reproduce. My testing confirms that it fixes the lost soul desyncs when they fight each other. I think there was maybe 1 out of the 20 lost souls that were fighting that got desynced but it was very difficult to tell when lost souls flying all over the place, in any case this definitely helps! 'https://bitbucket.org/TIHan/tst/changeset/ec321880dc7a [^]' |
unknownna (updater) 2012-04-30 12:08 |
> This should fix the cacodemon desyncs. It seems that it took care of the cacodemon issues. > Please test this to see what desyncs you can reproduce. It seems to have improved the behavior, but I still noticed the same desyncs every now and then. The lost souls seem to desync near ledges and above things before/after attacking and hitting each other. I recorded a demo of it with your test build. Ignore the first 2 lost souls since they didn't bug up. |
unknownna (updater) 2012-04-30 16:37 |
I noticed some side effects with your cacodemon fix: * The client-side prediction of the player movement gets screwed up when you bump into monsters while having a high ping (300). It's most noticeable when you hold +forward while killing a monster, e.g., when you kill a zombieman with the SSG. It looks like your view is shifted to the opposite end of the sector before bouncing back again. * The cyberdemon in MAP20 teleports, but is displayed on the wrong teleport destination on the client-end. I created an example WAD. It's MAP01 in the example WAD. |
TIHan (reporter) 2012-04-30 20:10 edited on: 2012-04-30 20:34 |
> The client-side prediction of the player movement gets screwed up when you bump into monsters while having a high ping (300). It's most noticeable when you hold +forward while killing a monster, e.g., when you kill a zombieman with the SSG. It looks like your view is shifted to the opposite end of the sector before bouncing back again. I do not think the cacodemon fix has anything to do with this issue, and this issue seems like normal behavior. There is not a proper way to fix this as you cannot predict monster movement. > The cyberdemon in MAP20 teleports, but is displayed on the wrong teleport destination on the client-end. I created an example WAD. It's MAP01 in the example WAD. Are you sure is it just the cacodemon fix that causes this? You cannot reproduce it before the cacodemon fix? All the cacodemon fix does is inform clients of the momentum z, which the value of it is 0. At the moment I can't see a reason why it would cause this. I'll look at it more tonight. Please be specific which fix you are testing against. If you are using the latest one that helped the lost souls fighting each other, I can see that causing some interesting issues such as this. I would also check the very latest build in Torr's repository as it includes just the cacodemon fix. The builds I have posted here have some extra stuff that may be causing more problems for you. At least by tomorrow I'll have a new build for you that doesn't have a lot of junk code that is causing this cyberdemon issue. Edit: I believe I know, just now thinking about it, this cyberdemon issue is caused by the check position/p_movething in my builds. Essentially, if the client sees the new moveposition on an actor is not allowed to move to a new location, it just revert back its previous better know location, so that explains the cyberdemon being where its at on the client, but not on the server. Torr suggested we have a method that tries to put the actor in the closest possible spot; looks like we are going to have to do that. |
unknownna (updater) 2012-04-30 20:34 edited on: 2012-04-30 20:37 |
> Are you sure is it just the cacodemon fix that causes this? You cannot reproduce it before the cacodemon fix? My mistake, it seems that both issues were introduced in 120427-0517. BTW: Your test builds give me an error in the server console after changemap map changes: "SERVERCONSOLE_SetupColumns: Couldn't get column!". |
Torr Samaho (administrator) 2012-05-01 01:49 edited on: 2012-05-01 02:04 |
> Essentially, if the client sees the new moveposition on an actor is not allowed to move to a new location, it just revert back its previous better know location, so that explains the cyberdemon being where its at on the client, but not on the server. Yeah, this is exactly why I insisted that the client may not simply reject the move. EDIT: Here is a binary of the latest repository revision (containing TIHan's Caco fix). |
Only registered users can voice their support. Click here to register, or here to log in. | |
Supporters: | WaTaKiD |
Opponents: | No one explicitly opposes this issue yet. |
![]() |
|||
Date Modified | Username | Field | Change |
2012-03-25 17:33 | TIHan | New Issue | |
2012-03-27 21:35 | unknownna | Note Added: 0002932 | |
2012-03-27 21:35 | unknownna | Status | new => confirmed |
2012-04-15 04:45 | TIHan | Note Added: 0003273 | |
2012-04-24 01:37 | TIHan | Assigned To | => TIHan |
2012-04-24 01:37 | TIHan | Status | confirmed => assigned |
2012-04-24 03:09 | TIHan | Note Added: 0003413 | |
2012-04-24 03:09 | TIHan | Status | assigned => feedback |
2012-04-24 08:06 | unknownna | Note Added: 0003415 | |
2012-04-24 08:06 | unknownna | File Added: 2012.04.24_10.03.34_doom2.cld | |
2012-04-24 13:17 | TIHan | Note Added: 0003417 | |
2012-04-24 13:17 | TIHan | Status | feedback => assigned |
2012-04-24 13:29 | TIHan | Note Edited: 0003417 | View Revisions |
2012-04-24 13:50 | unknownna | Note Added: 0003418 | |
2012-04-24 14:57 | TIHan | Note Added: 0003419 | |
2012-04-25 01:52 | Torr Samaho | Note Added: 0003421 | |
2012-04-25 02:22 | TIHan | Note Added: 0003423 | |
2012-04-26 02:06 | TIHan | Note Added: 0003436 | |
2012-04-26 03:31 | TIHan | Note Edited: 0003436 | View Revisions |
2012-04-26 03:37 | TIHan | Note Edited: 0003436 | View Revisions |
2012-04-26 04:05 | TIHan | Note Edited: 0003436 | View Revisions |
2012-04-26 05:47 | TIHan | Note Added: 0003438 | |
2012-04-26 06:07 | TIHan | Note Edited: 0003438 | View Revisions |
2012-04-26 06:18 | TIHan | Status | assigned => feedback |
2012-04-26 07:30 | unknownna | Note Added: 0003439 | |
2012-04-26 11:32 | Torr Samaho | Note Added: 0003440 | |
2012-04-26 11:34 | Torr Samaho | Note Edited: 0003440 | View Revisions |
2012-04-26 13:33 | TIHan | Note Added: 0003444 | |
2012-04-26 13:33 | TIHan | Status | feedback => assigned |
2012-04-26 13:39 | TIHan | Note Edited: 0003444 | View Revisions |
2012-04-27 05:23 | TIHan | Note Added: 0003460 | |
2012-04-27 05:23 | TIHan | Status | assigned => feedback |
2012-04-27 08:17 | unknownna | Note Added: 0003465 | |
2012-04-27 11:27 | Torr Samaho | Note Added: 0003466 | |
2012-04-27 22:17 | TIHan | Note Added: 0003474 | |
2012-04-27 22:17 | TIHan | Status | feedback => assigned |
2012-04-28 17:26 | TIHan | Note Added: 0003481 | |
2012-04-28 17:26 | TIHan | Status | assigned => feedback |
2012-04-28 19:59 | TIHan | Note Added: 0003482 | |
2012-04-28 19:59 | TIHan | Status | feedback => assigned |
2012-04-28 19:59 | TIHan | Status | assigned => feedback |
2012-04-28 19:59 | TIHan | Priority | normal => urgent |
2012-04-28 20:00 | TIHan | Note Edited: 0003482 | View Revisions |
2012-04-30 12:07 | unknownna | File Added: 2012.04.30_13.39.31_doom2.cld | |
2012-04-30 12:08 | unknownna | Note Added: 0003510 | |
2012-04-30 16:37 | unknownna | Note Added: 0003511 | |
2012-04-30 16:37 | unknownna | File Added: monster_teleport_01.wad | |
2012-04-30 16:39 | unknownna | File Added: Screenshot_Doom_20120430_175327.png | |
2012-04-30 20:10 | TIHan | Note Added: 0003513 | |
2012-04-30 20:10 | TIHan | Status | feedback => assigned |
2012-04-30 20:10 | TIHan | Status | assigned => feedback |
2012-04-30 20:18 | TIHan | Note Edited: 0003513 | View Revisions |
2012-04-30 20:19 | TIHan | Note Edited: 0003513 | View Revisions |
2012-04-30 20:25 | TIHan | Note Edited: 0003513 | View Revisions |
2012-04-30 20:28 | TIHan | Note Edited: 0003513 | View Revisions |
2012-04-30 20:34 | unknownna | Note Added: 0003514 | |
2012-04-30 20:34 | TIHan | Note Edited: 0003513 | View Revisions |
2012-04-30 20:37 | unknownna | Note Edited: 0003514 | View Revisions |
2012-05-01 01:49 | Torr Samaho | Note Added: 0003517 | |
2012-05-01 02:04 | Torr Samaho | Note Edited: 0003517 | View Revisions |
2012-06-09 13:22 | Torr Samaho | Category | General => Bug |
Copyright © 2000 - 2025 MantisBT Team |