Hi! With the @bevy release fresh upon us, it's time to take a bit of a vacation But, I wanted to set things up nicely before I retreat to a week of video games and rest. So, it's time for an out-of-cycle #bevymergetrain after a leisurely day of project management. I'll be poking my head in, but no focused work and no responsibilities until next Sunday!
We have 19 PRs in the community-approved backlog to get to; let's take a look!
@bevy 1. https://github.com/bevyengine/bevy/pull/11750
Adds an optional Showcase section to our PR templates. I quite like this: the better PR descriptions were doing this already. And more importantly, this serves as a great base to start our release notes, and can be automatically scraped.
I insisted that we cut the already redundant Changelog (Solution, Showcase *and* Showcase is way too much), but with that done I'm happy with this. Merging once the linter is happy.
@bevy 2. https://github.com/bevyengine/bevy/pull/11998
Ah, the "guess image formats" PR. Still has merge conflicts; feel free to adopt it if the urge strikes you.
@bevy 3. https://github.com/bevyengine/bevy/pull/13240
Now, for "don't ignore draw errors". More unresolved merge conflicts. This is quite a bit trickier to resolve, so I'm going to leave it alone for now rather than giving it the label. *Everyone* was busy with the release!
@bevy 4. https://github.com/bevyengine/bevy/pull/13553
A minor change to our advice on how to optimize compile performance for Bevy. In this case, it changes the linker when using Rustdoc (which is apparently a distinct setting).
Francois points out that this is mostly useful for Bevy contributors, not users, since it helps workaround an issue when building doc tests on Windows (please, why are these all totally separate binaries). That said, I agree with Jan: this is good advice even for users. Merging :)
@bevy 5. https://github.com/bevyengine/bevy/pull/13818
A more ambitious PR: a new `EventMutator` type. Reading and modifying a stream of events is a very common pattern in games, and the API for doing this in Bevy is *super* annoying, because both `EventReader` and `EventWriter` want to access the same data, generating conflicts.
A concern was raised about how events should be immutable once sent, which is definitely a valid form of event architecture. It's not what Bevy currently uses though Great work, merging!
@bevy 6. https://github.com/bevyengine/bevy/pull/13826
Documents how to set up and use Tracy, the C++ profiling tool that Bevy hooks into, on MacOS. I am definitely unhappy about how hard to set up and use this (extremely powerful) tool is, but this PR is a solid step towards lessening that learning curve.
Merging.
@bevy 7. https://github.com/bevyengine/bevy/pull/13963
A polish PR that missed the 0.14 release candidate. For consistency, we should include the systems that control auto exposure in `DefaultPlugins` by default, even though they'll be passed over most of the time.
This PR was making our web builds fail due to incompatibility with the WebGL (too many bindings), so it was cut from 0.14. Now that that's fixed, this will actually act as a test to ensure we don't enable it on broken platforms. Merging.
@bevy 8. https://github.com/bevyengine/bevy/pull/14005
A nice little QoL feature for hooks: quickly specify various `on_insert` etc methods as part of the `Component` derive by setting an attribute for the macro. Great!
Code is solid and docs are good; merging.
There's a PR that adds `on_replaced` hooks: I'll mention that it'll need to be updated to account for this too.
@bevy 9. https://github.com/bevyengine/bevy/pull/14064
A caching optimization in our layouting system. Not too shabby 10% performance gain, but the real win is in the rounding micro-optimization in the linked PR. 30% gain by reducing branches, oof.
Anyways, I thought I already merged this, but evidently not. Let's do that now.
@bevy 10. https://github.com/bevyengine/bevy/pull/14071
The math wizards are at it again: this time, sampling uniformly from the surface of any triangle mesh. Pretty easy algorithm honestly; weight the triangles by area to pick a triangle, and then sample within the triangle. Neat!
Good clean separation; I'm pleased with the API design. I am deeply annoyed that some of the methods called here return `Option` rather than a useful `Result`, but not this PR's fault. Merging :)
@bevy 11. https://github.com/bevyengine/bevy/pull/14123
Bevy should crash less. Crashes are really frustrating for developers and crippling for users. If an asset load failure event is processed after the asset is dropped, we definitely shouldn't crash.
Just defensively returning `()` is much more reasonable than panicking. Merging!
@bevy 12. https://github.com/bevyengine/bevy/pull/14156
Our delightful `StateScoped` component is missing a couple of derives: `Reflect` and `Clone`. Sure, that's reasonable: this is basically just a fancy `PhantomData`.
Feature-flagged correctly, so this is good to go. Merging.
@bevy 13. https://github.com/bevyengine/bevy/pull/14163
Context is vital to good error messages. In this case, we're giving an error about an unstyled child in a UI hierarchy (reasonable to complain about), but not saying anything about which entity it is. Whoops.
Simple fix, simple merge.
@bevy 14. https://github.com/bevyengine/bevy/pull/14164
Similar PR from the same author (I bet they ran into this at work...): we changed our Display impl for Entity in this release, so we should clean up the logging in our `log_components` Command.
Great, merging.
@bevy 15. https://github.com/bevyengine/bevy/pull/14171
Fewer pointless normalizations, fewer panics, more consistency. All great things in an API used for working with directions.
Great, merging.
@bevy 16. https://github.com/bevyengine/bevy/pull/14176
And another PR for hard-coded feature detection for low-end GPUs. This time, GPU preprocessing on Android. Bah: I really want better support for querying this at runtime, rather than relying on hardcoded mess like this throughout the code base.
I trust Francois's judgement here though, and that's a much more pervasive problem. Merging; we need a fix in to avoid platform regressions.
@bevy 17 + 18. https://github.com/bevyengine/bevy/pull/14167 and https://github.com/bevyengine/bevy/pull/14179
A pair of twin PRs, making `bevy_reflect` optional in `bevy_core` and `bevy_input`. This was requested by the Tiny Glade devs to make their upgrade process smoother, but it's a good idea (and a consistent pattern) anyways.
Both sets of changes are good; merging :)
@bevy 19. https://github.com/bevyengine/bevy/pull/14209
A trivial PR to update some example links after we split apart `bevy_state` (and moved the examples). Great, nice find.
I wish there was a proper way to link examples from rustdoc, but I suppose this will do. Merging.
@bevy Alright, that's all for this week! Eager to try out Bevy 0.14? Check out our freshly-minted Bevy Jam #5: participate alone or with a team, and learn #rustlang, #bevy and #gamedev while having a good time!
Now it's time for me to go on a bit of a vacation; don't make too much of a mess while I'm gone eh? ;)
@alice_i_cecile @bevy this is so funny i'm too compiler-brained and assumed that "normalization" implied "of an associated type"
@alice_i_cecile @bevy I participated in the last bevy jam, was the first time I actually submitted something to a game jam, was great fun, looking forward to this one
@alice_i_cecile@gamedev.place @bevy I quite dislike the `./capture` thingy, I'm using it like `$HOME/tracy/bin/capture`... ; a `tracy --capture` would help me forget where the heck I installed tracy :')