Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 2cb3186

Browse filesBrowse files
authored
Merge branch 'source' into bevmnist
2 parents 1d21968 + 19741f2 commit 2cb3186
Copy full SHA for 2cb3186

File tree

9 files changed

+263
-0
lines changed
Filter options

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

Copy file name to clipboardExpand all lines: content/posts/newsletter-016/index.md
+259Lines 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

Copy file name to clipboardExpand all lines: content/posts/newsletter-016/wgpu-big-picture.svg
+4Lines changed: 4 additions & 0 deletions
Loading

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.