I am surprised because there are more people (and discussions) involved in some more recent issues.
Questions
I am wondering the following:
Which bug reports are prioritized ? Is there criteria ?
Can I do something else than waiting ?
Am I doing something wrong ?
disambiguation
It is important to make it clear that this is not a complaint. Also, I hope the words I use are not unpleasant. I am not a native speaker and I just use the words I find.
I don’t want to denigrate the amazing work of Godot developers, I just want to understand how things are organized.
You did everything right. There could be many reasons why it isn’t prioritized. Maybe there’s no one to work on it. If it is important to you to get it fixed, this could be a reason for you to contribute to the project.
Do you mean fixing the bug myself ? There are even more reasons for me to try:
an amazing experience (I guess)
the best way to understand how things are organized, I guess.
Learning c++ which is a language I don’t master (never really used it).
However, this last point could also be a reason to avoid doing it. I am not sure to be able to make clean code in this language. It is still recent for me to write GDScript or python that I can easily understand later.
And there is an even more important reason I will not do it soon: I am currently really busy for school and exams. I can do my hobbies only if they bring zero deadlines. And I am unable to predict how next year will be.
I don’t think this is a bug, move_and_slide is supposed to conserve speed to an extent; and your object is moving with a magnitude of 111.8, which pretty close to the resulting 109 when sliding against the wall. It’s not clear what you expect to happen, if you wish it canceled any “sliding” then that could be achieved easier by using move_and_collide instead of altering move_and_slide.
When grounded this is considered a “floor” so the vertical movement is canceled out by a presumed gravity which keeps horizontal movement consistent, which is usually desired for platformers.
This is also a widely used function, any change to move_and_slide would break many projects and tutorials so a contributor would be weary to take this on, and reviewing the change would require a lot of debate and rigorous testing.
You did a good job reporting, videos and demos are perfect, only thing missing is what your expected behaviour is. Issues take a long time, many have been open for years, for the reasons described I don’t think you will see a quick turn around on this.
No I don’t expect the sliding to be canceled.
In the example shown in the issue (where the collision happens on a horizontal edge), I just want the sliding to be slower. If velocity.x = 50, I expect the sliding speed to be 50. I think, it should not depend on velocity.y (as the collision happens on a horizontal edge). That’s why it should not conserve its magnitude in my opinion.
Maybe, I should make a schema to explain things better…
You can add your expected behavior as @gertkeno suggested.
I can think of many. Just like you’re busy with life, they are busy with life. The people working on Godot are doing it for fun and for free. They do not get paid for it. Just like the people on these forums are answering questions to the best of their ability for free.
It looks like the engine is taking the expected velocity of 111 units/frame and then moving it as far as it can, then sliding it. From a physics standpoint, the current results are the ones most people would expect.
You’re constantly moving something at ~111units/frame. The game is taking that motion, moving until it collides with a wall, and then attempting to use up the remainder of that motion in whatever its new direction is. Or to put it another way; you’re not moving 50x and 100y units, you’re moving ~111units at about 296 degrees (or ~64 degrees below the X axis). Once you collide with something along that motion, the engine sees how much you’ve moved, and tries to use the rest of your movement along whatever surface you’ve hit.
I’d recommend playing with code to get the desired results. I haven’t personally dabbled with the physics engine much, but you could see if using move_and_collide followed by custom response.
After writing that and testing, this seems to get close to what you want: