Skip to content

A lightweight C# library for managing game settings using strongly-typed access with JSON files stored in the user's AppData directory. It supports automatic recovery from corrupted data, built-in defaults and atomic file operations.

License

Notifications You must be signed in to change notification settings

Lurler/TrimKit.GameSettings

Repository files navigation

TrimKit.GameSettings

A lightweight and generic JSON-based settings manager for small games or C# applications. Designed for simplicity, low and ease of use.

Features

  • Strongly typed via generics (GameSettings<T>).
  • Automatically populates settings on initialization.
  • Gracefully handles corrupt or invalid data (auto-resets to defaults).

Installation

Use provided nuget package or download the source.

NuGet

🔧 dotnet add package TrimKit.GameSettings

Quick start

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();

API Overview

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.

Changes

  • v1.0 - Initial release.

TrimKit Collection

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.

Each module is independent and can be used standalone or combined with others for a complete lightweight foundation.

Contribution

Contributions are welcome!

You can start with submitting an issue on GitHub.

License

This library is released under the MIT License.

About

A lightweight C# library for managing game settings using strongly-typed access with JSON files stored in the user's AppData directory. It supports automatic recovery from corrupted data, built-in defaults and atomic file operations.

Topics

Resources

License

Stars

Watchers

Forks

Languages