Skip to content

Release N51 #1521

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Jun 5, 2024
Binary file added content/news/051/bevy_rep.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/news/051/fyrox-editor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
160 changes: 97 additions & 63 deletions content/news/051/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
title = "This Month in Rust GameDev #51 - May 2024"
transparent = true
date = 2024-06-03
draft = true
draft = false
+++

<!-- no toc -->

<!-- Check the post with markdownlint-->

Welcome to the 51th issue of the Rust GameDev Workgroup's
Welcome to the 51st issue of the Rust GameDev Workgroup's
monthly newsletter.
[Rust] is a systems language pursuing the trifecta:
safety, concurrency, and speed.
Expand All @@ -34,14 +34,8 @@ Feel free to send PRs about your own projects!
- [Engine Updates](#engine-updates)
- [Learning Material Updates](#learning-material-updates)
- [Tooling Updates](#tooling-updates)
- [Library Updates](#library-updates)
- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
- [Other News](#other-news)
- [Meeting Minutes](#meeting-minutes)
- [Discussions](#discussions)
- [Requests for Contribution](#requests-for-contribution)
- [Jobs](#jobs)
- [Bonus](#bonus)
- [Misc. Links](#misc-links)

<!--
Ideal section structure is:
Expand All @@ -67,6 +61,29 @@ If needed, a section can be split into subsections with a "------" delimiter.

## Announcements

### Survey Results

Last month, we asked you to fill out a survey to help us improve the rebooted newsletter. Thanks to 52 of you, we've got [some data][survey-data] now!
We analyzed the results in [this blog post][survey_results]. The biggest takeaways are:
- People are generally excited about the newsletter
- The current frequency of the newsletter is good
- Readers do not want anything in the newsletter generated by AI
- Contributing to the newsletter could be easier. If you've got ideas on how to make this happen, please [let us know](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/1519)!

You can visit the [blog post][survey_results] to see the full results and some nice plots.
We will discuss how to act on this feedback next month and keep you updated on the changes we make.

Thanks to everyone who participated!

[survey-data]: https://github.com/janhohenheim/rust-gamedev-statistics/tree/main/jan-hohenheim-2024
[survey_results]: <https://gamedev.rs/blog/survey-2>

### Email Subscription

Last month, we announced that we would add an email subscription option to the newsletter.
Unfortunately, we did not manage to implement this in time for this issue because the volunteer responsible, Jan Hohenheim, had some personal issues to deal with.
He will work on this feature for the next issue, and we hope to have it ready for you then.

## Game Updates

### [Way of Rhea][wor]
Expand All @@ -92,8 +109,8 @@ You can support development by [purchasing Way of Rhea on Steam][wor], or

### [Untitled Pixel Wizard Game][pixel-wizards]

[![A target being destroyed by a rudimentary flame thrower spell](untitled-pixel-wizards-game.gif)][pixel-wizards]
_A deadly foe meets their end._
[![A target being destroyed by a rudimentary flame thrower spell](untitled-pixel-wizards-game.gif)][pixel-wizards]
_A deadly foe meets its end._

[Untitled Pixel Wizard Game][pixel-wizards] is a local-multiplayer [Noita]-like platformer about
killing baddies using spells powered by pixel physics.
Expand All @@ -104,9 +121,9 @@ rigid bodies; see [Bridging Physics Worlds][pixel-wizards-bridging-physics-world
This month:

- [Tilemapping via LDTK][pixel-wizards-tilemapping]: levels got just a tiny bit prettier.
- [Level Progression][pixel-wizards-levels]: players learned to die, and levels link together.
- [Level Progression][pixel-wizards-levels]: players learn to die, and levels link together.
- [Architectural Ruminations][pixel-wizards-arch]: reflections on using Rust for game development,
prompted by LogLog Games's '[Leaving Rust gamedev after 3 years]'.
prompted by LogLog Games's _[Leaving Rust game dev after 3 years]_.
- [Target Practice][pixel-wizards-targets]: the first "enemy" was added to the game.

[pixel-wizards]: https://slowrush.dev
Expand All @@ -116,38 +133,39 @@ This month:
[pixel-wizards-arch]: https://www.slowrush.dev/news/architectural-questions/
[pixel-wizards-levels]: https://www.slowrush.dev/news/level-progression/
[pixel-wizards-tilemapping]: https://www.slowrush.dev/news/tilemapping/
[caspark]: https://github.com/caspark/
[Leaving Rust gamedev after 3 years]: https://loglog.games/blog/leaving-rust-gamedev/
[Leaving Rust game dev after 3 years]: https://loglog.games/blog/leaving-rust-gamedev/

### [mirr/orb]

![mirr/orb](mirrorb.png)
![mirr/orb](mirrorb.png)
_A typical level and its UI_

[mirr/orb] by [syn9]
is a puzzle game about bouncing lasers off mirrors to activate orbs.

The game was created in 9 days using syn9's Rust mini game framework (mgfw) and released on May 27th.
The game was created in 9 days using syn9's Rust mini game framework [mgfw] and released on May 27th.

This release contains 110 levels which pull from 870 available puzzle layouts.

[mirr/orb]: https://syn9dev.itch.io/mirrorb
[syn9]: https://twitter.com/Syn9Dev
[mgfw]: https://github.com/Syn-Nine/mgfw

### [CyberGate Playground][cybergate-shorts]

![Improved Hammer Destruction](cybergate.gif)
![Improved Hammer Destruction](cybergate.gif)
_Shooting a Hammer against a Floating Wall and Destroying part of it_

CyberGate Playground is a multiplayer browser game where players claim territory
by painting the environment in their color, with the goal of overpowering opponents.

The past few months' updates include:
- Flying with butterfly-like mechanics;
- [Fusion Upgrade:][cybergate-fuse] Combine hammers, balls, dices, to multiply their powers;
- Hammer destruction made more challenging and interesting, with upgrades enabling deeper wall penetration;
- Improved Strength and Weight system, and calculate their impact on character movement and abilities;
- Added an 'Owned Upgrades' menu using `yakui` crate, giving a neat overview of all acquired upgrades;
- Many other UI / gameplay improvements based on player feedback;
- Flying with butterfly-like mechanics
- [Fusion Upgrade:][cybergate-fuse] Combine hammers, balls, and dice to multiply their powers
- Hammer destruction made more challenging and interesting, with upgrades enabling deeper wall penetration
- Improved strength and weight system, and calculate their impact on character movement and abilities
- Added an 'Owned Upgrades' menu using `yakui` crate, giving a neat overview of all acquired upgrades
- Many other UI / gameplay improvements based on player feedback

Rust's ownership and strongly typed features played a crucial role in allowing the gameplay code to scale
to more complex and detailed mechanics while retaining correct, clean, and bug-free code.
Expand All @@ -161,23 +179,46 @@ If you're interested in the game's progress, join the [Discord server][cybergate

## Engine Updates

### [Macroquad]
### [Macroquad Newsletter]

![quad-gl](twiq_3d_helmet.gif)
![quad-gl](twiq_3d_helmet.gif)
_"Basic" 3d rendering (gltf helmet)_

[@Fedor](https://github.com/not-fl3/), creator of [*Quad], a game engine written in Rust, is starting a [This week in Quads](https://macroquad.rs/twiq) newsletter.

Overall polish, developer experience, performance optimization and basic 3d visualization have been worked on.
This month overall polish, developer experience, performance optimization, and basic 3d visualization have been worked on.

[Macroquad]: https://github.com/not-fl3/macroquad
[*Quad]: https://www.patreon.com/posts/on-buses-and-101117631

### [Fyrox 0.34][fyrox-release]

![Fyrox editor](fyrox-editor.png)
_The improved Fyrox editor UI_

[Fyrox] got a huge update this month. For those who don't know, Fyrox is a game engine written in Rust that is especially notable for sporting a Unity-like editor.

[This release][fyrox-release] includes code hot reloading, project exporter, assets preview generation, UI prefabs, GLTF support, static and dynamic batching,
keyboard navigation, animation support for UI, editor style and usability improvements, and many more.

[Fyrox]: https://fyrox.rs
[fyrox-release]: https://fyrox.rs/blog/post/fyrox-game-engine-0-34/

### Bevy 0.14 WIP

![Bevy repeated textures](bevy_rep.png)
_One of the upcoming features in Bevy 0.14 is easier texture repetition for GLTF objects_

The 0.14 release of [Bevy] nears completion, but the team is still working on detailed
release notes and the migration guide. If you want to help, you can grab one of the [open documentation issues][bevy-docs-issues].

[Bevy]: https://bevyengine.org/
[bevy-docs-issues]: https://github.com/bevyengine/bevy-website/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3AA-Release-Notes

## Learning Material Updates

### Xkcd Machine

![XKCD Machine](xkcd_machine.gif)
![XKCD Machine](xkcd_machine.gif)
_A small part of the XKCD Machine_

Chromakode released a detailed [blog post][xkcd_machine_blogpost] about their implementation of [xkcd "Machine"][xcd_machine_playable].
Expand All @@ -192,11 +233,11 @@ Machine is written in React/Typescript, and uses [Rapier][xkcd_rapier]: a physic

### [Rusty Playdate]

![The Playdate console](playdate.png)
![The Playdate console](playdate.png)
_The Playdate console_

[Rusty Playdate] ([GitHub][Rusty Playdate], [Mastodon][Rusty Playdate Masto]) by [@boozook](https://github.com/boozook)
is the large set of crates with bindings, cargo-plugin and toolset for the full cycle of creating games for the [Playdate handheld console][playdate].
is the large set of crates with bindings, cargo-plugin, and toolset for the full cycle of creating games for the [Playdate handheld console][playdate].
This is a fairly new console reminiscent of a GameBoy with a crank handle geared towards indie games.

The current release sports the following notable improvements:
Expand All @@ -213,20 +254,14 @@ _Discussions: [GitHub][Rusty Playdate Gh-disc], [Matrix][Rusty Playdate Matrix].
[Rusty Playdate Matrix]: https://matrix.to/#/#playdate.rs:matrix.org
[playdate]: https://play.date/

## Library Updates

## Popular Workgroup Issues in GitHub

<!-- Up to 10 links to interesting issues -->

## Other News

<!-- One-liners for plan items that haven't got their own sections. -->

### Bevy rustunit meetup #3

![Bevy meetup youtube extract](bevy_rustunit_meetup_3.jpg)
_Bevy meetup youtube extract, showing its 3 participants._
![Bevy meetup YouTube extract](bevy_rustunit_meetup_3.jpg)
_Bevy meetup YouTube extract, showing its 3 participants._

[Rustunit][rustunit] has hosted its 3rd unofficial online [Bevy Engine][bevy] meetup on April 19th with the following topics:
- Intro / Code of Conduct
Expand All @@ -240,8 +275,8 @@ and join [the meetup group][rustunit_bevy_meetup_event] to get notified of futur

### Bevy rustunit meetup #4

![Bevy meetup youtube extract](bevy_rustunit_meetup_4.jpg)
_Bevy meetup youtube extract, showing its 4 participants._
![Bevy meetup YouTube extract](bevy_rustunit_meetup_4.jpg)
_Bevy meetup YouTube extract, showing its 4 participants._

[Rustunit][rustunit] has hosted its 4th unofficial online [Bevy Engine][bevy] meetup on May 24th with the following topics:
- Francois - Catching Rendering Regressions on all Platforms
Expand All @@ -254,7 +289,6 @@ and join [the meetup group][rustunit_bevy_meetup_event] to get notified of futur
[rustunit_bevy_meetup_4_youtube]: https://www.youtube.com/watch?v=rnE_nINEs2M
[rustunit]: https://rustunit.com/
[rustunit_bevy_meetup_event]: https://www.meetup.com/bevy-game-development/
[bevy]: https://bevyengine.org/


### RustNL
Expand All @@ -264,12 +298,12 @@ and join [the meetup group][rustunit_bevy_meetup_event] to get notified of futur
While the conference was not specific to game development,
organizers contacted rust game development communities
to showcase games developed in Rust between talks,
which you can [watch on youtube][rustnl_games_youtube].
which you can [watch on YouTube][rustnl_games_youtube].

Special mention to the following talks, relevant to game development:
- [Let's Build High Performance Rust UI][rustnl_kevin_boos_talk] by Kevin Boos
- [Let's Build High-Performance Rust UI][rustnl_kevin_boos_talk] by Kevin Boos
- [A Research Project on Rust User Interface Architecture][rustnl_xilem_talk] by Ralph Levien about [Xilem][rustnl_xilem_intro]
- [(Th)Rust for Space: Initial momentum][rustnl_michael_melchiore_talk] by Michaël Melchiore, who gave a shout out to [Bevy Engine][rustnl_bevy_engine].
- [(Th)Rust for Space: Initial momentum][rustnl_michael_melchiore_talk] by Michaël Melchiore, who gave a shout-out to [Bevy Engine][rustnl_bevy_engine].

[rustnl_main_website]: https://2024.rustnl.org/
[rustnl_games_youtube]: https://www.youtube.com/watch?v=XLefuzE-ABU&t=7583s
Expand All @@ -279,32 +313,32 @@ Special mention to the following talks, relevant to game development:
[rustnl_michael_melchiore_talk]: https://www.youtube.com/watch?v=XLefuzE-ABU&t=3898s
[rustnl_bevy_engine]:https://bevyengine.org/

## Meeting Minutes

<!-- Up to 10 most important notes + a link to the full details -->

[See all meeting issues][label_meeting] including full text notes
or [join the next meeting][join].
## Misc. Links

[label_meeting]: https://github.com/rust-gamedev/wg/issues?q=label%3Ameeting
### New libraries

## Discussions
- [egui_ratatui](https://github.com/gold-silver-copper/egui_ratatui): A ratatui backend that is also an egui widget.
Deploy on the web with WASM or ship natively with Bevy, macroquad, or eframe
- [bevy_ratatui_render](https://github.com/cxreiff/bevy_ratatui_render): A Bevy plugin for rendering your game to the terminal using ratatui
- [bevy_light_2d](https://github.com/jgayfer/bevy_light_2d): General purpose 2D lighting for the Bevy game engine.

<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
useful information -->
### Library Updates

## Requests for Contribution
- [Kira 0.9](https://github.com/tesselode/kira/releases/tag/v0.9.0): Library for expressive game audio
- [Quinn 0.11.2](https://github.com/quinn-rs/quinn/releases/tag/0.11.2): Async-friendly QUIC implementation in Rust
- [rolt and jolt-sys 0.3.1](https://github.com/SecondHalfGames/jolt-rust/blob/main/CHANGELOG.md#v030): Rust bindings to Jolt Physics
- [Hanabi 0.11](https://github.com/djeedai/bevy_hanabi/blob/v0.11.0/CHANGELOG.md): A GPU particle system plugin for the Bevy game engine.

<!-- Links to "good first issue"-labels or direct links to specific tasks -->
### Blog Posts

## Jobs

<!-- An optional section for new jobs related to Rust gamedev -->
- [Architectural Ruminations][pixel-wizards-arch]: reflections on using Rust for game development,
prompted by LogLog Games's _[Leaving Rust game dev after 3 years]_.

## Bonus
### Videos

<!-- Bonus section to make the newsletter more interesting
and highlight events from the past. -->
- [The Secret Behind Photorealistic And Stylized Graphics](https://www.youtube.com/watch?v=KkOkx0FiHDA):
Explaining the rendering techniques behind photorealistic and stylized graphics
- [GDC: Tunes of the Kingdom](https://www.youtube.com/watch?v=N-dPDsLTrTE): Evolving physics and sounds for ‘The Legend of Zelda: Tears of the Kingdom’

------

Expand Down
Loading