+++ title = "This Month in Rust GameDev #20 - March 2021" date = 2021-04-06 transparent = true draft = true +++
Welcome to the 20th issue of the Rust GameDev Workgroup's monthly newsletter. Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. These goals are well-aligned with game development. We hope to build an inviting ecosystem for anyone wishing to use Rust in their development process! Want to get involved? Join the Rust GameDev working group!
You can follow the newsletter creation process by watching the coordination issues. Want something mentioned in the next newsletter? Send us a pull request. Feel free to send PRs about your own projects!
- Game Updates
- Learning Material Updates
- Engine Updates
- Library & Tooling Updates
- Popular Workgroup Issues in Github
- Meeting Minutes
- Requests for Contribution
- Jobs
- Bonus
Emerald by @bombfuse is a 2D game engine focused on being as portable as possible.
The ultimate goal of Emerald is to be a fully featured engine that you can slap onto any device with relative ease. It's currently able to run on WASM, Raspberry Pi, Mac, Windows, and Linux thanks to miniquad.
Features:
New Updates:
- Rendering to textures
- WASM game sample
Voxel Bunny rendering with conservative rasterization
wgpu is a WebGPU implementation in Rust. It is safe, efficient, and portable: can target both native (Vulkan/D3D/Metal) and the Web.
Most progress in April was focused around WGSL shaders and validation. naga has seen a lot of improvements in the SPIR-V and WGSL parsing, as well as backend code generation. Most importantly, it now fully validates both statements and expressions. No more accidental foot shots from adding vec2 and vec3 in the shaders!
The last and the biggest (in terms of shader complexity) example - "water" has been successfully ported to WGSL 🎉.
A small addition to our native-only features - conservative rasterization feature - was added by @wumpf and demonstrated on a voxel bunny 🐇
Finally, there is a blog post on Mozilla graphics team blog about the progress using wgpu in Gecko.
Discussions: /r/rust_gamedev
WhatTheFrame by @JMS55 is a frame-based cpu profiler crate along with a GTK (gtk4-rs) based GUI.
This project aims to answer the question: Which frames of my game are slow, and why?
It aims to be simple to use, consisting of only 3 functions: Call let _r = Profiler::new_frame()
at the start of each frame, let _r = Profiler::new_task("task_name")
whenever you want to profile
a task, and finally Profiler::end_profiling()
once at the end.
You can then open the resulting .wtf
profile in the GUI and analyze the results.
This month was spent designing and implementing both the GUI and profiler crate. The core functionality of both programs are complete, and all that remains is cleanup, tweaks, optimization, and finally packaging the GUI up.
See all meeting issues including full text notes or join the next meeting.
That's all news for today, thanks for reading!
Want something mentioned in the next newsletter? Send us a pull request.
Also, subscribe to @rust_gamedev on Twitter or /r/rust_gamedev subreddit if you want to receive fresh news!