Skip to content

Files

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Latest commit

9342b20 · Nov 4, 2021

History

History
458 lines (330 loc) · 16.5 KB

File metadata and controls

458 lines (330 loc) · 16.5 KB

+++ title = "This Month in Rust GameDev #27 - October 2021" transparent = true date = 2021-11-04 draft = true +++

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

Game Updates

An animated gif showing an engineer shooting rockets Firing Carrockets™!

The Process by @setzer22 is an upcoming game about factory building, process management, and carrot production, built with Rust using the Godot game engine!

For the past two months the project has seen some slow but steady progress. Work has started towards a simple combat system that will have the engineers fighting hordes of robots to defend their factories.

This month the game has seen the following changes and improvements:

LibraCity - city planning on a needle!

LibraCity screenshot

LibraCity is a puzzle city planning game by @djeedai where you need to build a city while balancing it on a needle (the center of the board). It was built for Ludum Dare 49 using the Bevy Engine, and is a first-time use of the engine.

Post-jam, a webassembly version was added and published, which now allows playing the game online.

The code source is freely available on GitHub.

Lonely Star screenshot

Lonely Star is a 2D 'endless runner' game by @17cupsofcoffee, featuring simple generative music. It was built with Tetra back in February 2020, for Weekly Game Jam 135.

This month, it was made open-source, and received a small update to improve the UI and fix a few bugs.

Soldank

Soldank (GitHub, Discord) by @smokku is an open source clone of Soldat engine. It aims for full compatibility with original game files, mods and gameplay with modernized graphics engine and multiplayer networking code.

Recent developments include:

  • Engine/game code split
  • Command Line Interface
  • Rhai scripting
  • hecs_rapier integration
  • Key/mouse-binding support
  • Soldat's .cfg files support
  • Custom debug shapes rendering
  • Performance degradation fix
  • Refactored code to build on hecs ECS
  • ECS entities debug UI

The developer have also written a blog post: 'Engine and scripting'

image/gameplay of the game: circle and triangles Navigating the graph map can be stressful

Graph Game (GitHub) uses Bevy as its engine. You can play it from your browser - click on colored triangles, guess the rules and survive as long as possible!

Development has just begun, and the future of the project is not clear - the developer welcomes you to come and discuss next steps on the game's Discord server.

way of rhea capsule image

Way of Rhea is a puzzle adventure with hard puzzles and forgiving mechanics. It is being produced by @masonremaley.

Latest developments:

  • Way of Rhea now has a free demo available on Steam
  • Way of Rhea was shown at PAX West this year (as were a couple other Rust games!), and will also be showcased at MAGWest
  • A new trailer showing off new level art was published
  • Additional animation work, visuals, and puzzles have been added to the game
  • Improvements were made to the undo system, the tutorial level, and the dialogue system in response to user feedback
  • Some Proton compatibility problems were fixed, some visual glitches were fixed, and support was added for adaptvie vsync

You can stay up to date on the latest developments of Way of Rhea by following it on Steam, or signing up for the mailing list.

Engine Updates

Screenshot of All is Cubes

All is Cubes (GitHub, Crates.io) by kpreid is a game/engine for worlds made of blocks made of voxels. It is intended to be usable both as an engine or rendering library, or as a game with built-in editor/programming functionality (genre(s) to be determined). While the project is still highly incomplete and API-unstable, the 0.3.0 release marks a lot of now-usable functionality (changelog):

  • UI: mouselook, multiple example scenes, inventory with stacks, and rendering to image files.
  • Simulation/mechanics: character collision against arbitrary voxel shapes, much-improved light propagation, transactional state updates (all-or-nothing, internally order-independent), and “behaviors” attached to game objects for scripting/animation.
  • Rendering: high-voxel-count blocks (incomplete, but usable for text as seen in the above screenshot), “smooth lighting” (interpolated across faces), frustum culling, and correct sRGB-versus-linear color handling.

The next planned milestone is saving/loading.

Tetra 0.6.6

Tetra is a simple 2D game framework, inspired by XNA, Love2D, and Raylib. After a few quiet months, version 0.6.6 has been released, featuring:

  • A big overhaul of the keyboard API, with better support for international layouts
  • Lots of new functions for manipulating the game window
  • A long-requested ECS example
  • Bugfixes and docs improvements

For more details, see the changelog.

Learning Material Updates

Tooling Updates

Library Updates

wgpu-0.11 release

bevy webgl2 via wgpu experimental Bevy branch running on WebGL2 via wgpu

The team is happy to announce the release of wgpu-0.11 and naga-0.7. Details can be found on the gfx-rs blog. The most exciting feature is WebGL2 support. With some caveats, users no longer need to wait for WebGPU in the browsers in order to deploy on the Web. Support is still a bit rough, and patches come out regularly, but most examples work.

@kvark also visited Rust LA Meetup to talk about Naga and the history of processing shaders with Rust.

hecs_rapier is a physics engine for hecs ECS. It is a direct port of bevy_rapier2d.

Recent development added joints and physics_hooks support. This makes hecs_rapier feature complete, with bevy_rapier2d feature parity.

dawn in bevy_atmosphere

bevy_atmosphere (GitHub) by @JonahPlusPlus is a procedural sky plugin for Bevy.

By adding the AtmospherePlugin, users get a skybox around the camera in their scene. Users can also set the appearance of the sky adding a AtmosphereMat resource.

0.1.0 and 0.1.1 have been released on crates.io.

0.1.1 changes the default position of the sun to be in the sky, so only the plugin is needed to get a Unity-like sky.

bevy_verlet

bevy_verlet is a lib for projects using Bevy Engine providing a plugin to use verlet integration physics. Very useful for cloth simulation and joints, and less expensive than complex physics engine, it is a nice addition to 2D or 3D projects. Making good use of the Entity-Component-System architecture of the bevy engine, any entity can become a VerletPoint and have physics applied to it.

The crate also provides sticks which constrains the points in order to create strings or cloth. With its modularity, you may customize the physics precision (iterations), the gravity, and the physics time step to use.

New features:

  • Query parallel batching and custom batching size
  • Global documentation
  • Fixed issues with timesteps
  • Improved examples

You may contact the author on Twitter at @ManevilleF or join the discussion.

bevy_pen_tool2

Bevy Pen Tool is a plugin that helps developers make 2D paths using Bezier curves. Its user interface provides functionality for:

  • spawning Bezier curves,
  • moving end points and control points of Bezier curves,
  • linking individual Bezier curves to each other,
  • grouping curves,
  • saving and loading paths as look-up tables (typically for animations and agent movement),
  • generating arbitrary 2D meshes that fill the interior of a path using the Lyon crate,
  • generating a mesh that follows a path like a road,
  • saving meshes and roads in ".obj" format,

A stable version of Bevy Pen Tool should come out as a crate shortly after Bevy 0.6 shows up. Here is a link to the repo for more information.

godot-rust logo

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

Recent developments have added foundational support to async that enables users to make use of the Rust async runtimes with the Godot Engine (thanks to chitoyuu for the PR).

In addition to the foundational support, lyonbeckers was kind enough to include a new recipe in the User Guide that covers how to configure async with tokio.

The team also merged several smaller bug fixes in #791, #795, and #800 and is making steady progress towards version 0.10.0.

Finally, the team has recently added a third party project section in the book to help promote games, applications, and libraries/tools that are working with godot-rust. If you have a project that you would like to be included, please feel free to reach out to the godot-rust team.

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!