DEV Community

Sakshat
Sakshat

Posted on • Updated on

Made a game launcher using python

I made a simple game launcher using python
It was not an easy task. But definitely doable.

Why did I make it?

I am sure anyone with a decent sized game library has had this issue. You want to play a game and also want to keep your desktop clean, i.e. not having a huge list of shortcuts staring down at you whenever you boot up a computer.

I did it for my sanity

I looked for existing options, but felt like they were doing a lot more than what I needed. I just wanted a list of the games installed. Nothing more nothing less.

Then I realised it'd be a great project to work on. My initial goal was to just make sure all the major stores / launchers like

  • steam
  • origin
  • uplay
  • epic games

So I sat down and devised a basic plan on how it's gonna work.

I quickly realised it was way easier than I thought. These existing launchers have a protocol in place to launch games which I can harness in my launcher which would also make sure that this doesn't break with any future updates.

Now these protocols need game IDs to launch a specific game
Here are some examples :

STEAM = "steam://rungameid/" 

EGS = "com.epicgames.launcher://apps/" # + ?action=launch&silent=true"

UPLAY = "uplay://launch/"   # launch/ID/0

ORIGIN = "origin://launchgame/"
Enter fullscreen mode Exit fullscreen mode

Then you just pass the appropriate game ID to these protocols and viola it launches the game!

How did I manage to find game IDs for every single game?

I had to spend some time on https://gaming.stackexchange.com/

This post here explains how I implemented it for uPlay
A simple way to find installed games' uPlay IDs with python

Essentially there are different ways to extract game IDs for each vendor, I wont go into the details here but if you wish to know more about how its implemented you can checkout the project linked down below.

GitHub logo sakshatshinde / Plei

A game launcher with no bloat

Plei

A game launcher with no bloat

forthebadge made-with-python

HitCount contributions welcome License: GPL v3

This project is ready for the launchers given below!

  • Steam
  • Origin
  • Epic Games Launcher
  • Uplay
  • Standalone Games (Not gonna do this anytime soon :c)

Why is this a thing?

As new game launchers came into being it increasingly got annoying to keep track of all the games over different stores/platform. I wanted to make a unified front where users can access all their games, including the one with no launchers. The goal behind this launcher is to be simple, minimilistic and bloat-free


How to install?

This installation assumed you have python 3.X installed. Get python here

  • Download Plei and extract it to your desired location
  • Run the following command

pip install -r requirements.txt

  • It might error out on "steamfiles" install. To fix this change your pip version to 9.0.X and run the above command again

python -m pip install pip==9.0.3

  • app.pyw will launch…

Hope you learned something new πŸ’–

Discussion (0)