Video Game Ownership in 2023 (GOG game library backup)

This will be a fairly high level guide for how to properly own games in 2023. Unfortunately this is a sad state of affairs and the option are very limited. There are, to my knowledge, currently only 3 ways. I’ll present them in worst to best which also roughly aligns with hardest to easiest.
Video Game Ownership in 2023 (GOG game library backup)
Photo by Nik / Unsplash

This will be a fairly high level guide for how to properly own games in 2023.

Unfortunately this is a sad state of affairs and the option are very limited. There are, to my knowledge, currently only 3 ways. I’ll present them in worst to best which also roughly aligns with hardest to easiest.

First, piracy. While not insanely hard to do it is a little…involved. Also for the best experience it will still cost you money. There’s a VPN, theres hardware or cloud services to host your own Arr* services, and there are Usenet access and indexer costs.

Second, DRM free Steam games. Steam is easy. Steam games are easy. Identifying DRM free games is a little tougher. There are many, many, many attempts to compile lists of DRM free Steam games. Unfortunately the tools for this are inconsistent at best.

The fatal flaw to this method is that the Steam client even if your games are DRM Free still only allows the use of one game at a time and requires a check-in every so often to offline properly. If you’re willing to deal with this then have at it. In most cases you can forgo the Steam Client and things still should work however there are ever more games while being technically DRM free that use the Steam Workshop libraries which are tied to the Steam Client and may break the game or otherwise hinder it’s use.

The third, final, and only true way, that I’m aware of, to own games like it’s 1995 is to buy them from GOG, formerly known as Good Old Games. To be entirely clear each game comes with a EULA and may mean licensing restrictions apply but virtually all games from GOG should come without DRM technology regardless of the licensing or EULA.

So, you buy your game on GOG. That’s pretty straight forward. I’m going to let their support help you out if you need assistance in doing that. Now what?

First, lets make a backup of the game. You can do that a number of ways almost all of them manual. GOG on Windows or Mac provides their own GOG Galaxy https://www.gog.com/galaxy Which is very Steam-like in nature. Similar to this but for Linux is Mini Galaxy which is a fully open source GOG client. https://sharkwouter.github.io/minigalaxy/ or via Flatpak here https://flathub.org/apps/io.github.sharkwouter.Minigalaxy Also for Linux the Heroic Games Launcher https://heroicgameslauncher.com/ The big daddy for all platforms is Heroic Games Launcher https://heroicgameslauncher.com

This is all well and good but ain’t nobody got time for clicking and installing every game. So lets get to automating our backup and updates. Enter GOGRepo. A Python script that lets you download, and update, a local repository of your GOG library. The script seems to have originated here https://github.com/eddie3/gogrepo but this seems very slow to update if at all. I’ve had much better luck using https://github.com/Kalanyr/gogrepoc instead. This seems to get updated frequently and has yet to break on me.

The instruction for gogrepo are pretty straight forward. Here’s the basics from the github.

Quick Start – Typical Use Case

Login to GOG and save your login cookie for later commands. Your login/pass can be specified or be prompted. You generally only need to do this once to create a valid cookie.

gog-cookies.datgogrepoc.py login

Fetch all new and updated game and bonus information from GOG for items that you own and save into a local manifest file. Run this whenever you want to discover newly added games or game updates.

gogrepoc.py update

Download the games and bonus files for the OS and languages you want for all items known from the saved manifest file.

gogrepoc.py download

Verify and report integrity of all downloaded files. Does MD5, zip integrity, and expected filesize verification. This makes sure your game files can actually be read back and are healthy.

gogrepoc.py verify

Advanced Usage – Common Tasks

Add new games from your library to the manifest.

gogrepoc.py update -os windows -lang en de -skipknown

Update games with the updated tag in your libary.

gogrepoc.py update -os windows -lang en de -updateonly

Update one or more specified games in your manifest.

gogrepoc.py update -ids trine_2_complete_story

Download one or more specified games game in your manifest.

gogrepoc.py download -ids trine_2_complete_story

This is pretty straight forward. I personally rename the script gogrepoc.py to gogrepo.py because I had already written the following script to help automate updates for my library. Here is the contents of gogrepoupd.sh This first runs an update of the manifest for any new games. It then updates the manifest for any updates to games. Then it runs a download of new and updated games for windows and linux, excluding any of the extra content like music or art.

#!/bin/bash

python3 gogrepo.py update -os windows linux -lang en -skipknown && python3 gogrepo.py update -os windows linux -lang en -updateonly && python3 gogrepo.py download -skipextras#!/bin/bashpython3 gogrepo.py update -os windows linux -lang en -skipknown && python3 gogrepo.py update -os windows linux -lang en -updateonly && python3 gogrepo.py download -skipextras &

I’ll leave further automation to you but this should get you a nice tidy, easily updated, library of games locally maintained.