mastodon.gamedev.place is one of the many independent Mastodon servers you can use to participate in the fediverse.
Mastodon server focused on game development and related topics.

Server stats:

5.6K
active users

Alice I. Cecile

Hi! I had a lovely vacation, and it's time for another this Monday :) I spent yesterday's work day reviewing something like 40 PRs, so there's an unusually high number of community-approved PRs today: 35! Follow along, and take a peek at how is done <3

github.com/bevyengine/bevy/pul

1. github.com/bevyengine/bevy/pul

The culmination of a few weeks of work by Nth: re-implement hierarchical event bubbling for picking (mouse interactions!) using our observers.

Code quality and docs are great at this point, it has sign-off from all of the stakeholders. There are some outstanding vague questions about "how do all of our different event-like tools interact" and it's slower than the custom solution before, but IMO it's worth merging now. Unification and steady progress are invaluable.

GitHubMinimal Bubbling Observers by NthTensor · Pull Request #13991 · bevyengine/bevyBy NthTensor

2. github.com/bevyengine/bevy/pul

So, plugin groups are a tool used to group commonly associated plugins together. This is better (for crate authors) than just sticking plugins inside of a single plugin, since then you can nicely disable them.

However, listing what's in them is a real maintenance burden: we've screwed this up repeatedly. With a simple macro, we can generate the type and automatically updated docs in a single blow. Not very user-facing, so I'm fine with a macro here. Merging :)

GitHubplugin_group! macro by doonv · Pull Request #11460 · bevyengine/bevyBy doonv

3. github.com/bevyengine/bevy/pul

If a draw command (used to prepare work for the GPU I think?) has an error, apparently they currently get silently swallowed. We should be a good citizen and return those in a Result.

Very sensible! I've been griping about rendering reliability, docs and code quality for a while now; very pleased to see these sorts of efforts <3 Merging! Well, once merge conflicts are resolved.

GitHubDon't ignore draw errors by IceSentry · Pull Request #13240 · bevyengine/bevyBy IceSentry

4. github.com/bevyengine/bevy/pul

Post-processing! Chromatic aberration! Another PR by the feature-machine: pcwalton. Good to see this made it through review <3

The second approval is relatively weak (focused on docs and testing), but the first approval is strong (rendering SME). I'm comfortable with that, especially from a contributor with a history of producing high-quality code. My own review pass didn't turn up any problems either. Merging.

GitHubStart a built-in postprocessing stack, and implement chromatic aberration in it. by pcwalton · Pull Request #13695 · bevyengine/bevyBy pcwalton

5. github.com/bevyengine/bevy/pul

A simple logging improvement: capturing the base path that the asset server is using. Very helpful: I've been frustrated by this both as a beginner and when using more complex project structures.

Nice QoL: merging :)

GitHubadd debug logging to ascertain the base path the asset server is using by alphastrata · Pull Request #13820 · bevyengine/bevyBy alphastrata

6. github.com/bevyengine/bevy/pul

A redo of a previously merged PR: the logic was subtly wrong, and it broke our scene loading. I still like the API change :)

Let's do one final check on the previously regressed example.`gh pr checkout 13855` and we're off to the races. Yay, things are working still! Merging :)

GitHubAlign `Scene::write_to_world_with` to match `DynamicScene::write_to_world_with` by dmyyy · Pull Request #13855 · bevyengine/bevyBy dmyyy

7. github.com/bevyengine/bevy/pul

Our first internal use of observers: porting over the existing `SceneInstanceReady` event to use them. This is a natural fit, as it already targets a single entity, and is relatively rare: we should get one to one hundred of these at the start of the app, and then very rarely afterwards.

Good migration guide, good idea. It's nice to start dogfooding this. However, some non-trivial merge conflicts. Pinging the author to resolve them.

GitHubChange `SceneInstanceReady` to trigger an observer. by komadori · Pull Request #13859 · bevyengine/bevyBy komadori

8. github.com/bevyengine/bevy/pul

More documentation for reflection always makes me happy. In this case, it's an example about `TypeData`: a powerful tool for extending reflection to work with your own traits.

Really solid improvement over the previous example: it focuses more on motivation, which IME is critical here. Neat to see the "literate programming" style; I'm a big fan of mixing code and prose like this. Merging!

GitHubexamples: Add `Type Data` reflection example by MrGVSV · Pull Request #13903 · bevyengine/bevyBy MrGVSV

9. github.com/bevyengine/bevy/pul

Include the `AutoExposurePlugin` into `DefaultPlugins`, to match the API of everything else. This has repeatedly failed on web builds (sus...). Going to update the branch, and try again, but I'm pretty sure that there's something else going on here. Thanks CI!

IMO we're going to need to make an issue for this problem, and then mark this as blocked on getting this fixed.

GitHubInclude AutoExposurePlugin in CorePipelinePlugin by Kurble · Pull Request #13963 · bevyengine/bevyBy Kurble

10. github.com/bevyengine/bevy/pul

A second pcwalton PR: this time localizing our volumetric fog. Love it! I saw this effect in the new FFXIV expansion, and I was pleased that we could replicated it in Bevy. Pretty simple, very useful, nicely made.

There was a simple merge conflict, but with that fixed up let's get this merged.

GitHubAllow volumetric fog to be localized to specific, optionally voxelized, regions. by pcwalton · Pull Request #14099 · bevyengine/bevyBy pcwalton

11. github.com/bevyengine/bevy/pul

Allow observer systems to be piped, by providing them with an optional output type. Neat! Really cool to see features naturally composing like this.

This should be backwards-compatible due to the default type parameter of `()`. I'm personally pretty neutral on including it in the point release, but eh, why not.

Simple (as far as trait magic goes) and tested. Merging!

GitHubAllow observer systems to have outputs by cBournhonesque · Pull Request #14159 · bevyengine/bevyObjective Fixes #14157 Solution Update the ObserverSystem traits to accept an Out parameter Testing Added a test where an observer system has a non-empty output which is piped into another system

12. github.com/bevyengine/bevy/pul

Ooh, an input PR 🤔 I don't think I saw this one. This exposes key repeats to Bevy users. Apparently this is OS-level information analogous to our own just_pressed information. I wonder if we should use that internally. Probably not since it's OS-specific.

Anyways, very simple addition with docs. Useful enough to expose; merging.

GitHubExpose Winit's `KeyEvent::repeat` in `KeyboardInput` by daxpedda · Pull Request #14161 · bevyengine/bevyBy daxpedda

13. github.com/bevyengine/bevy/pul

Computers hate transcendental functions (like sin and cos): very slow to evaluate compared to simple multiplications and additions. So when writing performance-sensitive code, do some algebra and use those trig identities to avoid them :)

The math has been triple-checked; merging.

GitHubbevy_math: faster sphere sampling by ickk · Pull Request #14168 · bevyengine/bevyBy ickk

15. github.com/bevyengine/bevy/pul

Ooh, virtual geometry PR. Some crunchy stuff here: a custom deserializer using `Pod` (plain old data) types to give us a 8x speed-up on deserializing.

Fun to see, and the measure-then-optimize strategy pays off well. Thoroughly reviewed and well-motivated: merging.

GitHubFaster MeshletMesh deserialization by JMS55 · Pull Request #14193 · bevyengine/bevyBy JMS55

16. github.com/bevyengine/bevy/pul

One of the more painful breaking changes in how states work in Bevy 0.14 is that they're now applied *before* startup systems. This is important to make sure that when you're in a state, all of the initialization for that state has been done! To support that, there's a state transition schedule being run in the startup meta-schedule(?).

Right now though it's just running in `Startup`, but it should run before everything else. Good fix, merging and backporting :)

GitHubMake initial `StateTransition` run before `PreStartup` by MiniaczQ · Pull Request #14208 · bevyengine/bevyBy MiniaczQ

17. github.com/bevyengine/bevy/pul

Renames the very useful but somewhat mysterious `DebugName` system parameter to something more useful. This is now `NameOrEntity`, which more accurately captures what it does. Fundamentally, this is intended for use in dev-tooling: reporting the most user-friendly name it can find.

PR title and migration guide are out of date after some bikeshedding; let me edit that... Great, with that done, let's merge :)

GitHubRename `bevy_core::name::DebugName` to `bevy_core::name::NameOrEntity` by GauravTalreja · Pull Request #14211 · bevyengine/bevyBy GauravTalreja

18. github.com/bevyengine/bevy/pul

A bit beefier now: an extension to out built-in hooks and observers triggers. When adding a component, there was both on_add and on_insert. The former runs whenever a component is first added to an entity, but the latter also works when the component is replaced via commands. On the removal side though, only the on_add equivalent exists.

This PR adds on_replace, resolving the inconsistency. Some nice debugging of UB via Miri in the comments: thanks CI! Merging :)

GitHubComponent Lifecycle Hook & Observer Trigger for replaced values by Pixelstormer · Pull Request #14212 · bevyengine/bevyBy Pixelstormer

19. github.com/bevyengine/bevy/pul

When writing Bevy applications, I typically just use `.chain` and the lazy system-type-name ordering. But for libraries, having public system sets is invaluable.

We added a UI system that wasn't part of our existing sets, which makes it much harder to order against. This PR fixes that! Merging :)

GitHubClean up UiSystem system sets by UkoeHB · Pull Request #14228 · bevyengine/bevyBy UkoeHB

20. github.com/bevyengine/bevy/pul

A simple documentation fix discovered by the Jam working group as they work on a game template :) `Commands::spawn_empty` is actually somewhat weird, in that it *doesn't* generate a command. Instead, it mutates the atomic counter that controls entity spawning, and allocates a new ID: giving the caller a stable entity ID despite the bulk of the work being done later.

Anyways, good little doc fix. Merging :)

GitHubFix inaccurate docs for `Commands::spawn_empty` by benfrankel · Pull Request #14234 · bevyengine/bevyBy benfrankel

@alice_i_cecile Is this supposed to sample uniformly on the sphere? Because I think it's biased towards the poles -- it takes a uniformly distributed height, but a truly uniform point on the sphere doesn't have a uniform height.

@jneem @alice_i_cecile Couldn't find justification in the PR or commits, or the place where the math was triple checked. The previous approach had a Wolfram alpha link explaining the sphere sampling, but that's been removed. But looking at the Wolfram alpha page, it might be correct. a is theta+π/2 in the second formula: “Similarly, we can pick u=cosphi to be uniformly distributed…”

@Tobu @alice_i_cecile Oh, you're right. The height is uniformly distributed; it's the latitude that isn't. Sorry for the noise!

@alice_i_cecile
What, already, I thought you went on vacation yesterday! Young people with all that energy... :) I am doing a proper European style long vacation, paid by my clients not having to pay me. I hope to even get into playful tinkering with code mode in a while - longer periods of no work do that to me and I love it.

@faassen I was on vacation Monday to Saturday last week: I definitely tend to prefer smaller more frequent ones :) One of the perks of working for @bevy is European-style vacation policies though: I'm going to need to actually try to make sure I spend all my days!

@alice_i_cecile

@bevy
In my head it seemed to flash by, but smaller more frequent ones does sound good!