Amethyst’s role in the ecosystem

(Erlend Sogge Heggen) #1

Following up on the feedback on this article

… there was one piece of recurring feedback that clearly needs addressing:

Ralith said:

I would much rather see concentrated focus on independent, composable crates that are more broadly useful.

Many people expressed concerns about the ecosystem channeling too much energy into Amethyst, which on the surface can look like a monolithic framework. There’s a lot to be said about Amethyst’s modularity story, but I don’t want to focus on that here.

Regardless of whether it’s more accurately described as monolithic or modular, I think Amethyst’s unparalleled momentum stands to benefit the Rust gamedev ecosystem in a major way. Amethyst is already a user of a lot of the distributed game-friendly libraries around, and thanks to its ambitious scope that list of (mostly optional) dependencies will continue to grow.

In a way this makes Amethyst one big compatibility checker, constantly making sure the independently developed Rust gamedev libraries are compatible with one another. Furthermore this interconnectedness makes Amethyst an excellent on-boarding tool; any developer who ventures a little bit underneath the surface will be exposed to the vast majority of foundational gamedev crates that the ecosystem has to offer.

I’ve assembled a list of Amethyst’s most prominent dependencies and standalone libraries to demonstrate how this symbiotic relationship is already in full effect.

Symbiotic dependencies

rustsim - https://github.com/rustsim

I think it’s fair to say that Amethyst’s move from cgmath to nalgebra was an important signalling boost for the rustsim project, which is now widely recognised as the one-stop-shop for math & physics in Rust.

gfx-rs - https://github.com/gfx-rs/gfx

@omni-viral (contributions) and @termhn (contributions) are frequently helping drive gfx-rs forward with code and design discussions.

rendy - https://github.com/rustgd/rendy

gltf - https://github.com/gltf-rs/gltf/

@Rhuagh already contributed once to gltf and I’m sure we’ll see more Amethyst developers contributing to gltf once 3D development becomes more commonplace.

rodio - https://github.com/tomaka/rodio

@Xaeroxe contributions.

Amethyst standalone libraries

Specs - https://github.com/slide-rs/specs

Specs fits in both lists. I put it here since Amethyst and Specs very much drive each other forward at this point.

Laminar - https://github.com/amethyst/laminar

Sheep - https://github.com/amethyst/sheep

nphysics ECS - https://github.com/distransient/nphysics-ecs-dumb

Still early days and currently specific to Amethyst, but the longer term plan is to make it into a general purpose ECS/specs library.

8 Likes

(Simon Rönnberg) #2

Don’t forget rendy, which stands to be the first higher level renderer in the ecosystem with support for the nextgen graphics apis.

2 Likes