Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Character can fall through server objects if they aren't loaded in quick enough - client side authority on movement? #599

Open
xkamronx opened this issue Jan 15, 2025 · 3 comments
Assignees
Labels
bug Something isn't working

Comments

@xkamronx
Copy link

Spawning the default ALS Character in to a large multiplayer level with actors that have replication ranges for performance can cause the character to fall through objects that exist on the server because they haven't loaded in to the client yet.

Is there anything you'd suggest changing here to stop this from happening?

Example - log out on top of a large player built base. Log back in and your character falls through the ceiling and lands inside the base before the base finishes loading, even though the base is always there for the server.

@xkamronx xkamronx added the bug Something isn't working label Jan 15, 2025
@nekwo
Copy link

nekwo commented Jan 16, 2025

This doesn't sound like an als bug your loading system just has a race condition

@xkamronx
Copy link
Author

This doesn't sound like an als bug your loading system just has a race condition

The server isn't loading anything, though. The objects already exist on the server side (dedicated server running for any amount of time). Map is large enough to not load in objects not near 0,0,0 during join. Character spawns anywhere outside of the initial load radius, client side begins loading objects at spawn location, but they already exist on the server. The client 'falls' because the client doesn't have the objects yet, but they exist on the server.

The client falling is accepted by the server as correct, and allows the client's falling through server side objects to be accepted.

Can test with two clients on a server - one at the area already and seeing the objects, and the other late joining. Client already at location will see the new client fall / clip through the existing objects until they load on the client's machine.

I'm assuming this means the client location is respected over what the server thinks should happen, correct? Is that the wanted setup on your end? If so, understandable, but it isn't a 'race condition' in regards to falling because the objects aren't loaded. There's no way to know if all replicated objects in an area are loaded without a constant check back and forth to the server before spawning in a character.

The server knowns there's an object there, knows there is collision, but the client is still able to fall through a solid object if it hasn't replicated to the client yet.

@xkamronx
Copy link
Author

In single player, for sure this could be solved by waiting until everything is loaded. Multiplayer changes that a bit because there's nothing built out that I'm aware of to see if "everything is now replicated to the client" outside of just waiting an arbitrary amount of time.

I haven't seen this issue on larger scale Unreal games like Ark. You can load in to a large multiplayer world on top of a player built base, and your character 'stands' on an invisible ceiling until it loads in, rather than falling through server objects. Likely just a different method of authority compared to what ALS Refactored is doing?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants