11 releases (7 breaking)
new 0.7.0 | Apr 30, 2025 |
---|---|
0.6.0 | Jul 5, 2024 |
0.5.1 | Apr 5, 2024 |
0.5.0 | Feb 20, 2024 |
0.2.0 | Mar 9, 2023 |
#188 in Game dev
687 downloads per month
Used in bevy-codex
37KB
208 lines
Bevy Settings
The goal of this project is to store settings in a resource throughout game launches.
Currently this crate supports Linux, Mac and Windows.
The crate will choose the appropriate path for each OS to store the config file.
TODO
- multi storage support
- file naming support
- obfuscation support, this should just make it minimal hard to change the data, it is not really secure
Usage
This example will generate a config file on your system but it probably will not hurt you if you pick something non existent
use bevy::prelude::*;
use bevy_settings::{Serialize, Deserialize};
#[derive(Resource, Default, Serialize, Deserialize, Clone, Copy)]
#[serde(crate = "bevy_settings::serde")]
struct Settings {
master_volume: f64,
custom_cursor: bool,
}
fn main () {
App::new()
.add_plugin(bevy_settings::SettingsPlugin::<Settings>::new(
"My awesome game studio",
"The name of the game"
))
.run();
}
on e.g. my linux machine this will create
❯ cat ~/.config/myawesomegamestudio/My awesome game studio.toml
master_volume = 0.0
custom_cursor = false
Known limitations
- the toml crate has problems with large numbers e.g. u64::MAX
- there is a problem with tuple structs e.g.
TestSetting(u32)
does not work butTestSetting{ test: u32 }
works fine.
Checkout the basic example to see how to persist the configuration.
Version | Bevy Version |
---|---|
0.1.0 | 0.9 |
0.2.0 | 0.10 |
0.3.1 | 0.11 |
0.4.0 | 0.12 |
0.5.0 | 0.13 |
0.6.0 | 0.14 |
Lan Game Studios
This crate is part of an effort to crate a game studio. Checkout Mega Giga Cookie Destoryer TD or the mission of Lan Game Studios if you like games or game development.
Dependencies
~16–26MB
~384K SLoC