Skip to content

Commit 0068aa9

Browse files
committed
N14: Bevy Engine
1 parent bd6dac1 commit 0068aa9

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed
13.4 KB
Loading

content/posts/newsletter-014/index.md

+51
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,57 @@ If needed, a section can be split into subsections with a "------" delimiter.
6666

6767
## Library & Tooling Updates
6868

69+
### [Bevy Engine][bevy]
70+
71+
[![bevy logo](bevy_logo.png)](https://bevyengine.org/)
72+
73+
[Bevy][bevy] is a refreshingly simple data-driven
74+
game engine built in Rust. It is [free and open source][bevy-repo] forever! It aims to be:
75+
76+
- **Capable**: Offer a complete 2D and 3D feature set.
77+
- **Simple**: Easy for newbies to pick up, but infinitely flexible
78+
for power users.
79+
- **Data Focused**: Data-oriented architecture using
80+
the Entity Component System paradigm.
81+
- **Modular**: Use only what you need. Replace what you don't like.
82+
- **Fast**: App logic should run quickly, and when possible, in parallel.
83+
- **Productive**: Changes should compile quickly ... waiting isn't fun.
84+
85+
**Bevy 0.2 Released**
86+
87+
This month, thanks to 87 contributors, 174 pull requests, and their [generous sponsors][bevy-sponsors], **Bevy 0.2** was released. You can view the [full Bevy 0.2 announcement here][bevy-0-2]. Here are some highlights:
88+
89+
* **Async Task System**: Bevy now has a brand new async-friendly task system, which enables the creation of context-specific task pools. For example, you might have separate pools for compute, IO, networking, etc. This also provides the flexibility to load balance work appropriately according to work type and/or priority. Bevy (and a number of other rust game engines and ecs frameworks using rayon) have received feedback that they were overly cpu hungry / usage was not proportional to "real" work done. This new task system completely replaces Rayon and the cpu usage wins were huge!
90+
* **Initial Web Platform Support**: (A subset of) Bevy now runs on the web using WebAssembly/WASM! Specifically, Bevy apps can run Bevy ECS schedules, react to input events, create an empty canvas (using winit), and a few other things. This is a huge first step, but it is important to call out that there are still a number of missing pieces, such as 2D/3D rendering, multi-threading, and sound.
91+
* **Parallel Queries**: Bevy ECS Queries are a flexible way to retrieve data from the Entity Component System. Systems that use queries already run in parallel, but before this change the queries themselves could not be iterated in parallel. Bevy 0.2 adds the ability to easily iterate queries in parallel, which builds on top of the new Async Task System.
92+
* **Transform System Rewrite**: Bevy's old transform system used separate `Translation`, `Rotation`, and `Scale` components as the "source of truth", which were then synced to a `LocalTransform` component after each update. There are Good Reasons™ to use this approach, but it created a "lag" between the calculated LocalTransform and the source components and dataflow between components is hard to reason about. This problem was resolved by making a newer, simpler transform system that uses a consolidated `Transform` type.
93+
* **Joystick/Gamepad Input**: The Bevy Input plugin now has cross-platform support for most controllers thanks to the gilrs library!
94+
* **Bevy ECS Performance Improvements**:
95+
* *Generational Entity IDs*: Entity IDs have changed from being UUIDs to incrementing generational indices. Random UUIDs were nice because they could be created anywhere, were unique across game runs, and could be safely persisted to files or reused across networks. Unfortunately they ended up being too slow relative to the alternatives. The randomness had a measurable cost and entity locations had to be looked up using a hash map.
96+
* *Read Only Queries*: A "read only" trait was implemented for queries that don't mutate anything. This allows Bevy to guarantee that a query won't mutate anything.
97+
* *Lock-Free World Apis*: This gave a really nice speed boost. World APIs are still safe due to a combination of the new "read only queries" and changing World mutation apis to be a mutable World borrow.
98+
* *Direct Component Lookup*: As a result of the changes above, direct component lookup is about 4x faster than it used to be!
99+
100+
**Community Plugin Updates**
101+
102+
* **[bevy_rapier](https://github.com/dimforge/bevy_rapier)**: Rapier Physics' official Bevy plugin was updated to support Bevy 0.2
103+
* **[bevy_ninepatch](https://crates.io/crates/bevy_ninepatch)**: Display 9-Patch UI elements, where you can specify how different parts of a PNG should grow
104+
* **[bevy_mod_picking](https://github.com/aevyrie/bevy_mod_picking)**: 3d cursor picking and highlighting
105+
* **[bevy_contrib_colors](https://crates.io/crates/bevy_contrib_colors)**: A simple color library
106+
* **[bevy_input_map](https://crates.io/crates/bevy_prototype_input_map)**: Converts user inputs from different input hardware into game specific actions. Ex: keyboard "Space" or joystick "A" can be mapped to a "Jump" Action.
107+
* **[bevy_prototype_lyon](https://github.com/Nilirad/bevy_prototype_lyon)**: Draw 2D shapes, like triangles, circles, and beziers
108+
* **[bevy_contrib_inspector](https://github.com/jakobhellermann/bevy-contrib-inspector)**: Visually edit fields of your bevy resources in a browser or native view.
109+
110+
_Discussions:
111+
[/r/rust](https://www.reddit.com/r/rust/comments/iw1yyp/bevy_02),
112+
[hacker news](https://news.ycombinator.com/item?id=24530698),
113+
[twitter](https://twitter.com/cart_cart/status/1307445918535315456)_
114+
115+
[bevy]: https://bevyengine.org
116+
[bevy-repo]: https://github.com/bevyengine/bevy
117+
[bevy-0-2]: https://bevyengine.org/news/bevy-0-2
118+
[bevy-sponsors]: https://github.com/sponsors/cart
119+
69120
## Popular Workgroup Issues in Github
70121

71122
## Requests for Contribution

0 commit comments

Comments
 (0)