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