@@ -66,6 +66,90 @@ If needed, a section can be split into subsections with a "------" delimiter.
66
66
67
67
## Library & Tooling Updates
68
68
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 persisteto 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
+
69
153
## Popular Workgroup Issues in Github
70
154
71
155
## Requests for Contribution
0 commit comments