+++ title = "This Month in Rust GameDev #50 - April 2024" transparent = true date = 2024-05-03 draft = false +++
Welcome to the 50th 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
- Library Updates
- Other News
- Discussions
Please fill out this survey before skipping this section! More info below!
Hey everyone, it's been a while! As you've certainly noticed, the newsletter was on a hiatus for a while. The reason was mostly maintainer burnout, which is also why the newsletter of August 2023 was not published until a few days ago.
We're back now though! The community member Jan Hohenheim (@janhohenheim) has taken up the main responsibility for reviving the newsletter. This includes making changes requested by the community, and making sure the format is sustainable for the long term.
Thierry Berger (@Vrixyz), who has also decided to help with the project, has come up with a new monthly schedule that we will try out:
- 3rd of the month: Newsletter starts. A call for submissions is made on social media and community Discord servers interested in receiving it. At the same time, last month's newsletter is published.
- 3rd to 28th of the month: submissions are collected and the newsletter is written.
- 28th of the month: Submissions are closed. New submissions go into the next month's newsletter.
- 3rd of the next month: The newsletter is published. Any submissions not edited in time will be moved to the next month or removed entirely.
This more strict schedule should help with the issue of late entries and reduce the pressure of editing by having a dedicated time for it with no incoming submissions. The goal is to be more consistent and reliable in our publishing schedule.
This restructuring is also a good time to improve the content of the newsletter. We've got some community feedback on our Discord already and would like to hear more from you. It would be great if you could fill out this survey to let us know how we can improve the newsletter going forward.
Based on feedback we've already gotten, the steps for next months are:
- Add an email subscription option to the newsletter
- Setup a system for how to edit entries that are not ready before the newsletter ships. We are currently looking into either hiring a part-time editor, using generative AI to add a few sentences where needed, or simply removing these entries.
Additionally, we will be evaluating the survey results in the next newsletter, so stay tuned for that.
That's all for now. Have fun reading!
Way of Rhea just got a release date: it will be coming to Steam on May 20th, 2024!
Way of Rhea (Steam) is a color based puzzle game with difficult puzzles, but forgiving mechanics being developed by @masonremaley in a custom engine.
You can support development by wishlisting Way of Rhea on Steam, or signing up for the mailing list.
The most important updates are:
- A closed beta began
- All characters now have voices
- Various speedrunning features were added
For the full changelog, see the release notes.
SM64JSARCHIVE is an actively maintained fork of sm64js: a decompilation project of Super Mario 64 to JavaScript. The code is open-sourced on GitHub.
The backend server, which is written in Rust, has been finally been able to start after 10 long months and is now live at https://mmo.sm64jsarchive.com
A successful stress test for the MMO feature was run on 2024-04-10.
Open Combat (GitHub, Discord) is a real-time tactical game which takes place during World War II.
The basic game logic and HUD are now complete, and the high definition map for the demo is finished.
Some things are missing, like high definition assets for soldiers or minimal AI for opponents. But the demo is playableand the team would love to hear your feedback!
Times of Progress (Steam, Twitter/X, Mastodon) is an upcoming city builder game set during the industrial revolution.
During the month of April, they improved performance by refactoring the orders system and added lots of UI widgets.
The demo is not available yet but interested players can sign up for the upcoming closed beta by joining the newsletter.
Monk Tower (itch.io, Google Play, Github) is a tiny coffee-break roguelike game, intended for short runs (ca. 15mins).
The gameplay is quite distilled and revolves mostly around resource management. The player has limited inventory capacity and the weapons get damaged after each use. There are 20 randomly generated levels to beat.
It is available on desktop (Windows / Linux), Android and Web (mobile friendly). The game's source code also comes with a custom WGPU-based 2D framework.
Discussions: (/r/roguelikes)
You are Merlin (Web Game, GitHub - Rust/CLI, GitHub - WASM) by @hseager is a text adventure game that compiles to both CLI and WebAssembly.
This initial version features a main quest, side quests, items and a boss fight. Players can choose their favourite visual theme such as Zelda, Warcraft and Fallout. There is also mobile support.
Although fairly simple, this first version provides a good foundation for building more features in later updates.
Discussions: (/r/rust_gamedev)
Jumpy: Machine gun and Periscope
Jumpy (GitHub, Discord, Twitter) by Spicy Lobster is a pixel-style, tactical 2D shooter with a fishy theme.
This month the base functionalities of round scoring and map transitions have been implemented. New weapons such as the Blunderbuss, Periscope, and Machine Gun are ready for fish on fish combat.
Jumpy is now featuring corpse physics and a "ragdoll" button to send your Fish flopping about.
On the treasure map for the near future is improving UX and new player experience, polish and improvements on match scoring / round transitions, and more awesome weapons.
Bottomless-Pit is a 2d game engine written with WGPU that has been around for a year, which can be found on crates.io and GitHub. Very recently a 2d camera was added as well as WASM and web support. Current development is being focused on stability and QoL changes like texture sampling options and improved input. You can checkout several engine examples on the web. Since the engine is in its infancy, its developer calls for developers to use it and give the engine some feedback.
Current features are:
- Custom Shader Support
- Basic rendering
- Text rendering
- Input and window event handling
@maciekglowka has recently shared some thoughts [on their blog][android-games-blog about building Rust games for Android. Rather than a step-by-step guide, it is a collection of issues one can possibly encounter when targeting Android.
Topics mentioned:
- 'Window' creation (via winit)
- Android app's lifecycle vs. the WGPU surface creation
- User data storage
- System UI hiding via jni and Android API
- Building AAB files to meet Google Play requirements
Chris Biscardi was at RustNation UK recently and gave talk on Bevy's Rusty ergonomics titled Bevy: A case study in ergonomic Rust. In their own words:
There's at least two, if not three, talks worth of material around how Bevy progressively discloses complexity across multiple "stacks" of APIs; and the work done so far is very impressive in terms of how it all fits together especially as a large-and-growing OSS project.
TODO: https://machinewords.hashnode.dev/reactivity-in-bevy-from-the-bottom-up-part-1
TODO: https://docs.rs/joltc-sys/0.1.1+Jolt-5.0.0/joltc_sys/
Hexx, the popular crate for hexagonal tools, has released version 0.17. This release has a strong focus on performance:
- Large performance improvement on various computations like rings and wedges
- Add support for optimized storage for hexagonal and rombus shaped maps
- Added support for rectiline path
And utility:
- Added a 13th example showcasing all natively supported shapes
- Removed confusing items
lightyear_website is a comprehensive networking library for bevy to make multiplayer games. It comes with multiple types of transports (WebTransport, WebSocket, UDP, etc.) and supports replication techniques like client-side prediction, server interpolation, interest management and more! Check out the examples!
The latest release, 0.13, brings two big new features:
- Steam support: you can now use the Steamworks SDK as your transport layer, which lets you use the Valve network! Note that lightyear supports running multiple transports in parallel, so it's possible to have cross-play between steam and non-steam users.
- Listen-server mode: it is now possible to run a server and a client in the same process/bevy app. This can be useful to avoid the costs of a dedicated server, or to have a similar codebase between singleplayer and multiplayer.
BulletPrespawn2.mov
Alice I. Cecile of the Bevy Foundation would like to collect community feedback on game development in Rust. Please fill out her survey!
LogLog games has published a very well-written blog post about reasons people might have to leave Rust gamedev. It talks about shortcomings in Rust as a language in general and as a game development tool in particular. Some insights into the limitations of ECS are also provided. Some interesting community discussions have been sparked by this post:
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!