[testserver] y_bows: arrows get stuck in the air #5972
Labels
No Label
1. kind/balancing
1. kind/breaking
1. kind/bug
1. kind/construction
1. kind/documentation
1. kind/enhancement
1. kind/griefing
1. kind/invalid
1. kind/meme
1. kind/node limit
1. kind/other
1. kind/protocol
2. prio/controversial
2. prio/critical
2. prio/elevated
2. prio/good first issue
2. prio/interesting
2. prio/low
3. source/art
3. source/client
3. source/engine
3. source/ingame
3. source/integration
3. source/lag
3. source/license
3. source/mod upstream
3. source/unknown
3. source/website
4. step/approved
4. step/at work
4. step/blocked
4. step/discussion
4. step/help wanted
4. step/needs confirmation
4. step/partially fixed
4. step/question
4. step/ready to deploy
4. step/ready to QA test
4. step/want approval
5. result/cannot reproduce
5. result/duplicate
5. result/fixed
5. result/maybe
5. result/wontfix
ugh/petz
ugh/QA main
ugh/QA NOK
ugh/QA OK
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: your-land/bugtracker#5972
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Sometimes a single shot arrow gets stuck in the air soon after shooting.
I don't hear a ding like when I hit myself.
It happens when I don't rapid-fire, so does seem like arrows collide with other arrows.
Kinda looks like it gets stuck after a single timestep or maybe even on the first one?
Could this be related to "critical shot" mechanic?
unfortunately there's no way to make arrows collide with objects and not have them collide with other arrows. what's supposed to happen in that case, is that both arrows drop as items. i'll have to see what's up with them "getting stuck"
Sorry, I meant "does not seem like they collide with each other" - it sometimes happens when I shoot a single arrow.
That first one that you saw was literally the first one I shot after joining the server.
All the rest were my attempts to shoot arrow in the same direction (maybe there was a service acc there or something else invisible I thought? - but no, I was alone on the test and block is just air).
I can't actually make them hit each other by rapid firing. Random stuck arrows happen randomly on single shots. And it's not too rare even (had it happen 2 more times at least)
i can't replicate this locally. the test server seems to be up-to-date, and i can replicate it there though...
ok, this is very weird - according to the server, the arrow doesn't exist! it seems to be a client-side artifact?!
or possibly they exist, but the server seems to think their position is something very different from where they are?! and these "broken" arrows don't seem to get unloaded. and the inspection tool doesn't register them when you punch them, and you can't pick them up by punching them... and they don't unload when there's no-one at the area?
the test server is also doing very weird things with the y_bows HUD too, it's showing up sometimes when i'm not even wielding a bow. and other things sometimes feel laggy, even though the server reports there's no issue. maybe a network issue somehow?
yeah, definitely some sort of client/server network SNAFU - the arrows appear in the correct spot after i log off and log back in...
I think Sokomine mentioned seeing "many floating arrows", while I saw only one. Sokomine also has trouble with "getting connection overloaded" with too many Voice mobs. This may be a clue.
I think I was able to pick up floating arrow into my inventory. But this is still consistent with client/server position desync.
Also, I saw same stuck arrow on 2 clients, does that mean that server just didn't send any velocity updates for that arrow?
Could it be that arrow "hits" something on the server before clients get the arrow's speed and it just spawned as static?
Maybe it's two similar but different problems (arrows stuck because server didn't send any updates, and arrows stuck because client lost some packets?)
This is only semi-related:
I had massive desync problems when I was trying to move a mob using only
set_velocity
andset_acceleration
- server considered them static, but didn't send the velocity/acceleration update packet to client because the delta was too small. This caused client to continue slowly moving my mob away in one direction. Position was reset on join...perhaps not a networking thing.
note how all the dtimes are normal, but only one is being executed every second.... but this might easily lead to queues being overfilled and thus packets being "dropped" before they're created.disregard the above, dtime reports were being consumed by my chat de-dupe CSM
but something weird is definitely affecting all entities. right-click on Amanda or a default:chest, sometimes it'll take several seconds for the UI to show
i'm noticing that this happens in the haven plaza, but not at other locations.
finally able to replicate this locally, though it's not as easy to do as on the test server:
it does seem to be highly correlated with the number of other nearby entities (in this case, signs).
unfortunately i still can't replicate it reliably even if i add way more entities...
Now I wonder if it could be related to this: # 5994 (Haven/spawn lag)
Happens more often if I do for example:
/create_lag 1000000 3
(command frommesecons_debug
)And when lag is constant arrows just end up "somewhere", sometimes stuck in air too.
i haven't been able to reproduce this more than the once locally, but i've reduced the HUD update rate
da3c3ddb93
and arrow pitch updated1d7c5187c
, hopefully that'll reduce the number of packets sent to clientsnot sure if the last couple days code is installed on the test server, but arrows still "freeze in mid-air" when fired around the post-office, so i don't think spurious HUD updates are responsible for that. i still haven't replicated this locally except that once.
Latest updates are now on the testserver :)
If both clients are near the arrow when it gets stuck, they both see it:
But when I rejoin, for that client arrow is in it's normal position stuck in the ground:
This is a client/server desync issue.
My guess is that it's a race condition of sorts. I even hear the arrow "hitting" something.
Probably you're never setting arrow position explicitly, only setting it's velocity, so it's left to clients to calculate it's position.
And in this case maybe packets that spawn the arrow and set it's velocity to zero arrive on the same timestep for the client, so the arrow just never starts moving client-side.
in my tests, this is not the case. sometimes one player will see the arrow "stuck", sometimes the other.
they'll appear in the correct position if you even leave the area and come back again - no need to relog.
position is only set when the arrow is e.g. "stuck in the ground". velocity is only set (actually, i use
add_velocity
instead ofset_velocity
) when applying drag. x_bows uses set_velocity. i wonder if that could be part of the problem?I feel this happens immediately after arrow is shot - maybe on a step when dtime is high. I release the arrow, hear "node is hit" sound and arrow is stuck. Could this be the clue? Shooting and hitting happening on the same server step?
that's not it. it's not totally independent of dtime, but it happens regularly enough on the test server which generally has near-zero lag, and i can't get it to happen locally even with very high artificial lag. also, you can hear it moving around and hitting the ground/ceiling on different steps from when you shoot it.
i kinda want to do a full analysis of all incoming packets for one "normal" and one "suck in air" bow shot. i've wished the minetest wireshark plugin parsed the packets more thoroughly. i wonder if i could instead make use of that minetest proxy server. hm.
I hacked together a version of minetest.lua that assembles "split message" packets back, but didn't figure out yet how to properly parse active object messages further, but it should be easier...
Here's the version that assembles split packets and puts the result of running the dissector again into the last split packet:
9f502de..c6867aad
For active object messages I also add CMD:
I had bad wifi connection or something, and almost each arrow I shot got stuck mid-air:
Although, this is what tree chopping aftermath looks like:
So, maybe it's not specific to arrows...
it's not.
anticheat prevents you from interacting with client-side displaced arrows currently. it's mostly an aesthetic problem. we should try to fix it if we can, but i'm not convinced it's a major gameplay issue. it can keep you from picking up your arrows that have landed in the ground, but that's not meant to be a reliable mechanic anyway.