Skip to content

Latest commit

 

History

History
586 lines (430 loc) · 23.2 KB

File metadata and controls

586 lines (430 loc) · 23.2 KB

+++ title = "This Month in Rust GameDev #28 - November 2021" transparent = true draft = true +++

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

Rust GameDev Meetup

Gamedev meetup poster

The eleventh Rust Gamedev Meetup happened in November. You can watch the recording of the meetup here on Youtube. The meetups take place on the second Saturday every month via the Rust Gamedev Discord server and are also streamed on Twitch. If you would like to show off what you've been working on at the next meetup on December 11th, fill out this form.

Game Updates

Flesh

flesh preview The melee weapon in action

Flesh by @im_oab is a 2D-horizontal shmup game with hand-drawn animation and organic/fleshy theme. It is implemented using Tetra. This month's updates include:

  • Support different types of ships that players can choose.
  • Add a melee weapon.

Screenshot of One-Click Ninja Screenshot of One-Click Ninja

One-Click Ninja is a rhythm game made in 10 days for 1-Button Jam 2021, written in Rust using the Bevy engine.

The source is available MIT licensed on GitHub, and you can play in your browser on itch.io.

fishfight

Fish Fight is a fast-paced 2D brawler game, played by 1-4 players online or on a shared screen, built with macroquad game engine.

This month it got a trailer, and the game is now available to wishlist on Steam!

Gameplay screenshot with lots of zombies in a tunnel

BITGUN (Steam, Twitter, Discord) by @LogLogGames is an action roguelike zombie shooter with lots of blood. The game is built using Godot and Rust (via godot-rust).

They recently implemented a mission system, where you can select one of three types of missions to go to from the central camp. One is to defend supplies from horde of zombies, second is to search a facility for some object or clear all the zombies and the last one is to fight your way through a tunnel full of spiders and other enemies! They also worked on a tutorial.

Halloween Mahjong Solitaire screenshot Screenshot of Halloween Mahjong Solitaire

Halloween Mahjong Solitaire (GitHub) by @Syn-Nine is a game created by Syn9 for Game Developers Refuge 4x4x4 Challenge, October 2021.

The challenge was to create a Halloween themed game based on four emojis. In this case the chosen emoji combination was: skull_and_crossbones, bat, game_die, and shinto_shrine (☠️ 🦇 🎲 ⛩️).

The game is part of an open source repository of several mini-games that use Syn9's Rust Mini Game Framework.

Country Slice

country-slice-gif

Country Slice is @anastasiaopara's hobby project, where users can draw a small scene, and their input is amplified with real-time procedural geometry generation.

Country Slice uses Bevy Engine for entity management, and has recently been ported to OpenGL (using gl-rs and glutin). It is being developed openly on GitHub.

You can follow the development of Country Slice on Twitter.

Travelling merchant A merchant paused in their travels

Veloren is an open world, open-source voxel RPG inspired by Dwarf Fortress and Cube World.

In November, Veloren started a new initiative to help new developers learn more about the codebase; the Veloren Reading Club. You can watch the first and second sessions now. Hats were merged, and a major rewrite of the server-hosting section of the book happened. New textures were made for item drops. Some concept art was created for what massive cities could look like. Dynamic weather was added, and you can watch that in action.

Experience sharing went through a large overhaul to evenly distribute EXP gained across groups. The difficulty of dungeons was adjusted to be more balanced for new players. Persistence was added to skills, and measures were put in place to help with future migrations to new skill trees. Work was done on site2, the system that is used to generate structures in a procedural way. This will help make the variance more dynamic by adding more parameters that can be adjusted. In December, Veloren will release 0.12, hopefully with some holiday spirit!

November's full weekly devlogs: "This Week In Veloren...": #144, #145, #146, #147, #148.

An animation of a platformer where the entire world bends around you Watch out! The entire world bends around you!

BENDYWORM (GitHub, Twitter, by @bauxitedev) is a platformer with a twist: the entire world bends and twists around you as your progress through the level. Why? Because you're inside of a gigantic worm, and worms are bendy.

The game was made for GitHub Game Off 2021, and uses godot-rust behind the scenes.

The game is available for free on itch.io, and the source code is available on GitHub. (Windows only for now, Linux build available soon)

Discussions: /r/rust/, Twitter

A molecoole and some enemies

Molecoole is a top-down shooter roguelike where you build your character from different atoms. Each atom has a unique ability providing tons of variety between playthroughs. It's made using the Bevy Engine.

This month Molecoole launched its Steam page! They also added new weapons and new bosses.

In December their main focus will be on audio, and polishing the game.

hgs_screen

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

November was dedicated to the launch of the Steam Store page and associated trailer showcasing Hydrofoil Generation's custom Rust engine in motion for the first time. Constant tweaks to the boat behavior and addition of gameplay features are ongoing as the planned Q2 2022 Steam Early Access release gets closer and closer.

December 2021 will see an attempt to port the rendering backend of the game from DirectX 11 to WGPU in order to widen the number of platforms reacheable with a particular interest in the Steam Deck that seems to offer the perfect controller layout for such a demanding simulation as Hydrofoil Generation.

You will be able to follow the progress of the port Mondays and Fridays on Twitch.

Engine Updates

Tetra 0.6.7

Tetra is a simple 2D game framework, inspired by XNA, Love2D, and Raylib. This month, version 0.6.7 was released, featuring:

  • Updates to the gamepad backend, adding rumble support for a much wider variety of controllers (including DualShock 4s)
  • Various bugfixes and docs improvements

For more details, see the changelog.

Additionally, development has begun on version 0.7 - check out the planned features and changes, and feel free to suggest more!

Oxygengine v0.24.0

Oxygengine RPG game template

The hottest HTML5 + WASM game engine for games written in Rust with web-sys.

@PsichiX, the creator of Oxygengine, spent last two months on making:

  • First few chapters of the book explaining how Oxygengine works in: Oxygengine Essentials Book.
  • New Hardware-Accelerated renderer based on Material Graphs (to allow making faster and better quality game visuals - more about that in Material Graph based rendering chapter).
  • New Overworld game module (which aims to provide all essential features needed by RPG game developers, to let them focus on making an actual game).
  • New AI feature module (WIP) that integrates Emergent AI crate with the engine.
  • Plugin-based asset pipeline as well as support for LDtk software projects.

All these changes marks the beggining of stabilizing phase of the engine, API more or less won't change much, now the focus is put entirely on the features that will push progress towards Ignite visual game editor for artists and game designers to use.

Learning Material Updates

The Raytracer Challenge

The Raytracer Challenge is a project with the goal to write a raytracer from scratch in Rust, while showing each step of the way as a weekly live coding session. Everything is documented, starting with implementing Vectors and Matrices all the way to creating Phong Lighting.

November has been a busy month for the project with lots of visual changes in the raytraced results:

Tooling Updates

SPV-0.3.5 screenshot

SPV by Albin Sjögren is a calculator utility for working with astronomical position and velocity data.

In the last month, a relative position and velocity calculation system has been added. This is due to the inaccuracy of astronomic data. With this new method that relies on the orbital elements of two body systems getting data for multibody simulation is now possible.

Apart from this new equation set, SPV now also has a more standard color scheme based on the one GitHub uses. This month also came with numerous bug fixes and a more concrete plan for future development.

For any feature requests, reach out to the developer on Discord or GitHub.

Library Updates

Pixels 0.8.0 👾

Pixels is a tiny hardware-accelerated pixel framebuffer. Its goals include pixel-perfect rendering and custom shader pipelines for textures with direct pixel access. It's perfect for making 2D animations, games, and emulators.

Version 0.8.0 was released this month, bringing highly anticipated support for WASM targets, as well as support for Raspberry Pi 4. A minimal example for web browsers is included to get you started. Full details are available in the release notes.

Quinn is an async-enabled implementation of the state-of-the-art IETF QUIC transport protocol, a robust foundation for real-time networking.

Quinn 0.8 introduces support for the final QUIC 1 specification defined in RFC 9000. Other highlights include an improved CUBIC congestion controller, a more ergonomic configuration API, and numerous performance and robustness improvements.

hecs is a fast, lightweight, and unopinionated archetypal ECS library.

Version 0.7 introduces several new features, including two new query combinators, a CommandBuffer for recording operations to be applied to a World at a future time, accessors for efficient random access within columns, and a variant of EntityBuilder that clones its components and can therefore be spawned from repeatedly. Other improvements include compatibility with 32-bit MIPS and PPC, and introduction of a niche to Entity so that e.g. Option<Entity> will not consume additional space.

NavMesh v0.12.1

NavMesh crate is a path finding library for 2D and 3D games.

This month changes by @PsichiX:

  • Added NavGrid structure to find paths on grids.
  • Added NavFreeGrid structure to find paths on cells put in free layout manner (used for example on clusters of cells rather than condensed grid).
  • Added NavIslands structure to allow hierarchical path finding (used for example with streamed navigation islands, such as other path finding structures).

module before/after

godot-rust (GitHub, Discord, Twitter) is a Rust library that provides bindings for the Godot game engine.

November has been a month of refactoring for godot-rust. The API was cleaned up across different locations, reducing confusion and making the library more accessible:

  • The module simplification (#811) continued initial efforts on the module structure, such as shorter paths and avoidance of redundant re-exports. Some differences between v0.9.3 and now can be seen in the above picture.
  • Several core symbols were renamed for consistency (#815): RefInstance -> TInstance and TypedArray -> PoolArray, among others.
  • Another refactoring affects the Variant conversion methods (#819). Instead of Variant::to_i64() which may silently fail and return a default value (Godot behavior), the recommended method is now Variant::to<T>(). This enables genericity and is more idiomatic in Rust, returning an Option to indicate success or failure.

As a binding to a C++ library, one topic godot-rust has to deal with is the use of unsafe, which sometimes boils down to a trade-off between safety and ease-of-use. Even though Rust provides basic guidelines, there are different philosophies on their execution, see The CXX Debate for an example. To discuss how APIs interacting with Godot can as ergonomic as possible while preserving safety, issue #808 was opened.

Popular Workgroup Issues in Github

Meeting Minutes

See all meeting issues including full text notes or join the next meeting.

Discussions

Requests for Contribution

Jobs

Bonus


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!