+++ title = "This Month in Rust GameDev #52 - June 2024" transparent = true date = 2024-07-03 draft = true +++
Welcome to the 52th 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!
- Announcements
- Game Updates
- Engine Updates
- Learning Material Updates
- Tooling Updates
- Library Updates
- Popular Workgroup Issues in GitHub
- Other News
- Meeting Minutes
- Discussions
- Requests for Contribution
- Jobs
- Bonus
- Future news
{{ embed_video(type="video/mp4", src="untitled-pixel-wizards-game.mp4", caption="Enemies now perceive, pursue and attack.. and occasionally get burned to death.") }}
Enemies now perceive, pursue and attack.. and occasionally get burned to death.
Untitled Pixel Wizards Game is a local-multiplayer Noita-like platformer about killing baddies using spells powered by pixel physics. This month was focused on juicing up said baddies:
- Pew Pew Pew: baddies learned to shoot at players.
- Hot Pursuit: baddies also learned to chase players! (They're real smart.)
- Status Update: physically-simulated pixels learn to burn & poison players & baddies.
- Ragdolls: corpses of dead baddies learn to tumble around all realistic-like.
- Fiddling with Fire: the fire mechanic figures out how to better burn baddies.
Gunbug is a 2D online co-op horde survival shoot'em up game.
Gunbug focuses on shooting lots of enemies with lots of guns. It can be played solo or with up to 10 players.
It is built with the Bevy game engine. It uses bevy_rapier for ray casting, bevy_kira_audio for audio, and renet for networking. iOS and MacOS versions are built with xbuild.
You can wishlist the game on Steam. Playtests start in the upcoming months. iOS and Android builds already work, but store pages don't exist yet.
godot-rust (GitHub, Discord, Mastodon, Twitter) by @Bromeon provides Rust bindings for the Godot engine.
After quite a bit of development on GitHub, the Godot 4 bindings are now available on crates.io --
you can immediately get started using
cargo add godot
. Furthermore, the GDExtension API level can now be specified with a Cargo feature, e.g. api-4-1
.
The ScriptInstance
API has matured a lot over the past months. This feature allows users to write Godot scripts in Rust, which can be
attached to nodes (just like GDScript). Scripts allow for quickly attaching/detaching functionality in a scene.
The overall API has seen several consistency improvements: reorganized modules, self
/&self
receivers on geometric types,
easier element access for Array
/Dictionary
/Packed*Array
. The library has also benefited from Rust's
#[diagnostic::on_unimplemented]
to improve user-facing error messages.
Discussions: /r/rust, Mastodon, X
See also the devlog article.
Rusty Playdate (GitHub, Mastodon) by @boozook is the large set of crates with bindings, toolset for the full cycle of creating games for the Playdate handheld console.
Big part of the Rusty Playdate project is the cargo-playdate
tool (Crates.io, GitHub)
that helps to build games for Playdate hardware or a simulator. It works as a cargo-plugin as well as standalone.
The tool
- manages the compilation of your program,
- builds assets for the crate and its dependencies,
- generates a manifest,
- and assembles it all into a bundle that runs on the device or a simulator.
In this month cargo-playdate
v0.5 has been released and received massive refactoring, bugfixes and new features:
- support of cargo's auto-targets (targets such as
bin
orexample
that aren't declared in the Cargo.toml) - target-specific package-info inheritance from the main package-info
package.metadata.playdate.options
inheritance from theworkspace.metadata
- incremental builds now work as expected - fixed an old problem where the tool corrupts cargo's cache, which triggered full rebuild
The register decoder in the pd-symbolize-crashlog
was also updated.
It now properly decodes all available registers such as
PSR,
CFSR, and
HSFR.
egui_ratatui by gold-silver-copper is an egui widget that is also a ratatui backend. It allows you to create Terminal User Interfaces (TUIs) inside egui. You can try out the web demo to see it in action.
The current release is the product of months of iteration, and is now "stable". It is Wasm compatible and engine agnostic: use it in Bevy, *Quad, eframe, pixels, etc.
egui_ratatui
is currently being used for the development of a game and
educational software at a startup with no issues so far.
Metalmancy are creating custom and configurable arcade machines. Their flagship game Thetawave is coded in Rust.
Hyelim of Framework interviewed Carlo and Joanna on their games and arcade machines at OpenSauce.
See all meeting issues including full text notes or join the next meeting.
Editing this newsletter wouldn't be possible without your contributions. Thanks to everyone who helped us this month!
If you want something mentioned in the next newsletter, send us a pull request.
You can also get an early look at pending issues for the next newsletter.
That's all news for today, thanks for reading!
Also, subscribe to our socials if you want to receive fresh news!
- X/Twitter: @rust_gamedev
- Mastodon: @rust_gamedev
- Reddit: /r/rust_gamedev