· announcements · 2 min read
Launch of OpenCloudSaves.com
An initial dive into the goals and methods of OpenCloudSaves.
An Introduction
I started programming OpenCloudSave in December 2022, and I have been overjoyed by community feedback so far. I believe that Valve’s Steam Deck is really showing the capabilities of Linux Gaming. With that, there is a growing demand for control over the ability to sync save data across multiple platforms. My motivation for this application came from the fact that Dwarf Fortress didn’t support Steam Cloud Saves upon release, and I didn’t like having two different save states between my PC and my Steam Deck.
Overtime, I want to grow Open Cloud Save to be a go-to application for syncing and backing up video game save data to the cloud. Some goals I have identified:
- Greatly expand our save data definition database.
- Allow the app to be run in the background to save data.
- Create a Decky plugin for Steam Deck users.
- Allow for managed “save states” so that users can maintain and manage multiple sets of save states for the same game.
Tech Stack
The current stack of OpenCloudSave is golang for general state management. We use a webview for GUI rendering, with some javascript/html/css for display. We use the popular tool rclone (also written in golang) for the file sync.
The initial prototype of OpenCloudSave was programmed in Rust. I performed all of the sync logic myself based on checksums and file modified dates. I initially only support Google Drive. I switched to golang when I found Rust’s community bindings for Google Drive lacking. I had a working bisync implementation when I decided to rewrite the application to use rclone when I identified all of the work to maintain multiple cloud providers while providing consistent quality to users.
Initially, I tried a native golang GUI framework. The wasn’t happy with the current state of golang GUI frameworks, so I decided to go the route of using a native webview. I really wanted to avoid the bloat of a full Electron app, so I found the native webview bindings for golang an adequate compromise. I try to keep the javascript very basic - I avoided React or other similar frameworks. I want to keep “snappiness” a goal of OpenCloudSave, while maintaining a solid cross platform experience.
Conclusions
I will keep this blog post short, but be sure to check this site out in the future to see our upcoming updates and announcements!