Skip to content

Commit 2cb3186

Browse files
authored
Merge branch 'source' into bevmnist
2 parents 1d21968 + 19741f2 commit 2cb3186

File tree

9 files changed

+263
-0
lines changed

9 files changed

+263
-0
lines changed
334 KB
Loading
419 KB
Loading
2.21 MB
Loading
5.11 KB
Loading

content/posts/newsletter-016/index.md

Lines changed: 259 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Feel free to send PRs about your own projects!
3232

3333
Table of contents:
3434

35+
- [Last Call for Rust GameDev Survey](#last-call-for-rust-gamedev-survey)
3536
- [Game Updates](#game-updates)
3637
- [Learning Material Updates](#learning-material-updates)
3738
- [Library & Tooling Updates](#library-tooling-updates)
@@ -61,12 +62,270 @@ _Discussions:
6162
If needed, a section can be split into subsections with a "------" delimiter.
6263
-->
6364

65+
## Last Call for [Rust GameDev Survey][survey]
66+
67+
Our annual [Rust Game Development Ecosystem Survey][survey] will be closed
68+
on Sunday at the end of this week, 6. December 2020.
69+
It'll only take 10 minutes, and your responses help us
70+
better understand the state of our ecosystem and where we
71+
should try to focus our collective efforts.
72+
73+
[survey]: https://surveymonkey.com/r/F2JYRFF
74+
6475
## Game Updates
6576

77+
### [A/B Street][abstreet]
78+
79+
![15 minute tool](abstreet.png)
80+
81+
[A/B Street][abstreet] is a traffic simulation game exploring how small changes
82+
to roads affect cyclists, transit users, pedestrians, and drivers. Any city
83+
with OpenStreetMap coverage can be used!
84+
85+
Some of this month's updates:
86+
87+
- started a new tool to explore 15-minute neighborhoods;
88+
- simpler process for [importing new cities][abstreet-new-cities];
89+
- large internal refactoring for the GUI and initializing the simulation;
90+
91+
[abstreet]: https://abstreet.org
92+
[abstreet-new-cities]: https://dabreegster.github.io/abstreet/howto/new_city.html
93+
94+
### FBSim
95+
96+
![FBSim initial version](fbsim.png)
97+
_FBSim running with default agents._
98+
99+
[FBSim] by [Ian Tayler] is a football/soccer game where you program the
100+
players using Rust and try to beat a team controlled by another AI.
101+
102+
You can follow the [tutorial] for implementing your own simple AI for FBSim,
103+
or you can look at the code directly, which can be found on the
104+
[github repo]. FBSim is at an early stage of development so issues and
105+
comments are welcome!
106+
107+
_Discussions:
108+
[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/jz4x1f/fbsim/)_
109+
110+
[FBSim]: https://github.com/IanTayler/fbsim
111+
[github repo]: https://github.com/IanTayler/fbsim
112+
[Ian Tayler]: https://iantayler.com
113+
[tutorial]: https://iantayler.com/2020/11/22/fbsim-football-playing-ai-agents-in-rust/
114+
66115
## Learning Material Updates
67116

117+
### [ECS scheduler thoughts, part 1]
118+
119+
[@Ratys] wrote an article about system schedulers in [ECS]. It contains
120+
an overview of the scheduling problem itself, covers the constraints a solution
121+
to it should consider, and dissects schedulers of [Bevy] engine and [`yaks`] as
122+
examples.
123+
124+
[ECS scheduler thoughts, part 1]: https://ratysz.github.io/article/scheduling-1/
125+
[@Ratys]: https://twitter.com/ratysz
126+
[ECS]: https://en.wikipedia.org/wiki/Entity_component_system
127+
[Bevy]: https://bevyengine.org/
128+
[`yaks`]: https://crates.io/crates/yaks
129+
130+
### [Chess game in Rust using Bevy]
131+
132+
![Tutorial result](bevy_chess.gif)
133+
_Chess gameplay_
134+
135+
[@guimcaballero] published a tutorial on using Bevy 0.3 to make a Chess clone in
136+
3d. Most of the concepts are explained along the way, from how to load meshes to
137+
how to select pieces and board squares, using [bevy_mod_picking].
138+
139+
[Chess game in Rust using Bevy]: https://caballerocoll.com/blog/bevy-chess-tutorial/
140+
[@guimcaballero]: https://twitter.com/guimcaballero
141+
[bevy_mod_picking]: https://github.com/aevyrie/bevy_mod_picking/
142+
143+
### [Learn Wgpu][learn-wgpu]
144+
145+
Development of new tutorial content has slowed down due to wgpu still being in
146+
development. [@sotrh] has committed to continue maintaining the project through
147+
the comming version changes, and plans to add more new content when the API
148+
solidifies. He with the help of other contributors such as GitHub user
149+
[@kanerogers] worked through a series of issues to polish the repository before
150+
the content freeze.
151+
In addition to that he added a [compute pipeline showcase][learn-wgpu-compute]
152+
and an [imgui showcase][learn-wgpu-imgui].
153+
154+
In other news @sotrh has started a [Patreon][@sotrh] to help fund research
155+
and development on the Learn Wgpu site as well as other wgpu related projects.
156+
157+
You can learn more [on the Learn Wgpu news page][learn-wgpu-news].
158+
159+
[learn-wgpu]: https://sotrh.github.io/learn-wgpu
160+
[learn-wgpu-compute]: https://sotrh.github.io/learn-wgpu/showcase/compute
161+
[learn-wgpu-imgui]: https://sotrh.github.io/learn-wgpu/showcase/imgui-demo
162+
[learn-wgpu-news]: https://sotrh.github.io/learn-wgpu/news
163+
[@sotrh]: https://patreon.com/sotrh
164+
[@kanerogers]: https://github.com/kanerogers
165+
68166
## Library & Tooling Updates
69167

168+
### [profiling]
169+
170+
This month, [profiling] was released on crates.io. This crate provides a very
171+
thin abstraction over instrumented profiling crates like `puffin`, `optick`,
172+
`tracy`, and `superluminal-perf`.
173+
174+
Mark up your code like this:
175+
176+
```rust
177+
#[profiling::function]
178+
fn some_function() {
179+
burn_time(5);
180+
181+
for i in 0..5 {
182+
profiling::scope!("Looped Operation");
183+
burn_time(1);
184+
}
185+
}
186+
```
187+
188+
And get visualizations like this (`optick` and `puffin` shown):
189+
190+
[![Screenshot of Optick Profiler](optick-small.png)](optick.jpeg)
191+
192+
[profiling]: https://crates.io/crates/profiling
193+
194+
### [rkyv]
195+
196+
[rkyv] is a zero-copy deserialization framework for Rust. It's similar to
197+
FlatBuffers and Cap'n Proto and can be used for data storage and messaging.
198+
199+
It has a handful of features that make it stand out:
200+
201+
- No schema restrictions
202+
- HashMap support out of the box
203+
- Trait object support through the [`rkyv_dyn`] crate
204+
- Validation through the [`bytecheck`] crate, suitable for untrusted and
205+
potentially malicious data
206+
- Safe mutable archives with pinning
207+
208+
Reddit user [vlmutolo] also made a [toy benchmark] comparing rkyv against serde
209+
and bincode and found that rkyv had promising initial numbers:
210+
211+
```text
212+
serialize (bincode): 89 ns/iter
213+
serialize (rkyv): 86 ns/iter
214+
215+
deserialize (bincode): 118 ns/iter
216+
deserialize (rkyv): 16 ns/iter
217+
```
218+
219+
A write-up on the [architecture and internals of rkyv] is also available.
220+
221+
_Discussions:
222+
[/r/rust (v0.1)](https://www.reddit.com/r/rust/comments/jss6h4/rkyv_a_zerocopy_deserialization_framework_for_rust/),
223+
[/r/rust (v0.2)](https://www.reddit.com/r/rust/comments/jx32e8/rkyv_02_and_bytecheck_validation_mutable_archives/)_
224+
225+
[rkyv]: https://github.com/djkoloski/rkyv
226+
[`rkyv_dyn`]: https://docs.rs/rkyv_dyn
227+
[`bytecheck`]: https://github.com/djkoloski/bytecheck
228+
[vlmutolo]: https://www.reddit.com/r/rust/comments/jx32e8/rkyv_02_and_bytecheck_validation_mutable_archives/gcyfoqc
229+
[toy benchmark]: https://git.sr.ht/~vlmutolo/rkyv-bench/tree/master/src/main.rs
230+
[architecture and internals of rkyv]: https://davidkoloski.me/blog/rkyv-architecture/
231+
232+
### [Kira]
233+
234+
[Kira] by [@tesselode] is an audio library designed to help create expressive
235+
audio for games. It aims to fill the holes in many game engines' built-in audio
236+
APIs with features for creating seamless music loops and scripting audio events.
237+
238+
v0.2.0 is coming out soon with an Arrangements feature for creating complex pieces
239+
out of individual sounds, tween easing, panning support, and workflow improvements.
240+
241+
[Kira]: https://github.com/tesselode/kira
242+
[@tesselode]: https://twitter.com/tesselode
243+
244+
_Discussions:
245+
[/r/rust](https://reddit.com/r/rust/comments/jxd9zz/announcing_kira_dynamic_audio_library_for_games/),
246+
[twitter](https://twitter.com/tesselode/status/1329559760111357954)_
247+
248+
### [gfx-rs] and [wgpu]
249+
250+
![gfx-picture](wgpu-big-picture.svg)
251+
252+
The gfx-rs team has published a post ["The Big Picture"][gfx-post] providing
253+
the overview of all projects in the works, and how they are connected to each other.
254+
255+
[wgpu] has moved from [gfx-extras] to the new [gpu-alloc] and [gpu-descriptor]
256+
libraries by [@zakarumych]. These are backend-agnostic, which allows `wgpu`
257+
to now depend on `gfx-hal` directly without intermediates. Patching [gfx-rs]
258+
will now be easier, without the need to release every little change.
259+
260+
Finally, all the latest [wgpu] code has landed into Gecko, and new
261+
features and fixes are implemented in Firefox. That allows it to run
262+
most of the updated [WebGPU samples][wgpu-samples].
263+
264+
[gfx-rs]: https://github.com/gfx-rs/gfx
265+
[wgpu]: https://github.com/gfx-rs/wgpu
266+
[gfx-post]: https://gfx-rs.github.io/2020/11/16/big-picture.html
267+
[gfx-extras]: https://github.com/gfx-rs/gfx-extras
268+
[@zakarumych]: https://github.com/zakarumych
269+
[gpu-alloc]: https://github.com/zakarumych/gpu-alloc
270+
[gpu-descriptor]: https://github.com/zakarumych/gpu-descriptor
271+
[wgpu-samples]: https://austineng.github.io/webgpu-samples
272+
273+
### [KAS] v0.6 and [KAS-text] v0.2
274+
275+
![KAS markdown](kas-markdown.png)
276+
_Markdown parsing demo_
277+
278+
[KAS] by [@dhardy] is a general purpose UI toolkit; its
279+
initial aim is "old school" desktop apps with good keyboard and touchscreen
280+
support. Unlike many modern immediate-mode UIs, KAS's widgets retain state,
281+
allowing minimal per-frame updates. KAS supports embedded WebGPU graphics now,
282+
and plans to support embedded usage and additional rendering systems.
283+
284+
[KAS-text] v0.2 saw a significant revision to its API, including support for
285+
rich text (bold, italic, underline, size and some layout improvements).
286+
[KAS] v0.6 pulls in those changes and adds a few fixes and QoL improvements.
287+
288+
[KAS]: https://github.com/kas-gui/kas
289+
[KAS-text]: https://github.com/kas-gui/kas-text
290+
[@dhardy]: https://github.com/dhardy
291+
292+
### [Tetra]
293+
294+
[Tetra] is a simple 2D game framework, inspired by XNA and Raylib. This month,
295+
versions 0.5.3 and 0.5.4 were released, with some frequently requested features:
296+
297+
- A `Mesh` API, allowing users to create arbitary 2D geometry
298+
- Experimental support for high-DPI rendering
299+
300+
There has also been numerous bug fixes and documentation improvements. For full
301+
details and a list of breaking changes, see the [changelog][tetra-changelog].
302+
303+
[tetra]: https://github.com/17cupsofcoffee/tetra
304+
[tetra-changelog]: https://github.com/17cupsofcoffee/tetra/blob/main/CHANGELOG.md
305+
306+
### [ogmo3]
307+
308+
[ogmo3] is a Rust crate for parsing projects and levels created with
309+
[Ogmo Editor 3]. This month, version 0.1 was released, adding serialization
310+
support, and helper methods for unpacking layer data. The [sample code][ogmo3-sample]
311+
has also been updated to show the new helpers in action.
312+
313+
[ogmo3]: https://github.com/17cupsofcoffee/ogmo3
314+
[Ogmo Editor 3]: https://ogmo-editor-3.github.io/
315+
[ogmo3-sample]: https://github.com/17cupsofcoffee/ogmo3/blob/main/examples/sample.rs
316+
317+
### [F1 Telemetry TUI]
318+
319+
![f1-telemetry-tui](f1-tui.gif)
320+
321+
[F1 Telemetry TUI] by [@aldidana] is a terminal telemetry tool for F1 video games.
322+
323+
_Discussions:
324+
[Twitter](https://twitter.com/aldidana/status/1323185465319596032)_
325+
326+
[F1 Telemetry TUI]: https://github.com/aldidana/f1-telemetry-tui
327+
[@aldidana]: https://github.com/aldidana
328+
70329
### [bevmnist][bevmnist-itch.io]
71330

72331
![demo of running inferences for all digits](bevmnist.gif)
127 KB
Loading
141 KB
Loading
391 KB
Loading

content/posts/newsletter-016/wgpu-big-picture.svg

Lines changed: 4 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)