Skip to content

Commit c813acf

Browse files
committed
N14: Bevy Engine
1 parent bd6dac1 commit c813acf

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed
13.4 KB
Loading

content/posts/newsletter-014/index.md

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

71165
## Requests for Contribution

0 commit comments

Comments
 (0)