Following up on the feedback on this article
… there was one piece of recurring feedback that clearly needs addressing:
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
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.