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

9b4c494 · Jul 5, 2020

History

History
550 lines (410 loc) · 22.9 KB

File metadata and controls

550 lines (410 loc) · 22.9 KB

+++ title = "This Month in Rust GameDev #11 - June 2020" date = 2020-07-01 transparent = true draft = true +++

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

Table of contents:

Game Updates

Way of Rhea Trailer

^ Click to see the latest version of the game's trailer

Way of Rhea (steam) is an upcoming puzzle platformer that takes place in a world where you can only interact with objects that match your current color. It's being build in a custom engine, and custom scripting language both written in Rust by Mason Remaley. This month's updates:

Follow development updates on the game's Twitter or subscribe to its newsletter.

A/B Street - Adjust Traffic Patterns in Real Cities

Measuring the effects of changes

^ Measuring the effects of some changes

A/B Street is a traffic simulation game exploring how small changes to roads affect cyclists, transit users, pedestrians, and drivers.

June highlights:

  • Alpha release with a trailer, an excited reaction from r/seattle, and some local press coverage
  • Support for parking lots, automatically inferring the number and position of individual slots from OpenStreetMap geometry
  • Names of roads shown in-game, in a way that doesn't cause clutter with agents moving nearby
  • Work starting on light rail and restricting through-traffic to zones

A/B Street uses a custom GUI library, leveraging glium, usvg, and lyon. Help with Rust and visual/game design is always welcome! Check out the roadmap and good first issues.

Animation improvements

^ Animation improvements

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

In June, Veloren did a big interview with GamingOnLinux, be sure to check it out! Veloren's lead artist also started a weekly blog about his work on Veloren, which you can see here. Veloren recently reached the first page of most starred projects on Gitlab! The Veloren Youtube channel also reached 1000 subscribers.

A lot has been done over the last month towards 0.7, which is slated to release at the beginning of August. Lots of work has been done improving UI and animations. These will help towards the goal of 0.7 being the "progression" update. Many improvements have been made to the continuous integration system to make it more reliable and faster. Mac support was added to Airshipper, the Veloren launcher. Significant work was done on the world simulation front. This includes economic simulations that will represent trade and resource pricing in settlements and cities. Castle generation is also now in the works.

Work on castle generation

Test coverage and documentation has started to improve, and a workflow around it is being developed. The project is now hosting a proper documentation site that is updated with each merge. A #ux working group was created to facilitate discussions on improvements to player interactions in Veloren. Lots of translations were merged, including Swedish, Polish, and Brazilian Portugese. The skill system is moving on to implementation, being a coordinated effort between the game design, art, and combat working groups.

You can read more about some specific topics from June:

June's full weekly devlogs: "This Week In Veloren...": #70, #71, #72, #73, #74.

In July, work will be done to complete the progression systems. There will be financial meetings held to discuss how funds from the project's Open Collective will be distributed.


Also, check out a talk about open source and Veloren:

Veloren talk

Screenshot of the Pont board game

Pont is a multiplayer online board game based on Qwirkle, implemented by Matt Keeter. Both the client and server are written in Rust, using WebAssembly to run the client in the browser without any Javascript (besides a small shim).

It can be played online here!

The system architecture is described in a blog post and the source is available on Github

Discussions: /r/rust, Hacker News

Runner gameplay sample

runner is a simple side-scrolling endless runner game that takes place in a bright world that only has our fearless adventurer & a few pesky beings that are bent on keeping her from running! It uses specs for ECS and has multiple frontends: sdl2 & quicksilver. Between the two frontends it can target the majority of the platforms: Web, Mac, Linux, Windows (untested) & possible even iOS & Android.

Part of the game map

^ Part of the game map

Animal Fight Chess (斗兽棋, "Doe Show Chee") by @netcan is a Rust implementation of a popular Chinese game.

To win the game, one player must successfully move any animal into the Den(兽穴) of the opponent or eat all animals of the opponent. The basic move is just one space either forward, backward, left, or right. The pieces never move diagonally. Each player has eight pieces, different animals with different degrees of power, a larger power piece can eat a little power piece, but rat can eat elephant. Here's a picture of the pieces, their English names, and relative powers indicated by a number. See full rules at ancientchess.com or Wikipedia.

The project uses alpha beta pruning algorithm for AI and provides a python module to use AlphaZero algorithm for training.

gif

Guacamole Runner is a small game made with Tetra and Shipyard in approximately 2 days by @EllenNyan. The game's concept is that the player is constantly falling and must jump off planes to stay in the air. When they go over the top of the dirt tiles they plant flowers which gives them points.

Video of snaky keyboard lights in action

Wooting Snake is a snake game where the visuals are represented on your keyboard lights, instead of a computer screen.

TanTan released a video documenting the process making this project.

Weegames

^ Click to see a demo video

Weegames is a fast-paced minigame collection. There are 23 odd games all made using free images and sounds. The more minigames you beat the faster they get.

The source code is available here.

Learning Material Updates

Library & Tooling Updates

demo-gif

Just what everyone's always wanted, Rust on the Sony PSP! 😆

This project is a port and improvement of the unofficial C/C++ PSPSDK from 2005 It does not require a custom GCC toolchain to be installed. Only Rust nightly and a cargo subcommand.

The psp crate provides a psp::sys submodule that houses the entire Sony PSP API. We are working to have theseinterfaces merged into the libc crate. The PSP unfortunately uses non-standard dynamic linking, (and some libraries are statically linked!), so function definitions marked extern are not enough. Eventually we will wrap this sys lib with a more rust-friendly library.

Rather than patching LLVM or rustc, the rust-psp team has also merged a mipsel-sony-psp target upstream, and published cargo-psp. This is a subcommand that works exactly like cargo build, except it also builds the crate into a PSP-specific executable format called PRX and packages that into an EBOOT.PBP, the standard format for a PSP Homebrew.

The crate has reached full user-mode parity with the unofficial C/C++ SDK. Kernel-mode support still needs to be worked on. Aside from library imports, there is also support for PSP-specific custom assembly instructions via the vfpu_asm! macro, with no need for a custom compiler toolchain. There is also optional embedded-graphics support and a function to benchmark or time your code.

The next major milestone for rust-psp is std support. If you are interested in helping out, please feel free to join the rust-psp channel in the PSP Homebrew discord server.

Language Server Diagnostics in action

^ Mun language server diagnostics in action

Mun is a scripting language for gamedev focused on quick iteration times that is written in Rust.

After the dust of the Mun v0.2 release settled, this month focus has been on fixing several issues found by community members, improving the overall quality of the code base and working towards the next release: Mun v0.3.

Their June updates include:

  • Make It or Break It contest;
  • several fixes for issues that arose thanks to the contest;
  • the foundation for Mun projects;
  • an initial language server setup;

yaks is a minimalistic framework for automatic multithreading of hecs ECS library using Rayon data-parallelism library.

While the project itself started earlier this year, with this month's release yaks gained an overhauled API, further leaning into the promise of simplicity:

  • systems are any functions or closures of a specific signature,
  • Executor is a container for one or more systems,
  • system execution order can be defined when building an Executor to create concurrent chains of systems,
  • resources used by systems (any data that is not associated with an entity) are now borrowed for the duration of execution, instead of being owned by the framework.

All items in the library are exhaustively documented, and the repository contains a fully annotated example.

Enabled-by-default parallel cargo feature can be disabled to force everything in yaks to become single-threaded, which allows using code written with the framework on platforms without threading - notably, web.

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

  • A rework of the text rendering API, which improves performance and fixes a number of long-standing bugs
  • Functions for capturing the player's mouse
  • Various tweaks and bug fixes under the hood

Also, a new guide has been added to Tetra's website, listing some things to consider when distributing your game to the public. This guide is still a work in progress, so contributions are welcomed!

Arsenal is the concept for a 2D and 3D game engine that is fully integrated with Blender and built on a Rust core. The engine will be built around an entity component system ( probably Shipyard ) for its performance and game design advantages. The vision of Arsenal is to build an Open Source game engine that is suitable for games of any scale and that is easily approachable by a wide audience of both complete beginners and seasoned experts.

Arsenal currently has a POC working, but there is no support for adding custom game logic. The next major step for Arsenal is to get initial scripting support in Shipyard. The scripting plan for Arsenal borrows heavily from the Amethyst scripting RFC with the first target scripting language being Python. Other languages that are candidates for being added later are be Mun, Lua, and maybe other languages written in Rust such as Gluon.

More information on the Arsenal development direction can be found in the latest Arsenal development blog post.

Katharos Technology has gone live on GitHub Sponsors as a means to fund development of the development of the Arsenal game engine and supporting Rust gamedev libraries and tools such as GFX, and WGPU.

Vimnail - a Mouseless Image Editor

Demo of transforming Ferris

Vimnail is a WIP mode-based image editor inspired by Vim. The goal of the project is to be able to compose images without using the mouse.

TanTan also released a devlog video about the project.

Popular Workgroup Issues in Github

Meeting Minutes

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

Requests for Contribution

Jobs

Bonus

Just an interesting Rust gamedev link from the past. :)


That's all news for today, thanks for reading!

Subscribe to @rust_gamedev on Twitter or /r/rust_gamedev subreddit if you want to receive fresh news!