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

Rust GameDev Meetup 

Gamedev meetup poster

The 26th Rust Gamedev Meetup took place in March. You can watch the recording of the meetup here on Youtube. The meetups take place on the second Saturday of every month via the Rust Gamedev Discord server and are also streamed on Twitch.

Bevy Jam 3 Results 

list of winners

Voting on the Bevy Jam 3 has finished! It was a week-long event, where the goal was to make a game in Bevy Engine, the free and open-source game engine built in Rust. The theme was ‘Side Effects’.

The jam had a solid turnout with 353 participants, 78 submissions, and 2,158 ratings! A lot of the submissions have a web build so it’s easy to try them out yourself.

The full results can be found on itch.io.

Rusty Jam 3 

Another Rusty Jam starts on May 21st!

It’s a great chance to try out some new Rusty tech, form a team of like-minded rustaceans, and feel what a full cycle of making a game in Rust feels like in miniature!

This jam focuses more on using Rust than anything else. That means you aren’t restricted on your design, music, or graphics, as long as you use Rust to make it!

The optional-to-use theme for the jam is going to be announced in the jam’s Discord and pinned in the community section. While you’re waiting for the theme, you can start looking for a team in the looking-for-team Discord channel. If you want solo though, that’s fine too.

Game Updates 

CyberGate 

hundreds of npcs smoothly interpolating hundreds of npcs smoothly interpolating

CyberGate (YouTube, Discord), an ambitious multiplayer project in development by CyberSoul, aims to invite players into a constantly evolving universe. Harnessing the power of procedural generation and artificial intelligence, this work-in-progress aspires to provide an engaging experience that emphasizes exploration and discovery across its diverse worlds.

The latest updates to CyberGate include:

  • Networking Interpolation version 2: increased reliability over frame rate changes, improved accuracy of object motion and detail by ~20%, and objects update 12-45 milliseconds faster.
  • Server compilation was drastically simplified (100x faster).
  • Improved browser server process, to have more consistent behavior.
  • Improved mouse lock on browsers.
  • Simplified code related to state synchronization.
  • Significant gameplay changes and bug fixes.

They are currently working on universe generation alghorithms for version 8.0. Participate by joining the Discord server.

Jumpy 

Online Matchmaking Menu Page Online Matchmaking

Jumpy (GitHub, Discord, Twitter) by Spicy Lobster is a pixel-style, tactical 2D shooter with a fishy theme.

In the last month, Jumpy released v0.7.0 with support for online and LAN network games! Networking has been a long time coming, with many architecture decisions being made specifically with networking in mind. While network performance may still need to be tweaked, and there are still some bugs to fix, the proof-of-concept was a success. You can start matches on your local network, or online, with no configuration necessary!

The Fish Folk game series has a pre-launch page up on Kickstarter, expected to go public in mid-May.

Thetawave 

thetawave-gameplay

Thetawave is an open-source, physics based, space shooter game. This month, Thetawave 0.1.0 was released. The main features of this update were:

  • local multiplayer,
  • a second character,
  • many sprite adjustments,
  • and many gameplay tweaks from in-person playtesting with the thetawave arcade cabinet.

The easiest way to play the most up to date version of Thetawave on your machine is to download it through the Spicy Launcher. Otherwise, you can play the game in your browser on the itch.io page.

Feel free to reach out in the #thetawave channel in the Spicy Lobster discord server if you are interested in contributing.

Way of Rhea 

Steam Puzzle Fest April 24 - May 1 Way of Rhea

Way of Rhea is a puzzle game with hard puzzles and forgiving mechanics being produced by @masonremaley in a custom Rust engine. You can support development by checking out the free demo and wishlisting on Steam or signing up for the mailing list!

Recent updates:

  • Time controls (pause, play, fastforward)
  • Staves switch in place so that crabs don’t inadvertently move them when cycling
  • Increased drag on various physics objects to prevent bouncing over targets
  • Increased staff throw velocity to make it easier to throw staves off ledges
  • Improved interactive hover visuals on staves
  • Fixed bug where you could take objects from the crab while he’s riding the elevator
  • Fixed edge cases around saving on load screens
  • Fixed edge cases with sleep system and pausing
  • More flexible save points in crab puzzles (save points can now conditionally trigger only when a crab is present)
  • More work on end game

Also, Way of Rhea was part of the Steam Puzzle Fest!

l1t 

game title in ascii art as a game’s level

l1t by @alex-laycalvert is a WIP terminal game about shooting lasers and lighting statues to solve puzzles.

In each level, you have to configure mirrors, lasers, and other items to light up all the statues while avoiding any mishaps like shooting yourself with a laser beam.

There’s only 4 core levels right now but in addition to adding more the developer is working on a repository system where web servers can host level files and users can subscribe to them.

Discussions: /r/rust

Maginet 

new menu screenshot

Maginet by Evrim is a fast-paced turn-based strategy game with local/versus-ai/online play on PC/mobile where two guilds of mages battle each other.

This month’s updates include:

  • New mage and board sprites from @MrmoTarius.
  • New main menu that brings the ability to switch between loadout modes.
  • Better AI heuristics for evaluating the board.
  • Better health UI.

The developers are looking for feedback from testers.

Idu 

tree branches on top of water

Idu (Discord) is a strategic sandbox game about growing plants that wish to reclaim nature, developed by Elina Shakhnovich and Johann Tael featuring a bespoke Vulkan-based engine in Rust.

This month a new demo was released:

  • New inventory and interaction system.
  • Office file cabinets for keeping things tidy.
  • Converters convert signals from nearby flowers into colorful blocks.

Tiny Glade 

three small windows are merged into one bigger one Demo of the gothic windows system

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

This month’s updates include:

  • More brick colors.
  • New gothic windows style.
  • Ability to merge windows together into a bigger one.
  • New arch algorithm that works better for rough terrain.
  • The project’s beta testing should start this summer and the release should happen somewhere in 2024.

Hydrofoil Generation 

NYX awards banners on top from a screenshot from the game

Hydrofoil Generation (Steam, Facebook, Discord) is a realistic sailing/foiling inshore simulator in development for PC/Steam that puts you in the driving seat of modern competitive sailing that is available in Early Access on Steam.

This month’s updates include:

  • A brand new location to test your hydrofoil skills: Bermuda.
  • An improved protocol for line crossing detection is now implemented, which means that Hydrofoil Generation is now even more fair and accurate.
  • Also, the game won two Silver awards for the PC Game: Racing and Simulation category.

Engine Updates 

Ambient 

a set of cool and mostly physics-centered demos A 10-second preview of what’s possible with Ambient 0.2

Ambient 0.2 is now out after two months of development. Ambient is an open-source runtime for building high-performance multiplayer games and 3D applications powered by WebAssembly, Rust and WebGPU. Projects consist of assets and logic built around the currently Rust-only Ambient API, and these projects can be loaded by any compatible runtime running on any platform.

This release brings a few major features, including basic support for playing sounds, being able to run WASM on the client (in addition to the server), and automatic proxying of servers by the Ambient Proxy. This allows anyone with the URL to connect to a server, without having to worry about port forwarding.

Finally, Ambient UI can now be used from guest code. Combined with networking and ECS, this unlocks an exciting new capability: multiplayer UI! The blog post walks through the creation of a basic multiplayer beat sequencer using these features.

Check out the GitHub to get started with building for/or on Ambient yourself, or chat with the developers and other explorers on the Discord.

Discussion: /r/rust, Hacker News

godot-rust 

godot-rust GDExtension logo

The Godot 4 binding for Rust, also known as gdext, now features a reworked website. The site acts as a hub to all the relevant resources and community platforms. It also hosts auto-generated API docs from cargo doc, for latest snapshots and active pull requests.

On the library side, April has brought lots of improvements regarding engine interaction, notably:

  • FFI bugfixes (#234, #249, #250)
  • Class constants and notifications (#219, #223)
  • Callable support (#231)
  • Initial threading experiments (#212)

For the near future, the plan is to iron out the new website and CI, as well as some QoL improvements such as better compile times.

Learning Material Updates 

Bevy <3 GitHub Actions 

bevy logo

Piotr Siuszko wrote a blog post explaining how to automate building and publishing game written with Bevy to GitHub Pages using GitHub Actions.

Exploring Bevy’s Game Of Life Example 

red dots or black bg Game of Life Simulation

Yendor published a mini-tutorial series exploring compute shaders in Bevy using their Game of Life example and adding some new features to it: camera controller, wrapping simulation, and drawing on the simulation.

Test-Driven Development in Rust Game Development with Bevy 

TDD in Rust game dev with bevy

Edgardo Carreras writes about his experience with Test-Driven Development while developing a game engine in Rust using Bevy. TDD is an iterative software development approach that involves writing automated tests before writing the code. In the article, Edgardo explains the benefits of TDD and how it can help in game development. He also shares his testing process, including how he used Bevy’s ECS architecture to write tests for his game engine.

Discussions: /r/rust_gamedev

Bevy Roguelike Tutorial 

a couple characters moving around and interacting

@maciekglowka started a blog series on creating a roguelike game using Bevy Engine. There are currently seven parts, focusing mostly on setting up a basic game architecture. The topics discussed so far include: separating logic from graphics in the ECS; designing a turn-based game loop; command pattern for the unit actions.

The first part of the series can be found here.

Discussions: /r/roguelikedev

PhaestusFox’s Bevy Videos 

phaestusfox youtube

@PhaestusFox released a bunch of new Bevy tutorials on Youtube about all things Bevy. Level up your game dev skills with PhaestusFox’s tutorials and learn more from very basic how-to’s to more complex full tutorials like how to make a platformer in Bevy.

Katamari for the BevyJam3 

Katamari gif

Ryosuke recently participated in a Bevy game jam. Ryosuke’s goal was to create a game inspired by Katamari Damacy, an old PlayStation 2 game. In the game, a prince rollsup objects to make planet sized balls. Ryosuke shares their learning process of the almost-finished Katamari clone running on Windows. They cover topics like the physics library and how they created the user interface using a tool egui. It is also suggested to have some basic knowledge of Bevy game engine before you dive into the article.

3D MIDI Piano Using Bevy 

3D Midi Piano

Ryosuke has also recently published a tutorial on how to create a 3D MIDI piano visualizer app using the Bevry game engine in Rust. They shared their learning experience, including reading MIDI input with Rust and integrating it with the game engine.

DOOM maps to SVG to laser cutter 

Blender result with colored vertical layers

Theor became interested in the data format of the classic game Doom and decided to write Rust code to extract its maps and convert them into vector graphics for laser cutting. Theor’s blog post explores Doom specifics, geometry, writing SVG, rendering and triangulation.

Discussions: /r/rust

Making a Strategy Game 

strategy game bevy console

Sergio Rodrigo Royo started a new series about creating a 2D turn-based strategy game in Rust. In this tutorials one will learn how to’s such as: adding differents units, sound effects, providing multiplayer support, and designing a simple UI.

Rendering Football Data in 3D 

3d football

UnravelSports recently presented their latest project. The project is a proof-of-concept to show football data in 3D and the ultimate goal is to utilize this feature to animate body-pose data and potentially connect it to a VR in the future.

Check out a recent PySport talk for more in-depth info.

AI learns to play flappy bird 

Flappy bird

bones-ai recently shared their project, which is a neuro-evolution simulation of an AI playing popular game Flappy Bird.

In the youtube video 1000 AI agents are released into the game environment of Flappy Bird with the goal of learning how to survive and stay alive for as long as possible.

Tooling Updates 

Rustracer 

Youtube screenshot: demo with a couple of cars inside a box

Rustracer, a PBR glTF 2.0 renderer based on Vulkan ray-tracing. It can render (almost) any glTF 2.0 scene by pure path tracing at an interactive speed. Compared with rasterization-based glTF renderers, Rustracer needs some (scene-dependent) time for sample accumulation in exchange for global illumination.

On top of that, the control panel provides a rich set of viewing options and debugging utilities.

It also can serve as a glTF viewer or a reference renderer.

The code base itself is a learning resource for Ash (Vulkan bindings in Rust), hardware ray tracing and glTF processing in Rust.

Luminol 

tile map editor and other tool windows like command event editor

Luminol by @speak2erase and @somedevfox is a remake of the RPG Maker editor, based mostly off of RPG Maker XP (aka RMXP), with the intent of creating a more modern, feature rich, and open source version of RMXP.

RGSS, RMXP’s runtime, has already been open sourced thanks to mkxp. However, despite several attempts, no one has fully remade the editor. There are some tools out there that cover some of its functionality, but none are user friendly, nor feature complete.

RGSS is actually quite enjoyable to use. The actual editor though - not so much: dated and often unintuitive UI, extensibility issues, binary format that is allergic to source control, and arbitrary limits that never existed in previous versions. Luminol was born out of sheer frustration from dealing with these issues - and hopes to fix them!

Luminol’s key differences:

  • Completely GPU accelerated (RMXP is software rendered).
  • Edit multiple maps at the same time.
  • Multiple data formats.
  • Edit encrypted archives (rgssad).
  • Open-source.
  • Better user experience overall.

Luminol is currently looking for contributors: there is a lot to be done. If you’d like to help contribute, please reach out to @speak2erase!

Graphite 

Graphite logo

Graphite (website, GitHub, Discord, Twitter) is a free, in-development raster and vector 2D graphics editor based around a Rust-powered node graph compositing engine.

April’s sprint 25 developments:

  • Brushing up: The new Brush tool makes it possible to paint raster-based art.
  • Writing down: A refactor of the Text tool integrates typographic content in the node graph. Finally, all artwork types are node-based.
  • Showing true colors: Node graph compositing now uses linear, not gamma, color. Key new color adjustment nodes are added.
  • Laying the groundwork: Further engineering work prepares the node graph language for GPU execution. And development continues toward in-graph layer stack compositing.

As always, new contributors are cordially invited to get involved and take on approachable issues with help from the project’s friendly and supportive developer community on Discord.

Open Graphite in your browser and start creating!

Image Maniac 

many images opened in one window

Image Maniac is a cross-platform image viewer designed for game developers and other creative professionals. The project’s features include:

  • Infinite canvas for drag-n-dropping many images onto the main window, and view them all in a single, unified workspace.
  • Quick RGBA channel switching using number keys is usefil for game developers who work with textures and materials.
  • Broad format support including PNG, JPG, BMP, DDS, TGA, KTX2, and HDR.
  • Focus on performance even with large files and multiple image at once.

Discussions: /r/rust

Library Updates 

Backpack 

left part is “crab simulator” game where the player gains an item right part is “clash of crabs” where player is able to use the item Minimalist schema for sharing items in different games

Backpack is an inventory system to share items between different games, for example:

  • Raise a crab in Crab Simulator,
  • Make it fight in Crab Shooter,
  • Cook it in Crab Cook…
  • Gain a crab skin in your favorite game!

Backpack is in a pre-MVP state: a tech prototype is working.

The project is not affiliated or related to Blockchain/NFTs: it uses a PostgreSQL DB to store users, games and items. Authentication is done via email/password, third party authentication via OAuth will be a future goal. An Authenticated user can create apps and add item definitions to these. Other users can get an independent instance of that item and modify its data.

The next project milestone is 2 minimalist interconnected games released by the end of 2023.

Other News 

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.