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

Ambiguous system order and Changed<Component> #1551

Closed
sdfgeoff opened this issue Mar 4, 2021 · 1 comment
Closed

Ambiguous system order and Changed<Component> #1551

sdfgeoff opened this issue Mar 4, 2021 · 1 comment
Labels
A-ECS Entities, components, systems, and events C-Docs An addition or correction to our documentation C-Usability A simple quality-of-life change that makes Bevy easier to use

Comments

@sdfgeoff
Copy link
Contributor

sdfgeoff commented Mar 4, 2021

Bevy version

source = "git+https://github.com/bevyengine/bevy?branch=main#d9fb61d474518eba06d0c3dce5cb81db9f7ed66a"

Operating system & version

Linux

What you did

Updated from bevy 0.4.0 to latest main and played my game

What you expected to happen

That my systems would continue to run as before

What actually happened

Many of my systems became unreliable - they weren't executing or were executing late (causing timeouts on a networking system). Different builds adding dbg!() commands changed behaviour etc. etc.

After some digging, I discovered this is likely due to the change: #1144

This change means that systems no longer execute in the order you declare them in. Coupled with the fact that the original Changed issue explicitly states that order independance is a non goal: #54 (comment)
This means systems with Changed appeared unreliable.

Additional information

Technically this isn't a problem. The program is doing as documented: Changed<component> states it only works when systems are in order, AppBuilder explicitly states that systems aren't added in any sort of order. Both of those rules are fine. The issue is that the interaction between them is non-obvious to first-time users.

A minimum solution could be documentation on Changed<> noting this interaction and suggesting that any use of it requires explicit system order.

@Ratysz
Copy link
Contributor

Ratysz commented Mar 4, 2021

This is a known problem with heaps of discussion/action around it: #68, #1471.

I think this issue could be scoped to documenting this "effect", both as a stop-gap and as a note on performance for when this is no longer unmanageably flaky.

@Ratysz Ratysz added C-Docs An addition or correction to our documentation A-ECS Entities, components, systems, and events C-Usability A simple quality-of-life change that makes Bevy easier to use labels Mar 4, 2021
sdfgeoff added a commit to sdfgeoff/bevy that referenced this issue Mar 4, 2021
…ded<T>

This documents both the non-obvious interaction with non-explicit system ordering
and adds examples for Changed and Added. This is in response to bevyengine#1551
sdfgeoff added a commit to sdfgeoff/bevy that referenced this issue Mar 4, 2021
…ded<T>

This documents both the non-obvious interaction with non-explicit system ordering
and adds examples for Changed and Added. This is in response to bevyengine#1551
sdfgeoff added a commit to sdfgeoff/bevy that referenced this issue Mar 4, 2021
…ded<T>

This documents both the non-obvious interaction with non-explicit system ordering
and adds examples for Changed and Added. This is in response to bevyengine#1551
@bors bors bot closed this as completed in 64b2961 Mar 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-ECS Entities, components, systems, and events C-Docs An addition or correction to our documentation C-Usability A simple quality-of-life change that makes Bevy easier to use
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants