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.3K
active users

Alice I. Cecile

Hi s :) It's Monday morning, which means it's time for a quick . There's a good chance I punt some of the higher risk PRs for next week: more time to bake on main is often very effective for sanding off the rough edges (bugs, docs, API cleanup).

8 PRs are ready this week, one of which is even in the milestone: let's take a look! github.com/bevyengine/bevy/pul+

1. github.com/bevyengine/bevy/pul

Shuffling some types around: `EntityHashMap`, our extra-fast hash map specifically designed to hash `Entity` keys quickly, should probably live in `bevy_ecs`, since, you know, that's where `Entity` is defined. Makes sense to me.

James tried to merge this yesterday, but it failed due to CI: this is why you check default features. Been fixed up since (thanks SkiFire13 for the help in reviews!): sanity checking and merging.

GitHubMove `EntityHash` related types into `bevy_ecs` by doonv · Pull Request #11498 · bevyengine/bevyBy doonv

2. github.com/bevyengine/bevy/pul

Ah, `bevy_dynamic_plugin`, one of the darkest and most forgotten corners of Bevy. Dynamically reload Rust code, but neglected and probably UB. I still think we should rip this out and tell devs to use `dextrous_developer` instead for safer(slightly) and more featureful hot reloading, but eh.

Anyways, `unsafe_op_in_unsafe_fn` is a great lint. I wish this was mandatory behavior! Safety comments look sensible, and this is a clear improvement. Merging.

GitHubbevy_dynamic_plugin: fix `unsafe_op_in_unsafe_fn` lint by BD103 · Pull Request #11622 · bevyengine/bevyBy BD103

3. github.com/bevyengine/bevy/pul

A niche but helpful and simple little ECS feature: temporarily pretend like your code is running in the past! (For the purpose of change detection only).

This is a nice API: I really love `resource_scope` (I *promise* it's officially called the hokey-pokey pattern), and this API is just a nice. We even have an internal use of it. Great docs, tests, great PR description. There's a reason jojojet is an SME-ECS! Merging.

GitHubAdd a method for detecting changes within a certain scope by JoJoJet · Pull Request #11687 · bevyengine/bevyBy JoJoJet

4. github.com/bevyengine/bevy/pul

Pixels are usually discrete, we should represent that in the type system where we can. This PR changes to a `UVec2` for texture dimensions, only swapping to f32 later in the pipeline if we absolutely need it to handle things like monitor scaling.

I'm pleased with the type safety and clarity here, and it's easy for consumers to convert to f32 when they need it. Also uh yeah, padding for texture atlases should be strictly positive.

CI failures are real; pinging.

GitHubPrefer `UVec2` when working with texture dimensions by CptPotato · Pull Request #11698 · bevyengine/bevyBy CptPotato

5. github.com/bevyengine/bevy/pul

Code quality PR for `bevy_reflect`'s macro code. Yay! I care a lot about code quality everywhere in Bevy, but that's especially true for the tricksy bits.

It's a bit of a larger PR (439 lines), but meticulously documented with nice commit history. I'm also okay to merge larger, more intrusive refactors like this in code that *isn't* being modified by 8 open PRs at once (hi ECS).

Changes are quite nice! Merging.

GitHubbevy_reflect_derive: Clean up attribute logic by MrGVSV · Pull Request #11777 · bevyengine/bevyBy MrGVSV

6. github.com/bevyengine/bevy/pul

james7132, one of my co-maintainers, *loves* optimizing things. Wasted cycles? Banned! Generally admirable, but particularly valuable in games.

In this PR, we're showcasing the performance value of run conditions for short systems. Because run conditions are evaluated on the main thread, we can early out before we have to spawn a new system at all. Some pretty histograms showing the effect on a real scene, and a detour about overhead from granular spans. Merging.

GitHubPut asset_events behind a run condition by james7132 · Pull Request #11800 · bevyengine/bevyBy james7132

7. github.com/bevyengine/bevy/pul

What's that, another perf PR from James? It's good to see him active again :D Real life happens to all of us: the ability to just fluidly ramp up and down your activity levels is one of my favorite things about the large informal nature of Bevy's open source.

Like James says:

> At the start of every schedule run, there's guaranteed overhead as the async executor spawns the task onto one of the threads.

By polling first, we can reduce latency. Neat! Merging!

GitHubImmediately poll the executor once before spawning it as a task by james7132 · Pull Request #11801 · bevyengine/bevyBy james7132

8. github.com/bevyengine/bevy/pul

And a perf triple-whammy to round things off. Deep within the dark unsafe bowels of the ECS, we're passing in a `World` to a `CommandQueue`, so it can apply the changes generated by `Commands`.

The actual issue is pretty simple: `&mut Option<&mut T>` is pretty much always a code smell for double indirection. `as_deref_mut` to the rescue.

Some fun generated assembly analysis by James for those who click through :) Merging!

GitHubFix double indirection when applying command queues by JoJoJet · Pull Request #11822 · bevyengine/bevyBy JoJoJet

Alright, that's all of the community-reviewed PRs in our backlog this week :) Time to check out github.com/bevyengine/bevy-web, and start working on the release notes for Bevy 0.13!

There's only a few items left in the code milestone: github.com/bevyengine/bevy/mil

Some rendering PRs in there which need eyes though, just saying... ;)

GitHubGitHub - bevyengine/bevy-website: The source files for the official Bevy websiteThe source files for the official Bevy website. Contribute to bevyengine/bevy-website development by creating an account on GitHub.

@alice_i_cecile Hey this happens to be applicable to one of my projects! Thank you!