A local savegame manager for Ubisoft Games
Find a file
2025-12-10 00:15:39 +01:00
external feat: add nlohmann/json header 2025-11-01 01:14:33 +01:00
src feat: add game db loading 2025-12-07 21:22:24 +01:00
.gitattributes Update .gitattributes for font header files 2025-12-10 00:15:39 +01:00
.gitignore feat (gui): add profile selection modal if multiple are found 2025-11-01 17:14:39 +01:00
.gitmodules initial commit 2025-10-28 20:53:40 +01:00
CMakeLists.txt feat: add nlohmann/json header 2025-11-01 01:14:33 +01:00
compile_commands.json fix: sentinel inclusion in savemanager core 2025-11-01 00:39:23 +01:00
README.md initial commit 2025-10-28 20:53:40 +01:00

SaveManager

A local alternative to Ubisoft's Cloudsync for their savegames.

Status Development Feedback


Motivation

Ubisoft's cloud sync in my opinion, sucks. I've had tons of save corruptions, entire wipe-outs you name it. The project began around June 2024, but I never managed to actually finish it properly. The original C# CLI version, which I wanted to replace with a GUI version in avalonia but I've come to love C++, ImGui and OpenGL and decided that I should do it properly.

Features

  • Local save backup and restore for Ubisoft games
  • Cloud sync (ironic, but we use rsync like gigachads)
  • Automatic detection of save directories
  • Dated backups
  • Minimal dependencies
  • Simple & customizable GUI

Building

Requirements

  • C++ 17+ compatible compiler (MSVC, GCC, or Clang)
  • CMake 3.20 or higher

Building

git clone --recurse-submodules https://github.com/msh31/SaveManager.git
cd SaveManager

git submodule update --init --recursive

cmake -S . -B build
cmake --build build
# optional, built as release:
cmake --build build --config Release

Dependencies

  • ImGui | Bloat-free Graphical User interface for C++ with minimal dependencies
  • GLFW | A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input
  • Sentinel | A security SDK with modular architecture, built by me. It's mainly for Windows but the logger is cross-platform since it's just files.

Note: After cloning, run: git submodule update --init --recursive