Welcome to the 46th 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 

Rusty Jam #3 

find ferris screenshot: a cart with sweets, ferris, flowers, etc
Find Ferris

Rusty Jam #3 ran from May 21st 2023 to May 29th 2023 and the theme was “Hidden in plain sight”. The jam had a few but high-quality and awesome games.

Here’re the winners:

We wish all the participants good luck in their future endeavors! The RustyJam will be back, so stay tuned on the Rusty Jam Discord for future updates!

Rust GameDev Meetup #27 

youtube preview: “rerun fir gamedev” slide

The 27th Rust Gamedev Meetup took place in May. You can watch the recording of the meetup here on Youtube.

The schedule:

The meetups take place on the second Saturday of every month via the Rust Gamedev Discord server and are also streamed on Twitch.

Game Updates 

Digital Extinction 

Building Placement in Digital Extinction
Building Placement in Digital Extinction

Digital Extinction (GitHub, Discord, Reddit) by @Indy2222 is a 3D real-time strategy game made with Bevy.

The most notable updates are:

  • poles at unit manufacturing delivery locations for selected factories,
  • pausing unit manufacturing when the spawn location is occupied,
  • IME support for text boxes,
  • a lot of progress on multiplayer networking,
  • logging to file and other logging improvements.

Support for multiplayer is a technologically complex problem to solve and it is the last major missing feature before the proof-of-concept version can be released. Therefore, a lot of effort currently goes in this direction.

The game is slowly gaining traction in the development community. Check out our new contributors here.

See gameplay screen recordings on YouTube.

More detailed monthly updates are available here (May) and here (June).

Tunnet 

Tunnet screenshot: robots queueing outside nightclub
Connecting the DJ set to the network

Tunnet (Steam, Itch.io) is a short puzzle/exploration game where the player digs tunnels and connects computers together.

As a network engineer, the player will also have to respond to security incidents. In May, this game mechanic has been illustrated in a devlog and a preview of the new basic water simulation has been posted.

Fish Folk’s Kickstarter 

happy fish, exploding bombs, “thank you!” written in the central explosion and “just founded” in the bottom

This month Fish Folk (itch.io, Discord) has launched their Kickstarter campaign that has already reached its funding goal!

Even though the basic sum is collected, the campaign still continues to get more funds for the stretch goals:

The plan for how to allocate funds that exceed our €15k goal is very simple: For every additional €1,000 pledged to our campaign, we will prototype another fishy game archetype for our evergrowing bundle. Once our funding run concludes we will poll our backers on which game(s) you would like us to prioritize.

Discussions: /r/rust

Escape Room AI 

top-down view on the game world: wallks, traps, enemies, doors, etc
AI trying to escape a room

escape-ai by @bones-ai is a Rust-based implementation of a genetic algorithm and reinforcement learning simulation. Its purpose is to train an AI named Zoe to escape a room it’s enclosed in. The simulation is built using the Macroquad library.

The YouTube video demonstrates 1000 AI bots learning how to escape five rooms of increasing difficulty.

Discussions: /r/rust_gamedev

MEANWHILE IN SECTOR 80 

MS80 Weekly Update Number One

MEANWHILE IN SECTOR 80 (Discord, mailing list) by Second Half Games is an upcoming third person action-engineering space game.

Second Half Games released the first update video for the game. It includes an introduction to the studio, an overview of the game, and some of the recent progress towards the first public demo.

Tiny Glade 

editing of windows on a cute cottage

Tiny Glade (Twitter) is a small relaxing game about doodling castles.

This month was all about turning previous experiments into reality. The coloring and window prototypes are now proper features, have dedicated UI, and play well with other building tools.

The devs have also been toying with real-time global illumination that could run on potato graphics cards.

Turtle Time 

game screenshot: pixel art tile graphics

Turtle Time by @mikeder is a WIP p2p multiplayer turtle game being made using Bevy, ggrs, and matchbox.

This month the first devlog was released:

  • Quickly starting a project using bevy_game_template.
  • Converting single player systems to multiplayer ones.
  • Determinism, random spawns, and timers.

DAshmoRE 

instructions screen: game controls instructions

DAshmoRE is a fast-paced arcade mobile game written using Bevy.

Get ready for a fast-paced and challenging arcade game where the only way to move is by skillfully dashing past enemies. With a single tap, you must navigate through a maze of enemies that move at different speeds and patterns. Can you master the art of dashing and achieve the highest score? Test your skills and reflexes in this thrilling arcade game.

The game’s features include:

  • Single-tap controls and WASM build suited for playing on mobile phones.
  • Power-ups like player repellent forcefields and slow-motion abilities.
  • Integrated highscore system.

Discussions: /r/rust_gamedev

NANOVOID 

one big space ship shooting lots of missles at another
Missiles targeting individual parts on enemy ships

NANOVOID by LogLogGames is a WIP 2D tactical space shooter that puts you in command of your own modular spaceship: engage in intense, physics-driven battles, strategize with ship customization, and outsmart your enemies.

This month the first devlog was released and it mostly was dedicated to experiments with Lua scripting.

Other updates include:

Discussions: /r/rust_gamedev

Bevy Garage 

YouTube preview: a track with a racing car on it and Alexi in the corner of the screen

Bevy Garage by @alexichepura is a game-like car simulation playground built with Bevy, rapier, and dfdx neural network.

Alexi released two introductory videos about the project:

You can also try out the WASM version of the simulation here.

Engine Updates 

stereokit-rs 

Demo of drawing with your hands in 3D space

stereokit-rs (Discord) are bindings to StereoKit - an easy-to-use Mixed Realty engine, designed for creating VR, AR, and XR experiences. While StereoKit is primarily intended to be used from C#, all core functionality is implemented in native code, and a C compatible header file is also available and was used to create Rust bindings.

StereoKit’s features include:

  • Wide platform support: HoloLens 2, Oculus Quest, Windows Mixed Reality, Oculus Desktop, SteamVR, Varjo, Monado (Linux), and eventually everywhere OpenXR is.
  • Mixed Reality inputs like hands and eyes are trivial to access.
  • Easy and powerful UI and interactions.
  • Lots of model and texture formats are supported out of the box.
  • Flexible shader/material system with built-in PBR.
  • Performance-by-default instanced render pipeline.
  • Flat screen MR simulator with input emulation for easy development.
  • Runtime asset loading and cross-platform file picking.
  • Physics.

You can use a cargo-generate template for a quick start and the devs invite to join their Discord server if you have any questions.

Discussions: /r/rust

hotline 

screenshots from hotline’s tests

hotline (Blog, Twitter, Twitch) is a modern, high-performance, hot-reload graphics engine that aims to provide low-level access to modern graphics API features, while at the same time providing high-level ergonomic optimizations.

The recent updates include:

  • Tests of graphics functionality and lots of new examples,
  • GPU Resources cleanup improvements,
  • explicit API fore resource heaps,
  • better bindless and bindful rendering models,
  • GPU-driven ECS experiments.

Learning Material Updates 

Building a Platformer with Bevy #1 

a scheme showing an agent jumping from pillar to pillar

@affanshahid published the first part of a new tutorial series on building a simple 2D platformer using Bevy. The series is aimed at newcomers to the world of game development and explores common game development concepts.

Discussions: /r/rust

Game Development In Rust: Making A Strategy Game 

Game Development In Rust: Making A Strategy Game
Game Development In Rust: Making A Strategy Game

@srodrigo published the first three parts of a strategy game in Bevy series. The series is aimed at developers with some experience in Rust who want to dive into game development.

How to Migrate Your Bevy Projects with (Semi-)Automation 

Logos with ast-grep and bevy

@HerringtonDarkholme published an article about how to make Bevy migration easier by using git, cargo and ast-grep. The article uses the utility AI library big-brain as an example to illustrate bumping the Bevy version from 0.9 to 0.10 and covers four big steps: making a clean git branch, updating the dependencies, running fix commands, and fixing failing tests. By using semi-automation tools, you can migrate your Bevy projects with less hassle and more confidence.

Discussions: /r/rust

Tooling Updates 

Spicy Launcher 

demo: switching between Jumpy/Punchy and choosing a verion

Spicy Launcher by @orhun is a cross-platform launcher for playing Spicy Lobster games. Supports both command-line and Tauri-based graphical interface.

Currently supported games: Fish Folk: Jumpy, Fish Folk: Punchy, and recently added Thetawave.

Planned features include auto updating games and mods management.

Rerun 

Rerun showing 3D object detections in a 2D view

Rerun (Discord, GitHub) is an open-source SDK for logging complex visual data paired with a visualizer for exploring that data over time. While its primary focus is on robotics and computer vision, it can be useful for all kinds of rapid prototyping & algorithm development.

Rerun was shown at the Rust GameDev meetup, watch the recording here.

v0.6.0 is out now! A few of the biggest highlights:

  • You can now show 3D objects in 2D views connected by Pinhole transforms.
  • You can quickly view images and meshes with rerun mesh.obj image.png.
  • The correct to install the rerun binary is now cargo install rerun-cli.
  • native_viewer is now an opt-in feature of the rerun library, leading to faster compilation times.
  • SDK log calls are now batched on the wire, saving CPU time and bandwidth.
  • Experimental WebGPU support.

There’s a growing community on Discord waiting for you to join in case you have any questions, comments or just want to follow the latest development. The GitHub project is MIT/Apache licensed and open to contribute for everyone, be it with suggestions, bugs or PRs.

Smashline 

Smashline is plugin and a Rust crate aimed at enhancing Smash modding, more specifically focusing on script mods. Its main purpose is to enable the replacement of different types of scripts found in Super Smash Bros. Ultimate, while also offering additional utilities for creating what is known as “code mods” within the modding community.

The Smashline wiki provides comprehensive explanations of its core features.

Ruffle 

Ruffle dekstop app

Ruffle is an open-source Flash Player emulator written in Rust. It brings Flash Player back to life, running smoothly on all modern systems and web browsers.

This month’s updates include:

  • Bunch of new fan-favorite AS3 (ActionScript 3)games are now playable.
  • Many graphics drawing methods have been fixed and implemented.
  • XML support has progressed.
  • AS2 (ActionScript 2) has seen progress as well: Additional XML methods have been implemented.
  • The Ruffle desktop app now has an interface.
  • Built-in save manager has been added.
  • FLV support in progress, Flash content with external video files will be supported soon.

Library Updates 

blit 

blit example: blitting the full sprite

blit is a GPL licensed library for quickly blitting 2D images on a pixel buffer. After a long stale period development has resumed quite a bit in the last couple of months.

The previous big release, v0.7.0, saw a big improvement in performance and API ergonomics. It also introduced interactive WebAssembly examples which can be seen here.

The latest big release, v0.8.0, is a complete rewrite of the quite old and admittendly outdated API. A focus has been put on both ergonomics and performance. There’s now many ways of drawing a subsection, tiling, masking and creating repeating slices of an image on a pixel buffer.

seldom_state 

seldom_state is a Bevy plugin that adds a StateMachine component that you can add to your entities. The state machine will change the entity’s components based on states, triggers, and transitions that you define. It’s useful for player controllers, animations, simple AI, etc.

This month, seldom_state 0.6 was released:

  • Triggers don’t need to be registered!
  • MachineState and Trigger no longer require Reflect.
  • StateMachine’s trans_builder accepts the current state in the closure, so you have dataflow between states!
  • You may add and remove state components manually.
  • More versatile on_enter and on_exit events.
  • Trigger combinators not, and, and or.
  • Transitions have priority in the order they are added.
  • You can use EventReader, Local, etc in your triggers!
  • Added an EventTrigger<E> that triggers on an event.
  • StateMachine’s set_trans_logging sets whether to log state transitions
  • And more!

Thanks to Sera for coauthoring this update!

Kira 

Kira (GitHub) by @tesselode is a backend-agnostic library to create expressive audio for games.

Kira v0.8 adds support for spatial audio, global modulation sources for easier and more powerful parameter tweening, compressor and EQ effects, and more powerful playback and loop region settings.

Discussions: /r/rust

Other News 

  • Other game updates:
  • Other engine updates:
  • Other learning material updates:
  • Other library updates:
    • grid is a simple library that provides an easy to use and fast 2D grid data structure.
    • hexx v0.6 brings a bunch of new algorithms for hexagonal maps and overall API improvements.
    • faer 0.9 brings the non hermitian eigenvalue decomposition for real and complex matrices and also comes with the release of qd, a library for extended precision floating point arithmetic with faer compatibility.
    • quinn v0.10 introduces MTU discovery, updates to the latest version of rustls, improves platform support, and introduces a variety of new features, performance improvements, and bugfixes
    • funutd is a 3D procedural texture library running on the CPU that features different tiling modes, an endless supply of proc-generated self-describing volumetric textures, Palette generation with Okhsv and Okhsl color spaces, and an interactive texture explorer.
    • bevy_diagnostics_explorer is a plugin allowing to visualize diagnostics (tracing spans) in VSCode.
    • pxo is a library for working with Pixelorama files.
    • frug is a simple graphics library that was announced this month along with some docs.
    • egui v0.22 brings support for application icons on Windows and Mac, better dark/light mode detection, and error reporting on the web.
    • egui_tiles is a tiling layout engine for egui with drag-and-drop and resizing.

Discussions 

Requests for Contribution 


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!

Discuss this post on: /r/rust_gamedev, Mastodon, Twitter, Discord.