Как я сделал менеджер сохранений за 7 дней(ну почти)

tl;dr

сделал опенсорсную компутерную программу для управления сейвами FireSave — с настраевыми интервалами автосейвов, шорткатами для сохранения прямо во время игры(F5) и скриншотами экрана, посмотреть как работает — на видео выше, скачать установщик можно на github(".exe" файл), ссылОчка -

Мотивация

Многие игры обладают мягко говоря несовершенной/упрощенной системой сохранений, единственный слот для сохранения, перезаписывание сохранений в тот же слот, отсутствие ручных сохранений, остуствие списка сохранений для возращения к более ранним точкам, чтобы нивелировать эти недостатки — я создал FireSave.

Подтолкнуло меня на создание FireSave'а прохождение первой части Dark Souls'а. Недавно стал ньюфаг-фаном Dark Souls игр, прошел DS3 до момента с Лорианом и Лотреком на котором собственно застрял на несколько месяцев :D и решил что прежде чем вернутся в DS3 - нужно восстановить навык игры в соулс-лайки и пройти Dark Souls: Remastered.
Пройдя игру оказалось что скипнул контент из DLC с рыцарем Арториасом и для того чтобы пройти на "100%" придется попотеть на NG+ проходя теже локации только с гораздо более сильными мобами по ощущениям в x1.5. Дойдя до финального босса Мануса я понял что файт будет слишком тяжелым, а я не готов сейчас тратить кучу времени на прохождение усиленной версии босса(NG+). После безуспешного гугления в поисках менеджера сохранений "решил проблему гениально" и написал 💾yet another saves manager💾

Как пользоваться

На примере Dark Souls:

1. На главном экране "Add Game"
2. Указать путь до ".exe" файла игры
3. Указать путь до сохранения, где лежит сохранение можно посмотреть на сайте PCGamingWiki -> найти "Dark Souls: Remastered" -> в блоке "Save game data location" будет путь до сохранения к примеру у Dark Souls: Remastered "%USERPROFILE%\Documents\NBGI\DARK SOULS REMASTERED\"
4. Нажать кнопку "Save", если игра установлена через steam для нее подтянутся картинка/название, для остальных пока нет такой возможности
5. Запустить игру
6. Сохранится, есть 2 варианта
- если в настройках FireSave включены автосохранения, они будут происходить автоматически
- нажать F5, если игра открыта в окне/окне без рамки сработает ручное сохранение, к сожалению для игр в fullscreen'а пока не работает
7. Загрузить игру, для этого желательно полностью выйти из игры или хотя бы выйти в главное меню(не во всех играх это сработает и есть маленькая вероятность с сетевыми играми получить внутреигровой софтбан/бан, в подавляющем большинстве одиночных игр получить бан невозможно) и нажать кнопку "Загрузить"
8. Запустить игру/Нажать кнопку продолжить в зависимости от игры
9. Profit?! Теперь можно бесконечно убивать Андре (¬‿¬)

Фичи

  • Авто-сохранения с возможностью выбора интервала
  • Быстрое сохранение(F5) прямо в игре
  • Скриншоты экрана для каждого сохранения
  • Автоматические обновления приложения

Ограничения

  • подгружаются данные только для офф игр из стима
  • быстрые сохранения не работают для игр в full screen'е(только в window/borderless window), возможное решение - добавить оверлей
  • пока невозможно указать другую папку для сохранений кроме как "C:/GamesSaves"

Как работает

FireSave - копирует файл сохранения в папку-хранилище(по дефолту "C:/GamesSaves") и сохраняет дополнительную информацию о сохранении - имя(по дефолту генерируется рандомно из 2ух слов), путь до сохранения, путь до скриншота, дату...

Планы

Short-term:

  • QOL(Quality of life) фичи для сейвов(редактирование названия, теги, сортировки/фильтры, поиск по названию)
  • Поддержка игр с необычными системами сохранений(Hollow Knight...?), тут я очень надеюсь на фидбек от пользователей😘 Для того чтобы собрать список таких игр и попытаться заинженерить решение
  • Перенос папки для хранения сейвов в другое место(не "C:/GamesSaves")

Mid-term:

  • Локализация, на несколько языков - русский, и язык сверх людей - казахский
  • Автоопределение установленых игр и путей к их сейвам
  • Import старых сейвов
  • Поддержка macos/linux(для извращенцев), на самом деле сейчас вроде нет platform-specific кода, нужно набраться смелости и потестировать dark souls на маке c тачпада :D

Long-term:

  • Библиотека сейвов - возможность скачивать/загружать свои сейвы в общий доступ
  • Синхронизация с облаком Google Drive/Dropbox/Yandex Drive/whatever...

Процесс создания

Ночью с 31-го на 1ое января начал писать первый прототип, очень долго провозился на начальном этапе с electron'ом, сложно было понять как хорошо архитектурно сделать работу со стейтом, где его хранить и как устроено взамодействие между главным процессом и окнами.

Скриншот первого коммита
Скриншот первого коммита

3го числа FireSave(тогда GSM) начал обрастать "жирком", появилась страница добавления/редактирования игры

Как я сделал менеджер сохранений за 7 дней(ну почти)
Как я сделал менеджер сохранений за 7 дней(ну почти)
Как я сделал менеджер сохранений за 7 дней(ну почти)

4-5го января дописал возможность подтягивать информацию для игр из steam'а, автоапдейтер, добавил скриншот экрана во время сейва

Как я сделал менеджер сохранений за 7 дней(ну почти)
Как я сделал менеджер сохранений за 7 дней(ну почти)

6го янаваря за 3 часа нарисовал дизайн в figma и начал его имплементить

Как я сделал менеджер сохранений за 7 дней(ну почти)
Как я сделал менеджер сохранений за 7 дней(ну почти)
Как я сделал менеджер сохранений за 7 дней(ну почти)
Как я сделал менеджер сохранений за 7 дней(ну почти)

7го числа закончил основную работу

Как я сделал менеджер сохранений за 7 дней(ну почти)
Как я сделал менеджер сохранений за 7 дней(ну почти)
Как я сделал менеджер сохранений за 7 дней(ну почти)
Как я сделал менеджер сохранений за 7 дней(ну почти)

Итоги

Спустя 7дней, 80+ часов работы и 20к строчек кода из ничего появился опенсорсный микро-продуктыч, которым я сам активно пользуюсь(уже 500+ сейвов 😁) и надеюсь кому-то он тоже пригодится 😎

СсылОчка на репозиторий туть

СсылОчка на скачивание туть(скачать нужно только установщик ".exe" файл)

543543
202 комментария

Я для таких вещей и хочу стать программистом, но пока ебусь только в рот.

141

Комментарий недоступен

72

Рыночек зарешал

1

Возьмите его кто-нить в ЭпикГеймс...

25

А он ачивки имплементировать за 2 года сможет?

7

Комментарий недоступен

19

Добавил теги, мб челам любящим DS будет интересно. 
Но вообще вся соль в том что он не только для DS'а работает а вообще для любой игры с сейвами хранящимися в одном файле, не поддерживаются всякие комплексные системы сохранений(пока хочу собрать фидбек вообще какие необычные системы сохранений в играх бывают чтобы заинженерить решение для как можно большего кол-ва игр).

7