#async #asset #macro #derive


Asset pipeline complete with loader, database, importing plugins and procedural macros for asset definition from user-types

16 releases (10 breaking)

0.11.1 Oct 15, 2021
0.10.0 Aug 3, 2021
0.9.0 Jul 19, 2021
0.8.0 Feb 1, 2021
0.5.3 Jun 29, 2020

#374 in Asynchronous

24 downloads per month
Used in less than 7 crates


860 lines

Goods - Asset Pipeline

crates docs actions MIT/Apache loc

Goods is an asset pipeline that helps keeping asset importing code away from the app
and allows addressing assets with uuids instead of error-prone file paths and urls.

Goods provides fully async loader. Loader can be augmented with user-defined source implementations,
making it possible to load asset from any kind of storage.
And thanks to async nature it can be both local and remote storages.

Treasury is an asset database.
Once asset is imported it is given an uuid that can be used with provided out-of-the-box TreasurySource to load the assets.
On import Treasury calls user-defined importer to convert asset from authoring format into engine-native format.
Importers should be compiled into WASM library and placed into directory configured for importers lookup.
Provided plugin crate is an example of how to write a plugin and export importers from it.

A CLI tool is provided to perform importing manually.
Running cargo install goods-treasury-cli should install the tool. CLI executable name is treasury.

Engines using Goods pipeline are encouraged to support importing in their toolset.


Licensed under either of

at your option.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


~120K SLoC