A lightweight and generic JSON-based settings manager for small games or C# applications. Designed for simplicity, low and ease of use.
- Strongly typed via generics (
GameSettings<T>). - Automatically populates settings on initialization.
- Gracefully handles corrupt or invalid data (auto-resets to defaults).
Use provided nuget package or download the source.
🔧 dotnet add package TrimKit.GameSettings
Define your settings class - any public fields or properties will be serialized:
public class MySettings
{
public string Name = "Player";
public bool Fullscreen = true;
public float Volume = 0.8f;
public Difficulty Difficulty = Difficulty.Normal;
}Initialize settings object. It will automatically load existing settings from the disk or populate default values if it couldn't.
var settings = new GameSettings<MySettings>("MyAwesomeGame");And then, just use it!
// read values using static typing
var temp = settings.Values.Fullscreen;
// modify values
settings.Values.Volume = 0.5f;
settings.Values.Name = "UserX";
// save settings to file at any time
settings.Save();
// or load from file
settings.Load();
// reset to defaults
settings.ResetToDefaults();| Method / Property | Description |
|---|---|
string SettingsDirectoryPath |
Full path to the settings folder inside AppData. |
string SettingsFilePath |
Full path to the JSON file. |
T Values |
The current settings object instance. |
void Save() |
Saves settings to disk (atomic write). |
void Load() |
Loads from disk; resets and overwrites if corrupted. |
void ResetToDefaults() |
Reinitializes settings with default values. |
- v1.0 - Initial release.
This library is part of the TrimKit collection - a set of small, focused C# libraries that make game development more enjoyable by reducing the need for boilerplate code and providing simple reusable building blocks that can be dropped into any project.
- TrimKit.EventBus - Lightweight, mutation-safe event bus (event aggregator).
- TrimKit.GameSettings - JSON-based persistent settings manager.
- TrimKit.VirtualFileSystem - Unified file hierarchy abstraction to enable modding and additional content in games.
Each module is independent and can be used standalone or combined with others for a complete lightweight foundation.
Contributions are welcome!
You can start with submitting an issue on GitHub.
This library is released under the MIT License.