Как я сделал менеджер сохранений за 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) начал обрастать "жирком", появилась страница добавления/редактирования игры
4-5го января дописал возможность подтягивать информацию для игр из steam'а, автоапдейтер, добавил скриншот экрана во время сейва
6го янаваря за 3 часа нарисовал дизайн в figma и начал его имплементить
7го числа закончил основную работу
Итоги
Спустя 7дней, 80+ часов работы и 20к строчек кода из ничего появился опенсорсный микро-продуктыч, которым я сам активно пользуюсь(уже 500+ сейвов 😁) и надеюсь кому-то он тоже пригодится 😎
СсылОчка на репозиторий туть
СсылОчка на скачивание туть(скачать нужно только установщик ".exe" файл)
Я для таких вещей и хочу стать программистом, но пока ебусь только в рот.
Комментарий недоступен
Рыночек зарешал
Возьмите его кто-нить в ЭпикГеймс...
А он ачивки имплементировать за 2 года сможет?
Комментарий недоступен
Добавил теги, мб челам любящим DS будет интересно.
Но вообще вся соль в том что он не только для DS'а работает а вообще для любой игры с сейвами хранящимися в одном файле, не поддерживаются всякие комплексные системы сохранений(пока хочу собрать фидбек вообще какие необычные системы сохранений в играх бывают чтобы заинженерить решение для как можно большего кол-ва игр).