17 releases (breaking)
Uses new Rust 2024
new 0.13.0-rc.1 | Mar 22, 2025 |
---|---|
0.12.0 | Nov 29, 2024 |
0.12.0-rc.1 | Oct 24, 2024 |
0.11.0 | Jul 4, 2024 |
0.3.0 | Jul 30, 2022 |
#233 in Game dev
5,310 downloads per month
Used in 33 crates
(18 directly)
47KB
633 lines
Bevy common assets
Collection of Bevy plugins offering generic asset loaders and writers for common file formats.
Supported formats:
format | feature | example |
---|---|---|
json |
json |
json.rs |
msgpack |
msgpack |
msgpack.rs |
postcard |
postcard |
postcard.rs |
ron |
ron |
ron.rs |
toml |
toml |
toml.rs |
xml |
xml |
xml.rs |
yaml |
yaml |
yaml.rs |
csv |
csv |
csv.rs |
Usage
Enable the feature(s) for the format(s) that you want to use.
Define the types that you would like to load from files and derive serde::Deserialize
, bevy::reflect::TypePath
, and bevy::asset::Asset
for them.
#[derive(serde::Deserialize, bevy::asset::Asset, bevy::reflect::TypePath)]
struct Level {
positions: Vec<[f32;3]>,
}
With the types ready, you can start adding asset plugins. Every plugin gets the asset type that it is supposed to load as a generic parameter. You can also configure custom file endings for each plugin:
use bevy::prelude::*;
use bevy_common_assets::json::JsonAssetPlugin;
use bevy_common_assets::msgpack::MsgPackAssetPlugin;
use bevy_common_assets::postcard::PostcardAssetPlugin;
use bevy_common_assets::ron::RonAssetPlugin;
use bevy_common_assets::toml::TomlAssetPlugin;
use bevy_common_assets::xml::XmlAssetPlugin;
use bevy_common_assets::yaml::YamlAssetPlugin;
fn main() {
App::new()
.add_plugins((
DefaultPlugins,
JsonAssetPlugin::<Level>::new(&["level.json", "custom.json"]),
RonAssetPlugin::<Level>::new(&["level.ron"]),
MsgPackAssetPlugin::<Level>::new(&["level.msgpack"]),
PostcardAssetPlugin::<Level>::new(&["level.postcard"]),
TomlAssetPlugin::<Level>::new(&["level.toml"]),
XmlAssetPlugin::<Level>::new(&["level.xml"]),
YamlAssetPlugin::<Level>::new(&["level.yaml"])
))
// ...
.run();
}
#[derive(serde::Deserialize, bevy::asset::Asset, bevy::reflect::TypePath)]
struct Level {
positions: Vec<[f32; 3]>,
}
The example above will load Level
structs from json files ending on .level.json
or .custom.json
, from
ron files ending on .level.ron
and so on...
See the examples for working Bevy apps using the different formats.
Asset savers / using the loaders in .meta files
The more involved example asset_savers
demonstrates how you can convert a json
asset into a processed postcard asset using the JsonAssetLoader
and PostcardAssetSaver
.
Compatible Bevy versions
The main branch is compatible with the latest Bevy release.
Compatibility of bevy_common_assets
versions:
bevy_common_assets |
bevy |
---|---|
0.13 |
0.16 |
0.12 |
0.15 |
0.11 |
0.14 |
0.10 |
0.13 |
0.8 - 0.9 |
0.12 |
0.7 |
0.11 |
0.5 - 0.6 |
0.10 |
0.4 |
0.9 |
0.3 |
0.8 |
0.1 - 0.2 |
0.7 |
main |
0.13 |
bevy_main |
main |
License
Dual-licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Contribution
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.
Dependencies
~21–35MB
~554K SLoC