Code Monkey home page Code Monkey logo

opencloudsaves's Introduction

Open Cloud Saves

Join us over at Our Discord. We also have a website now!

Open Cloud Saves is an open source application for managing your saves games across Windows, MacOS, and Linux (including SteamOS). Open Cloud Saves is available for use officially as a “beta”. As a beta test, we recommend that you manually make a backup of your save data before usage. Until Open Cloud Save is more battle tested, we will issue a warning for users to use caution with “critical, beloved” save data.

Open Cloud Save gives an advantage over existing cloud solutions:

  1. Allows cloud saves for games without developer support
  2. Allows for the inclusion of only certain files or filetypes. This can prevent games syncing graphical settings in addition to syncing save data.
  3. Allows for sync between storefronts (you own a Steam on linux and a Epic Game Store version on windows

Key Features:

  1. Inclusion of specific save files based on pattern matching
  2. Customizable save data locations - you can tailor the app to your specific save locations
  3. Ability to create new save definitions - you do not need to wait for developers to support cloud saves for their games.
  4. Data protection - by default, OpenCloudSave will perform a dry-run before all syncs. This way you can see what changes will be made to your save data before they happen. (You can disable this functionality if you just want to immediately sync)

image

Install

Linux / Steam Deck

  1. We are now listed on Flathub and the Discover store on steam deck. We recommend downloading through flathub or the discover store on steam deck!

For power users we offer a precompiled binary for x86_64 in .tar.gz format.

Windows

  1. Download the Open Cloud Save Installer
  2. Follow the instructions for installation.
  3. Launch opencloudsave.exe located in C:\Program Files\OpenCloudSave\

NOTE: There is a chance that windows defender or your AV may flag this application as a "virus". This is a consequence of the application being written in golang. Windows marks a lot of golang applications as viruses, as documented here: https://go.dev/doc/faq#virus

This application is free and open source, and is free to audit.

MacOS

  1. Download the Open Cloud Save .dmg
  2. Drag the executable into your /Applications/ directory
  3. Launch OpenCloudSave

Build

On all platforms, you will need to initialize the rclone submodule:

git submodule update --init

Windows

For windows builds, you will need MSYS2. Specifically, you will need MINGW64

You will also need to download Webview 2 - https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section. This is a runtime requirement that is usually downloaded by our MSI installer. If you haven't already installed OpenCloudSave, you will need to download WebView2 to run your compiled application.

Run

pacman -S mingw-w64-x86_64-go
PATH=$PATH:/mingw64/bin/
export GOROOT=/mingw64/lib/go
export GOPATH=/mingw64

You will likely want to add these to your shell start up script.

Validate that go is installed correctly with

go version

You will also need gcc:

pacman -S mingw-w64-x86_64-gcc

NOTE: Running our build script will install go-winres. go-winres is a tool that will compile things like our icon into our application. You can inspect the code at https://github.com/tc-hib/

From there, you can run:

./build/win/build.sh
./build/win/opencloudsave.exe

If you would like to view the console logs of the application, you can build via:

./build/win/build.sh debug

To build the MSI, you will need WiX toolset v3.11. https://wixtoolset.org/

Once installed, run:

./build/win/package.sh

This will create the MSI in the build/win directory.

MacOS

For this build, you will need golang and a C compiler.

You may need to install xcode command line tools if you haven't already:

xcode-select --install

To build, you will need to run

go build

From there, you can run

./opencloudsave

To package the finished application, you can run

./build/macos/build.sh

This will compile a macOS application (as opencloudsave.app) and a DMG for distribution.

Linux

We support both a direct golang build, and a flatpak build

Local Build

In addition to golang, you will need the following deps depending on your distro:

Debian / Ubuntu:

sudo apt-get install golang gcc libgl1-mesa-dev xorg-dev libgtk-3-dev webkit2gtk-4.0

From there you can run

go build
./opencloudsave

Flatpak

For this example, you will need flatpak. This assumes you have basic familiarity with flatpak, but if you do not, you should be up to speed after running flatpak's getting started.

You can run

./build/linux/package-local.bash

This will build the flatpak - from there you can install it and run the flatpak version. package-local builds off of the current state of the repo, so you can iterate and build the app without needing to install any deps beside flatpak and flatpak-builder.

The following command builds the "release" version of the app. This is tied to a specific commit to ensure that the build is reproducible.

./build/linux/package.bash

opencloudsaves's People

Contributors

david-sunblink avatar daviddesimone avatar juliettebee avatar tylorr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opencloudsaves's Issues

Sync all Button

Perform a sync for all defined savegame locations, and if dryrun is good have toggle next to each to confirm or not the sync of specific games.

Add custom user file for game config

The idea is that users can define their own game configs - that way you can use this product for any game you personally define, even without upstreaming (but we will encourage upstreaming)

Update /pfx paths

We should either search for the steam autoconf OR translate the windows path to the PFX path

Cloud Saves unsuccessful for Jedi Fallen Order, requires manual input for each save

Describe the issue

Each time I try to make a backup of my steam deck files for Jedi: Fallen Order it works exactly once, then creates a new folder inside the parent directory that it uses for subsequent attempts, as this folder is not the game directory, files are not affected by the game program and syncing does not happen.

Steps to reproduce

  • Create a new entry titled Star Wars Jedi: Fallen Order
  • Set Linux Path to /home/deck/.local/share/Steam/steamapps/compatdata/1172380/pfx/drive_c/users/steamuser/Saved Games/Respawn/JediFallenOrder
  • Click Save
  • Sync
  • Observe a new folder in /home/deck/.local/share/Steam/steamapps/compatdata/1172380/pfx/drive_c/users/steamuser/Saved Games/Respawn/JediFallenOrderdrive_c now exists containing the local save files. These files are untouched by the game.

Save files uploaded but not downloaded to Deck

Describe the bug
After setting up the save directory of a Prism Launcher instance, the save data gets uploaded. However when I do the same setup on the deck and try to sync, the folder remains empty. When I attempt to sync the game, the app reports "no changes", implying that it thinks the files are there but when you open the directory in the file explorer the directory is empty.

To Reproduce
Steps to reproduce the behavior:

  1. Install Prism Launcher. Create a Minecraft instance.
  2. In Prism Launcher, select your instance and click Edit -> Worlds -> Open Folder.
  3. Add this path to OpenCloudSaves.
  4. Do the same for your Steam Deck.
  5. From your desktop PC, sync your files so it uploads the save data to cloud.
  6. Check your cloud backup and see that the files are uploaded.
  7. From your Steam Deck, sync your files so it downloads the save data from the cloud.
  8. It will report that there are things to download. Accept and wait for it to finish.
  9. Open the directory where the save data is supposed to go.
  10. The directory will be empty.
  11. Sync again and it will report that there are no changes.

Expected behavior
Save data appears in the specified directory.

Screenshots
N/A

Desktop (please complete the following information):

  • OS: Steam Deck OS
  • Version: Whatever the latest is

Additional context
In my case, directory for the save data in my Steam Deck is home/deck/.var/app/org.prismlauncher.PrismLauncher/data/PrismLauncher/instances/Yoru/.minecraft/saves

NextCloud storage option doesn't work

Describe the bug
When trying to use NextCloud as a storage option, No login/configuration window pops up, and the applications acts like it has configured the provider

To Reproduce
Steps to reproduce the behavior:

  1. Fresh install OpenCloudSave
  2. Click Select Cloud
  3. Choose NextCloud
  4. No configuration takes place

Expected behavior
NextCloud should have a popup for configuration, or oauth like Gdrive/Box, etc

Desktop (please complete the following information):

  • OS: Linux(steamdeck) and Windows 10
  • Version : v0.17.4

Save files aren't syncing, neither devices download, only upload

Describe the bug
Saves aren't syncing properly, just uploads everything from each devices side, no downloading. Tested Ryujinx (Switch emulator) save files, Fire Emblem Engage specifically.

To Reproduce
Steps to reproduce the behavior:

  1. Finish playing on Windows device, open up Open Cloud Saves, select game and click "Sync Game". Click confirm.
  2. Open up Dropbox and see that all files have been uploaded, I can see this by checking the date/time modified matching with what I have on my Windows device.
  3. Now open up Open Cloud Saves on Steam Deck.
  4. Click game, click "Sync Game", and then confirm.
  5. I can see through Dropbox that all the files from my Steam Deck have been uploaded, and the latest files have been deleted.

Expected behavior
I assumed the program would just download whatever the latest files would be on to the device asking to sync (in my case the Steam Deck downloading files from the Windows device's upload) if the files on the current device are older than what's on the cloud.

I also tried adding an empty text file with Windows device to sync (this does get uploaded, can be seen through the Dropbox site), and when I click sync on the Steam Deck's end, the text file gets deleted.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Windows 10

  • Version 21H2, 19044.2604

  • Steam Deck 3.4.4

Additional context
On the off chance that the files did sync properly (i.e the Steam Deck downloading the latest saves), I booted it up on the Deck, but can confirm it didn't.

Tried this a couple of times, but had the same results.

Add multiple data paths to UI

Under the hood, we have full support for multiple data paths for the same platform, but we don't expose it in the UI.

This is a stopper for users with multiple computers of the same OS with custom install paths

Add an option to not actually delete saves

The thought is to make a copy in a special folder - basically roll our own trash bin. This is due to some quirks in the actual google cloud trash bin (files still appear valid even though they are in the trash bin). It may be I just need to research more into the google cloud API

Errors in the sync process are not communicated in the GUI Layer

Describe the bug
Errors in the sync process are not communicated in the GUI

Additional context
I've been reproducing this by trying to upload to an FTP server that doesn't exist. We are piping the errors to the GUI layer, but the GUI layer isn't doing anything with them.

Support FTP/Local NAS

Is your feature request related to a problem? Please describe.
A lot of people don't use the major cloud providers, but instead run a local FTP server, or a local NAS. We should allow them to user OpenCloudSave for store their saves.

Additional context
rclone has a lot of support for these set-ups. In general, this should be as straight forward as setting up additional cloud providers.

Add ability to specify non-standard steam installation

On windows, we can pull a registry value to find steam, but I think we should allow the user to specify non-standard steam installs and the weird case of games downloaded from steam but not installed in a standard location.

Unable to select cloud provider

Tried to login via Google the first time round, Google threw an error saying it has run out of logins, or something similar. But after this the program won't let me select a new provider or try to login to another Google account.

Selecting any provider from the options just changes it in name, not getting any login prompts or any browser opens.

Support One Drive

Work would include:
Making a OneDrive cloud driver
Adding a UI hook to select the cloud driver

Create Option to follow symlinks (Needed for EmuDeck default install)

Is your feature request related to a problem? Please describe.
Add an option to support following symlinks via rclone ( -L, --copy-links ). Emudeck currently has a parent "save" folder that just contains symlinks to the other emulator's save folders.

Describe the solution you'd like
Either a checkbox for adding symlink options when adding custom games, or a text box to pass custom args to rclone

Support both Sync and BiSync operations using rclone

Currently, OpenCloudSave uses a bi-directional sync. This is useful because it will allow two directories across different devices to be in sync (including file deletes), however this isn't great for the situation that a user has two different set of saves files across two different devices and wants to "merge" them.

rclone has a "sync" operation that can easily be implemented as another option - I am open to feedback, but I am tempted to make "sync" the default with an option to switch to bisync.

Support building OpenCloudSaves as a shared library for 3rd party integration

Is your feature request related to a problem? Please describe.
OpenCloudSaves currently only provides an executable binary, which makes it more difficult for 3rd party integration.

Describe the solution you'd like
Provide a shared library build of OpenCloudSaves. Go buildmodes allows exporting Go methods as a C shared library which can be used by 3rd party software to integrate OpenCloudSaves.

Describe alternatives you've considered
One alternative would be to use the CLI provided by OpenCloudSaves to integrate it into other software.

Additional context
I am currently developing a gamepad native game launcher and overlay called OpenGamepadUI as a free and open source alternative. I would love to be able to integrate OpenCloudSaves into it either natively or as a plugin.

image

user_overrides is not being saved on flatpak

cloudperfs is being saved in the config dir - it's either a new bug for saving locally for overrides, or we need to move overrides to the config dir. It will be better suited for the config dir anyway

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.