@@ -32,6 +32,7 @@ Feel free to send PRs about your own projects!
3232
3333Table 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:
6162If 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 )
0 commit comments