Skip to content

Commit

Permalink
initial
Browse files Browse the repository at this point in the history
  • Loading branch information
JulianStiebler committed Jan 10, 2025
1 parent 4e448cd commit 117d64d
Show file tree
Hide file tree
Showing 32 changed files with 210,497 additions and 91 deletions.
39 changes: 39 additions & 0 deletions .github/CIBuildFiles/buildWindows.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# -*- mode: python ; coding: utf-8 -*-


a = Analysis(
['../../main.py'], # The main Python script
pathex=[], # Additional paths if needed
binaries=[], # Include binaries if needed
datas=[], # Include any additional data files
hiddenimports=[], # Hidden imports, if any
hookspath=[], # Hook paths, if any
hooksconfig={}, # Hook configuration, if any
runtime_hooks=[], # Runtime hooks, if any
excludes=[], # Exclude modules you don't want to bundle
noarchive=False, # Don't bundle into a single archive
optimize=0, # Level of optimization (0: no optimization)
)

pyz = PYZ(a.pure)

exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='GameSaveVault', # output executable name
debug=False, # Set to True if you want debugging symbols
bootloader_ignore_signals=False, # Ignore signals from bootloader
strip=False, # Don't strip symbols (helps in debugging)
upx=True, # Compress executable with UPX
upx_exclude=[], # Exclude files from UPX compression
runtime_tmpdir=None, # Runtime temp directory (optional)
console=False, # Set to False to hide console window (for GUI apps)
disable_windowed_traceback=False, # Set to True to disable traceback in windowed mode
argv_emulation=False, # Set to True to emulate command-line arguments
target_arch=None, # Architecture (optional, for cross-compilation)
codesign_identity=None, # Optional: for signing executables on macOS
entitlements_file=None, # Optional: for entitlements (macOS)
)
22 changes: 22 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
name: Bug report
about: Create a report to help us improve
title: 'Bug: Need attention immediately'
labels: bug
assignees: JulianStiebler

---

**What Operating System are you on** - Windows, Ubuntu, Mac, ...
- ...

**Describe the bug** - A clear and concise description of what the bug is.
- ...

**To Reproduce** - Describe the steps needed to reproduce the bug.
- ...

**Expected behavior** A clear and concise description of what you expected to happen.
- ...

**Screenshots** - If applicable, add screenshots to help explain your problem.
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
name: Feature request
about: Suggest an idea for this project
title: 'Feature: Requested'
labels: feature
assignees: JulianStiebler

---

**Is your feature request related to a problem? Please describe.**
- ...

**Describe the solution you'd like to see implemented**
- ...
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/question.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
name: Question
about: If you have a question propose it here.
title: 'Question: Attention needed'
labels: question
assignees: JulianStiebler

---

**A clear and concise description of what the question is.**
- ...
Binary file removed .github/screenshot.png
Binary file not shown.
Binary file added .github/screenshots/dialog_missinggame.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/screenshots/dialog_namedbackup.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/screenshots/main.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/screenshots/splash.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
80 changes: 0 additions & 80 deletions .github/workflows/autobuild.yaml

This file was deleted.

7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
**/__pycache__/
.venv/
data/installedGames.json
data/savegames/
build/
dist/

21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2025 Julian Stiebler (stblr)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
81 changes: 70 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,42 @@
# GameSaveVault
A program to manage saveFiles, allowing easy backups, giving access to more SaveSlots per game and so on.

### Work in Progress, initial Commit soon

![Alt text](.github/screenshot.png)
![Stars][Badge Stars] ![Watcher][Badge Watchers] ![Forks][Badge Forks]

![Badge Last Commit][Badge Last Commit] ![Badge Security Policy][Badge Security Policy] ![Badge Open Issues][Badge Open Issues] ![Badge Open Pull Requests][Badge Open Pull Requests] ![Badge Contributors][Badge Contributors]

![Current supported Games](https://img.shields.io/badge/"Supported"_Games-24607-blue)
> Savepaths may be wrong and are incomplete. Please contribute to the database. (WORK IN PROGRESS, full Steam/GOG/Epic Game Data Catalog coming in a different Repo with an API)
> All known SavePaths are dynamically created and may be incorrect, incomplete or not avaiable. The biggest part are best estimates to what is known to Steam and a small part is carefully handcrafted. You can override a SavePath if you find it to be incorrect or mislocated. You can also add your own Games and Paths if one would be missing.
Therefore, be sure when creating a backup you don't accidentally backup your whole game and so on. Many paths will need fine-tuning, but usually should be already in a somewhat correct directory.

![Alt text](.github/screenshots/main.png)

For more screenshots see [here](SCREENSHOTS.md)

# Table of Contents
1. [Roadmap](#roadmap)
2. [Overview](#overview)
3. [Features](#features)
4. [Transparency](#transparency)
5. [Built With](#built-with)

## Roadmap

- Publish the API directory for this program so every1 can work on the dataset
- needs some polish and some development still

- Add GOG Library (already written, just needs implementation)

- Extend the Information saved about Games. Data is already avaiable but needs ALOT processing (360k Files, 2GB Data just text)
- Make it more clear which games need a path (add games that have no path to our database)
- Add header_images from Steam, GOG and Epic Games (already avaiable as data but need to implement)
- Add game resources for some Games (Steam Manual, etc.)
- THIS BASICALLY REWORKS THE WHOLE KNOWNGAMEPATHS!

- Extend the Path-Database to Linux and Mac

## Overview

Expand All @@ -14,26 +47,52 @@ It allows for easy integration for per-Games functionality, so feel free to cont

## Features

- **Game Detection**: Automatically detects installed games by reading known save paths aswell as Steam and Epic registry data.
- **Game Detection**: Automatically detects installed games by reading known save paths aswell as Steam and Epic registry data. (See #transparency)
- **Custom Path Setup**: Users can manually override installation and save paths for games.
- **Extended Save Slots**: You're game is limited on SaveSlots? No problem.
- **Backup and Restore**: Create backups of save files and restore them as needed.
- **File Explorer**: Open installation and save folders directly from the tool.
- **Extended Save Slots**: Youre game is limited on SaveSlots? No problem.
- **Fast switch between Set-Ups**: You have multiple SetUps for different Speed- or Challengeruns? Now you can switch between them quickly.
- **File Explorer**: Open installation and save folders directly from the tool, without browsing or knowing where they could be.
- **Per Game Functionality**: Quick access links for resources to your favorite game.
- **Seamless Steam Integration**: Seamless Steam-Data integration. Updates gameData we can get from Steam on a weekly basis.

## Transparency

We are accessing some local data; including
- 2 Registry Keys, they are used to recognize your installed Games
- Registry Key for Steam (r"SOFTWARE\Valve\Steam")
- Registry Key for Epic Games (r"SOFTWARE\WOW6432Node\Epic Games\EpicGamesLauncher")
- We walk every path known to us regarding existing SavePaths, but we do not scan the computer otherwise.
For more details how we determine where you're games are at and so on, see [Security MarkDown](SECURITY.md).

## Dependencies
## Built with
> Python, powered by tkinter + TTKBootstrap
- `ttkbootstrap`: A modern theme for `tkinter` used to create a user-friendly graphical interface.
- `json`: For loading and saving game and path data.
- `zipfile`: For creating and extracting ZIP backups of save files.
- `shutil`: For file and directory manipulation.
- `os`: For interacting with the filesystem.
- `tkinter`: For building the graphical user interface (GUI).


<!-- Define URL aliases for badges -->
[Badge Stars]: https://img.shields.io/github/stars/JulianStiebler/GameSaveVault?style=social
[Badge Watchers]: https://img.shields.io/github/watchers/JulianStiebler/GameSaveVault?style=social
[Badge Forks]: https://img.shields.io/github/forks/JulianStiebler/GameSaveVault?style=social

[Badge CodeQL]: https://img.shields.io/github/actions/workflow/status/JulianStiebler/GameSaveVault/black.yml?branch=main&label=CodeQL&logo=github&logoColor=white&style=for-the-badge
[Badge Ruff]: https://img.shields.io/github/actions/workflow/status/JulianStiebler/GameSaveVault/ruff.yml?branch=main&label=Ruff%20Lint&logo=ruff&logoColor=white&style=for-the-badge

[Badge Release Version]: https://img.shields.io/github/v/release/JulianStiebler/GameSaveVault?style=for-the-badge&logo=empty
[Badge Release Date]: https://img.shields.io/github/release-date/JulianStiebler/GameSaveVault?style=for-the-badge&logo=empty
[Badge Code Size]: https://img.shields.io/github/languages/code-size/JulianStiebler/GameSaveVault?style=for-the-badge&logo=empty

[Badge Last Commit]: https://img.shields.io/github/last-commit/JulianStiebler/GameSaveVault?style=for-the-badge&logo=empty
[Badge Security Policy]: https://img.shields.io/badge/Security-Policy-red.svg?style=for-the-badge&logo=empty
[Badge Open Issues]: https://img.shields.io/github/issues-raw/JulianStiebler/GameSaveVault?style=for-the-badge&logo=empty
[Badge Open Pull Requests]: https://img.shields.io/github/issues-pr-raw/JulianStiebler/GameSaveVault?style=for-the-badge&logo=empty
[Badge Contributors]: https://img.shields.io/github/contributors/JulianStiebler/GameSaveVault?style=for-the-badge&logo=empty
[Badge Docstring Coverage]: https://img.shields.io/badge/docstr%20coverage-90%25-blue?style=for-the-badge&logo=empty

[Badge Downloads]: https://img.shields.io/github/downloads/JulianStiebler/GameSaveVault/total?style=for-the-badge&logo=empty
[Badge License]: https://img.shields.io/github/license/JulianStiebler/GameSaveVault?style=for-the-badge&logo=empty

<!-- Aliases for Files -->
[MD Security]: ./SECURITY.md
[MD Screenshots]: ./SCREENSHOTS.md
13 changes: 13 additions & 0 deletions SCREENSHOTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
## Splash Screen
![Alt text](.github/screenshots/splash.png)

## Main Window
![Alt text](.github/screenshots/main.png)

## Dialogs

### Add Missing Game
![Alt text](.github/screenshots/dialog_missinggame.png)

### Named Backup
![Alt text](.github/screenshots/dialog_namedbackup.png)
18 changes: 18 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Security Policy

## Supported Versions

| Version | Supported |
| ---------------------- | ------------------ |
| v1.0.0 | :white_check_mark: |
| lesser than v1.0.0 | :x: |


## How we determine installed games

First, we are checking for 2 Registry Keys. They are used to recognize the platform a game was installed with.
- Registry Key for Steam (r"SOFTWARE\Valve\Steam")
- Registry Key for Epic Games (r"SOFTWARE\WOW6432Node\Epic Games\EpicGamesLauncher")

After determining your Epic & Steam Library, we check for existence of Files in any given SavePath we know. This way we avoid scanning & analyzing unrelated files and also remove a lot of overhead.

1 change: 1 addition & 0 deletions compile.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pyinstaller .github/CIBuildFiles/buildWindows.spec
Empty file added core/__init__.py
Empty file.
Loading

0 comments on commit 117d64d

Please sign in to comment.