Backup and restore PC game saves on Windows — find save folders, copy them to a USB drive, restore after reinstall. Supports Steam, Epic Games, GOG, Ubisoft Connect, and Heroic. Save paths from Ludusavi Manifest / PCGamingWiki. Electron · React · TypeScript · UI RU/EN · MIT.
Windows-приложение для поиска, бэкапа и восстановления игровых сохранений.
Перед переустановкой Windows скопируй сейвы на флешку или другой диск — и верни их на место после установки.
Стек: Electron + Vite + React + TypeScript · UI RU/EN · MIT
Автор: dpovkex
- Скан — приложение ищет папки сохранений в Documents, Saved Games, AppData и My Games, а также в деревьях Steam (
userdata), Epic/EGS, GOG Galaxy, Heroic/Legendary и Ubisoft Connect (savegames). - Узнавание игр — каталог Ludusavi Manifest (MIT, данные PCGamingWiki) + локальные оверрайды, эвристика и популярные названия; затем матч с локальной библиотекой Steam для appId/обложек (fallback — публичный Steam Store API, ключ не нужен).
- Бэкап — копирует выбранные папки на внешний диск и пишет
manifest.jsonс исходными путями. - Восстановление — по манифесту возвращает сейвы на место, в том числе если имя пользователя Windows изменилось (
C:\Users\Old→C:\Users\New). - Скрытие — ложные срабатывания можно убрать из списка; файлы на диске при этом не удаляются.
Вкладки: Бэкап · Восстановить · Steam · Скрытые. Переключатель языка RU | EN в шапке (выбор сохраняется).
ПКМ по карточке — контекстное меню. Поиск по названию, дата последнего изменения сейва, прогресс и ETA при копировании.
UI (React)
→ window.api.* (preload)
→ IPC handlers (Electron main)
→ scan / backup / steam / exclusions
Данные приложения: %APPDATA%\save-my-saves\
(exclusions.json, steam-meta-cache.json, ludusavi/ — в git не входят)
Каталог путей сейвов при первом скане скачивается с GitHub (Ludusavi Manifest, MIT) и кэшируется локально (ludusavi/manifest.yaml, ludusavi/index.json).
Требования: Windows 10/11, Node.js 20+
git clone <url-репозитория>
cd save_my_saves
npm install
npm run devОткрывай окно Electron с заголовком Save My Saves, а не вкладку браузера (localhost:5173) — в браузере нет window.api.
| Команда | Что делает |
|---|---|
npm run dev |
Dev-режим (Vite + Electron) |
npm run build |
Сборка renderer + typecheck main |
npm run clean |
Удалить dist/, dist-electron/, release/ |
npm run dist:win |
Установщик Windows → release/ |
npm run dist:winГотовый setup: release/Save My Saves-Setup-1.0.0.exe (также release/win-unpacked/).
Если сборка падает с EPERM при rename (антивирус/индексация), собери во временный каталог:
npm run build
npx electron-builder --win --config.directories.output=%USERPROFILE%\sms-build-outsave_my_saves/
├── electron/
│ ├── main.ts # Окно, IPC
│ ├── preload.ts # contextBridge → window.api
│ ├── scan/
│ │ ├── scanner.ts # Поиск сейвов
│ │ ├── blacklist.ts # Блэклисты, издатели
│ │ ├── gameKey.ts # normalizeGameKey
│ │ └── paths.ts # Корни и токены путей
│ ├── launchers/
│ │ └── discover.ts # Steam / Epic / GOG / Heroic сейвы
│ ├── catalog/
│ │ ├── knownGames.ts # Локальные оверрайды путей
│ │ ├── popularTitles.ts
│ │ └── ludusavi/ # Ludusavi Manifest (fetch/compile/expand)
│ ├── steam/
│ │ ├── steamMeta.ts # Steam + обложки (library → storesearch)
│ │ └── library.ts # Локальная библиотека Steam (vdf/acf)
│ ├── backup/
│ │ └── backup.ts # Копирование / restore + manifest
│ └── exclusions/
│ └── exclusions.ts
├── src/
│ ├── App.tsx # Состояние и wiring
│ ├── types.ts
│ ├── i18n/ # RU/EN словари + переключатель
│ ├── lib/ # format, scanProgress
│ ├── components/ # вкладки, GameTile, меню
│ ├── styles.css
│ └── main.tsx
├── public/icon.png
├── build/icon.png
└── package.json
- каталог путей Ludusavi Manifest / PCGamingWiki (MIT);
- поиск сейвов Steam Cloud (
userdata), Epic/EGS, GOG Galaxy, Heroic и Ubisoft Connect; - матчинг сейвов с установленными играми Steam (локальная библиотека);
- вкладка Steam: просмотр установленной библиотеки;
- переключатель «Скрыть сейвы лаунчеров» (Steam / Epic / GOG / Heroic);
- размер выбранной копии и ETA во время бэкапа;
- прогресс на карточках при копировании;
- поиск по названию;
- дата последнего изменения («2 ч. назад»);
- ПКМ: открыть папку / показать в Проводнике / убрать;
- язык интерфейса RU / EN.
{
"version": 1,
"app": "save-my-saves",
"createdAt": "...",
"hostname": "...",
"username": "...",
"userProfile": "C:\\Users\\...",
"entries": [
{
"id": "...",
"name": "Game Name",
"source": "known",
"locations": [
{ "originalPath": "...", "relativePath": "game_0", "sizeBytes": 0, "fileCount": 0 }
],
"sizeBytes": 0,
"fileCount": 0
}
]
}Подробные правила правок, карта «симптом → файлы» и инструкции по добавлению игр — в AGENTS.md.
MIT — см. LICENSE.