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! Happy ~~Monday~~ Tuesday: it's time for your weekly <3 It was a holiday yesterday, so we have an off-by-one error this week.

There's 11 PRs in our backlog of community-approved uncontroversial PRs this week: github.com/bevyengine/bevy/pul+

Follow along as I explain and triage them: it's fun to see how works under the hood, and game engines are the charismatic megafauna of FOSS frankly.

1. github.com/bevyengine/bevy/pul

A simple set of bug fixes with regression tests for our triangle math. Merge conflicts are still not resolved after a week, and they're too tricky for me to do quickly in the Github UI.

This gets the S-Adopt-Me label: picking up work like this is a really nice approachable way to help out and make sure that work doesn't get dropped.

GitHubAdd triangle_math tests and fix Triangle3d::bounding_sphere bug by vitorfhc · Pull Request #12659 · bevyengine/bevyBy vitorfhc

2. github.com/bevyengine/bevy/pul

A performance improvement for our ECS internals: we're storing redundant information and with a bit of careful design and a sprinkling of unsafe code we can get rid of that to save memory hopefully a few compute cycles.

James rightly points out that this is relatively risky due to the tricky unsafe and suggests waiting until the start of the 0.15 cycle. I agree: adding the S-Blocked label to it so this won't show up in this search for now.

GitHubRemove redundent information and optimize dynamic allocations in `Table` by Adamkob12 · Pull Request #12929 · bevyengine/bevyBy Adamkob12

3. github.com/bevyengine/bevy/pul

Ooh, the system builder API is ready. Whee shiny ECS features: 0.14 will be exciting. This is a really nice improvement for more flexible ECS code, especially when integrating with scripting languages.

The general pattern of "dynamic core with strongly-typed API on top" is a recurring theme as we develop bevy_ecs, and I'm curious to see if we can move more in that direction here.

Now, for the actual work...

GitHubImplement a SystemBuilder for building SystemParams by james-j-obrien · Pull Request #13123 · bevyengine/bevyBy james-j-obrien

This is labelled X-Contentious, and with good reason. There are implications to consider, but no one thinks this is a *bad* direction and it's well isolated.

I really like how the API has evolved; this is much nicer. Reviews are high quality! Okay, code quality is good, and I like the strategy they used for implementation. Docs are inadequate though, and there are a couple of serious rough edges (no Res<T>?) that I want to polish before release. Requesting changes and adding to 0.15 milestone.

4. github.com/bevyengine/bevy/pul

Oh wow. This is the "use Sebastien Aaltonen's ofset-allocator design to make rendering faster" PR. Those are some *impressive* performance gains. Multiple milliseconds reduced overhead on Bistro, a high-end but not unreasonable test scene.

This is beyond my rendering skill level, although the code quality and descriptions are great (thank pcwalton). The author added this to the 0.15 milestone: I'm going to ask rendering opinions on what to do here.

GitHubPack multiple meshes into vertex and index buffers. by pcwalton · Pull Request #13218 · bevyengine/bevyBy pcwalton

5. github.com/bevyengine/bevy/pul

A straightforward enough change to how we're tracking information about the order in which we render entities. Rather than adding components to the entities in the render world, keep a map of them in various resources.

There's a modest performance gain, but the real impetus is in simplifying and reducing the render world's use of the ECS. The current extraction strategy used for pipelined rendering is complex, fragile and costly. Painful for new ECS features!

GitHubMake render phases render world resources instead of components. by pcwalton · Pull Request #13277 · bevyengine/bevyBy pcwalton

The PR itself looks solid: simple, well-made, widely approved by folks with relevant expertise. Let's merge it :)

6. github.com/bevyengine/bevy/pul

A math bug! I'm so so glad that we've fostered a little herd of mathematicians in Bevy now: very handy to have them on hand when we need to nerdsnipe them somehow.

In this case, we weren't recomputing normals correctly when rescaling meshes, leading to weird artifacts. Some good discussion in the comments about correctness but this is resolved now.

Looks good and there's a regression test. Merging.

GitHubFix normals during mesh scaling by solis-lumine-vorago · Pull Request #13380 · bevyengine/bevyBy solis-lumine-vorago

7. github.com/bevyengine/bevy/pul

bevy_assets usability improvements! Very pleased to see work here pick up in 0.14: there was a long period where we were "waiting for the rewrite" and it took folks a while to get their feet wet with the new code base.

This PR integrates the "load asset with these settings" API into our "please don't get fancy with async" API. Great, this should exist.

There's a nice follow-up issue for making the API more cohesive with the builder pattern but that can wait. Merge!

GitHubAdd more load_direct implementations by ricky26 · Pull Request #13415 · bevyengine/bevyBy ricky26

8. github.com/bevyengine/bevy/pul

Speaking of PRs that are useful but could benefit from future work: a genuinely nice API for sorting queries.

Go look at the examples in the PR! They're way nicer than I thought possible. Great application of the esoteric query transmutes here.

All sorts of fancy caching can and probably should be done in the future, but for now, let's get this to users. Very useful as is. Merging.

GitHubimplement the full set of sort methods on QueryIter by Victoronz · Pull Request #13417 · bevyengine/bevyBy Victoronz

9. github.com/bevyengine/bevy/pul

Today, our pet mathematicians bring us such gems as "Now, convert a point from the fundamental tetrahedron into barycentric coordinates by taking the four successive differences of coordinates; note that these telescope to sum to 1, and this transformation is linear, hence preserves the probability density, since the latter comes from the Lebesgue measure."

Truly, arcane incantations (thankfully my training has prepared me) but remarkably clear to the experts.

GitHubTetrahedron sampling by mweatherley · Pull Request #13430 · bevyengine/bevyBy mweatherley

Sampling the faces and interior of triangular prisms is useful enough as an operation, and this is well done. Very nice documentation and code quality: I would be happy to see this used as a reference implementation of the algorithm.

Merging!

10. github.com/bevyengine/bevy/pul

One of the constant chores of large projects is maintaining consistency across it. In this case, we would use "segments" to describe the number of sections used to draw things like circles in a gizmos context, and "resolution" in a rendering context. As the original issue says, we should use the rendering convention to confuse people less.

Good refactor: it's nice to see associated methods and constants cleaned up too. Merging. Thank goodness forbreaking changes.

GitHubInconsistent segments/resolution naming by solis-lumine-vorago · Pull Request #13438 · bevyengine/bevyBy solis-lumine-vorago

11. github.com/bevyengine/bevy/pul

Lava burning bright with the fire of a thousand suns! Nah, actually that's just a bug. Whoops! We fixed a bug in our rendering code last week, but one of the examples needs to be retuned to stop working around it.

I checked this PR out locally using the `gh` CLI tool earlier today to validate the change. Looks broken on `main`, and much more reasonable on this branch. Weird diff though, thanks Github. Merging.

Alright, that's all the PRs for this week! I love seeing the mix of shiny features, bug fixes and little improvements that roll in for @bevy :) It's one of my favorite things about well-run open source: unsexy bugs and papercuts don't get neglected forever. Eventually, someone will be motivated to fix it themselves! And when they do, it'll be an easy review and merge <3

Thanks to all our contributors (including users who complain!): the effort and polish really does add up.

@alice_i_cecile @bevy your merge train threads are one of my favourite things of the week xD! it's super valuable, I appreciate your consistency with them ^^ !!!

the commentary around each pr is super handy too, often I don't have the context looking at random PRs to understand why