+++ title = "This Month in Rust GameDev #49 - August 2023" transparent = true date = 2023-09-16 draft = true +++
Welcome to the 49th 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
- Other News
- Popular Workgroup Issues in Github
- Discussions
- Requests for Contribution
- Jobs
Graviton - The Great Sand Simulator (Discord, Youtube) by @hakolao is a falling sand simulator in which you can define your own interactive sand rules.
Continuing the developer's exploration into GPU sand simulation the app has been recently taken to another level with a complete rewrite. Now, with some training, you can program your own rules for the sand. Many example sands are provided from acid and blood to the classic Game of Life.
Recent updates include:
- Customizable sand with programmable rules.
- Shape & Mirror Draw Modes.
- New UI, graphics and render modes.
- Gif and Image export.
- Image import.
You can support the development by purchasing or wishlisting on Steam.
Tunnet (Steam, itch.io) is an upcoming short puzzle/exploration game about digging tunnels and building computer networks.
In August, a new version of the demo build has been released. Here are the most notable updates:
- The game is now better optimized to run smoothly on the Steam Deck.
- Some of the textures have been revamped and are now slightly more detailed.
- The animations of the character portraits have been improved.
- Several minor quality of life improvements like the ability to sprint have been made.
- A basic egui-based crash reporter will now be displayed when the game process ends unexpectedly.
Oort (GitHub, Discord) by @rlane is a programming game where you write Rust code to control space ships in combat against other players. Your code needs to manage the thrusters, guns, missiles, comms, and radar of each ship in your fleet. There's a series of tutorials where you can solve key problems one by one, such as leading moving targets or missile guidance. The game runs in your browser via WebAssembly.
Oort has started running weekly tournaments and the AIs have gotten more and more sophisticated each time. Check out this recent tournament writeup where the top players discuss their strategies.
Discussions: r/rust
Ars Militaris (GitHub, Discord, Twitter, Reddit) is a turn-based tactics game set in the ancient Rome era, being developed with Bevy.
August saw some nice developments that occurred in both the digital and board game version of Ars Militaris. You can read about them in issues VI through IX of This Week in Ars Militaris (VI, VII, VIII, IX).
The most noticeable improvements in the digital version were the updating of the multiplayer aspect to be on par with the single-player aspect, and then also the development of the Ars Militaris Lobby.
In the board game version, development started on a new scenario that will serve as our main product for the Ars Militaris board game version, and much playtesting with very positive results occurred (Ars Militaris Event III) and (Ars Militaris Event IV).
But then, the result of a somewhat intensive 3-month sprint left the Lead Developer exhausted which brought the project to a temporary pause.
goku (Discord) by @ladroid is a new 2D Rust game engine backed by SDL2. It's currently compatible with Windows and WASM and features multi-language (Spa, Fra, Ger, Jpn) docs.
Quick Peek:
- Sprite sheets loading and animation support.
- Basic particle effects.
- Point, spot, and ambient lights.
- UI layer with ready widgets like buttons, checkboxes, and sliders.
- Audio support backed by SDL2 Mixer.
- Gamepad input support.
- Tile system and JSON format for describing scenes.
- Built-in support for parallax backgrounds.
- Simple timing and frame management utils.
- Behavior tree AIs.
Discussions: /r/rust
@chrisbiscardi published a video covering P2P multiplayer games with rollback networking and physics. This video dives into what makes it difficult and what parts work out of the box before identifying better potential paths to take in the future.
Discussions: Mastodon
@Nikl published two blog posts on the topic of mobile development using Bevy. The first post concentrates on getting builds ready for the Apple and Google App stores. It outlines how to use the tool x-build to create Android App bundles and some required changes to get iOS builds accepted by the App store.
A second post documents how to set up and configure a GitHub workflow to automate releases of a Bevy application to the Google Play Store.
Space editor is an editor designed for Bevy engine that simplifies level and object template creation. Here are its key features:
- Intuitive UI is built on top of bevy-inspector-egui and egui-gizmo to easy objects manipulate.
- It supports the bevy_xpbd physics library, making customizing collider positions faster than ever.
- Run your levels directly from the editor. This enables quick and efficient development iteration.
- Save your levels and object templates in the standard Bevy scene format and spawn in game with just one line of code.
- Many custom structures that allow to customize saved scenes equally conveniently, both via gui and directly editing the saved text file.
The Github project is free for use and open to contribute for everyone, be it with suggestions, bugs or PRs.
Dexterous Developer by @lee-orr is an experimental hot-reload system for the Bevy game engine. Features:
- Define the reloadable areas of your game explicitly - which can include systems, components, and resources (with some limitations).
- Reset resources to a default or pre-determined value upon reload.
- Serialize/deserialize your reloadable resources & components, allowing you to evolve their schemas so long as they are compatible with the de-serializer.
- Mark entities to get removed on hot reload.
- Run systems after hot-reload.
- Create functions to set-up & tear down upon either entering/exiting a state or on hot reload.
- Only includes any hot reload capacity in your build when you explicitly enable it - such as by using the CLI launcher.
- Cross-platform/cross-device hot reload - run a "hot reload server" on a dev environment, and execute the application elsewhere.
The library is quite new and currently known issues include: mobile/WASM support and the need to pre-define events&states.
- Other game updates:
- Tribes got multiplayer support, new art and economics rework.
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!