DEV Community

Sakshat
Sakshat

Posted on • Edited on

5

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

GNU GPLv3 Image

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? (For Devs)

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…

Hope you learned something new 💖

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

👋 Kindness is contagious

Dive into an ocean of knowledge with this thought-provoking post, revered deeply within the supportive DEV Community. Developers of all levels are welcome to join and enhance our collective intelligence.

Saying a simple "thank you" can brighten someone's day. Share your gratitude in the comments below!

On DEV, sharing ideas eases our path and fortifies our community connections. Found this helpful? Sending a quick thanks to the author can be profoundly valued.

Okay