Code Self Study Forum

Game Development in Rust

While reading the roguelike Rust book, which uses a roguelike-toolkit1, I became curious about what libraries are available for game development in Rust. The article below mentioned a few.

GFX

https://crates.io/crates/gfx

There are quite a few low level graphical libraries like GFX. GFX is a low-level abstraction layer over platform specific graphical interfaces (OpenGL, Metal, Vulkan). It offers some handy wrapper over windows backend (glutin the Rust one, or wrapper around Vulkan system, GLFW and more). GFX is still at a very early stage of development with the present version being 0.17.

Piston

https://www.piston.rs/

It is the oldest game engine for Rust. It is also the most stable and one with great documentation. However, many people find Piston confusing and hard to use as it is super-modular by design. Sometimes it is even hard to understand which module to load for achieving a certain goal or build a certain component of a game.

Amethyst

Amethyst is a more recent game engine/framework inspired by commercial monolithic game engines. It comes with all the necessary dependencies in its package.

GGEZ

http://ggez.rs/

GGEZ is a simple 2D game engine inspired by the LĂ–VE engine. This library is more suited at creating simple 2D games for hobbyists. GGEZ is also very new and changes quickly. The design simplicity is an incentive for indie developers and hobbyists to start creating games with it.

A comment on Reddit recommended GGEZ:

I would definitely recommend ggez over piston especially for someone new to gamedev/rust. It’s a much more complete, all-in-one package, rather than piston’s very web-like and spread out architecture which is confusing for someone just starting out. In addition, ggez provides better performance with its built in 2d rendering, especially when taking advantage of the tools built in to improve performance.

Additional Resources

A subreddit:
https://old.reddit.com/r/rust_gamedev/

A YouTube comment suggests chooseing Amethyst or GGEZ over Piston:

I think it’s somewhat unfortunate that Piston is still seen as the primary Rust game engine… I’m quite active in the Rust game dev community and have worked on several of the game dev related projects. In reality, the two pure Rust game engines that have the most momentum at the moment are Amethyst and GGEZ. Piston’s development has slowed/stalled, and its architecture is pretty hard to understand for a new developer. If you want to make a 2d game and don’t want to have to fight with a big heavy engine but you do want a lot of easy built in helpers, try ggez. If you want a full featured, fast, data-driven game engine with support for 3d rendering, an ecs, and much more, try Amethyst.

If anyone knows of other resources, post a comment below.


1 Check out this example of that library.

This morning I saw that Specs (the entity component system used the the roguelike tutorial) has its own book:

https://specs.amethyst.rs/docs/tutorials/

I also came across the Rust GameDev Workgroup’s monthly newsletter.

which mentioned some resources, including this:

and a snake game tutorial:

  1. Game Architecture.
  2. Creating Game Instance.
  3. Rendering the Game.
  4. Placing the Food.
  5. Game Loop
  6. Moving the Snake
  7. Eating Food.
  8. Game Over
1 Like