-
-
Notifications
You must be signed in to change notification settings - Fork 145
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
Project Rewrite Tracking Issue #620
Comments
As discussed in the discord I will defer updating bevy to its own PR. (1/2) of point num 3 of #620 . I am not sure how to close all the dependabot PRs.
update to bevy 0.14. works towards #620 task 3.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
May I ask why? bevy_ecs outperforms it on its own benchmark everywhere except on random access, where bevy is twice the time (because it's a dual lookup for an entity->archetype->data), but of times so tiny they are just a pointer indirection cost anyway? Here's my benchmark times using evenio's own benchmark with the latest version of both evenio and bevy_ecs (so git for evenio and 0.14.2 for bevy, no code changes needed for their benchmark code, it all just worked) for their benchmarks that have bevy in it:
|
I can't find the discussion right now, but this has been discussed before. We are looking to replace bevy primarily because of development ergonomics. A lot of the code we write relies very heavily on events that trigger logic. |
I personally don't think any developers are motivated to continue this rewrite. At the moment @rj00a has mysteriously disappeared and I seem to be the main person still working on it. My development effort is currently focused on 1.21 and after that I would rather add features then undertake a rewrite. If someone with a lot of spare time and motivation shows up this might happen but it seems unlikely. |
The evenio docs eludes to some of the reasoning https://docs.rs/evenio/latest/evenio/tutorial/#why-evenio |
I experimented with evenio but I didn't see any feature it had that bevy_ecs lacked, and bevy_ecs has a great many features that it lacks, and it had no performance boost to offset it either (and indeed you lose out in a great amount of performance in many areas with multi-threading as it can only multi-thread 'within' a system (if the user chooses to), not 'across' systems, and you cannot often multi-thread within a system and even most of the time when you can it's not worth it due to the task dispatch overhead and the low amount of iterations within most systems). But yeah, in short if you want to run something to handle an 'event' now then bevy has run-on-demand systems for that, but honestly you shouldn't except in specialized cases (which do exist), that's needless performance overhead for no reason otherwise and makes it harder to follow 'when' something happens. |
I'm going to close and unpin this issue since the main driver behind it (@rj00a) is MIA for now. We can always reopen it later. IMO, the changes suggested in this issue (particularly the switch to |
Here are the steps that need to be taken to rewrite the project and get it updated to the latest version of the game, since folks were asking.
Should be done roughly in this order, one or more PRs per check.
[lints]
table inCargo.toml
#586criterion
todivan
for benchmarking.World
interface more convenient. rj00a/evenio#57evenio
and depend on that.Arc
s for easy sharing and fast lookups. Registry modification is then possible if the refcount is 1.compio
insteadtokio_uring
#619 mentioned usingcompio
.valence_anvil
,valence_command
.valence_protocol
. Might need a rewrite.The text was updated successfully, but these errors were encountered: