Skip to content

Into the Backlog: An Offering to the Gods of Randomization

The preparation to conquer my backlog continues! I’m making good on my promise to talk about how I randomized game selection for myself. Links of note will be listed under Further Reading.

I briefly mentioned analysis paralysis in my post about gathering my inventory. In short, it’s the inability to make a decision due to overthinking every possible option. Gaming subreddits are littered with posts from casualties of this phenomenon. I myself am no exception.

A popular solution to combat this problem is randomization. It takes the agony of decision-making off the table by dictating what game to play. There’s a plethora of websites that will do this for you, but many focus on picking from Steam libraries. It’s not an unfair design choice, as Steam reportedly sold $4.3 billion worth of games in 2017 alone. Since I wanted to account for all my digital and physical games, I opted to take the programmatic route. I decided to use Python, as it was the first language I learned in my C.S. degree, though that was almost ten years ago now. 

Before I wrote a line of code, I needed to do some data cleanup first. First, I sorted each sheet by time to beat. I made the cutoff for short games around 12 hours; anything longer I considered a long game. I copied each list into their own text file, one for short games and one for long games. Types of games I excluded are:

  • Duplicates
  • “Endless” games (MMORPGs, MOBAs, sandbox, etc.)
  • Games I’ve already beaten and don’t intend to replay
  • Games I have no intention of playing at all

To the shock and surprise of no one except me, Python has come a long way since I last used it. It felt like I was trying to run before I could walk. I can’t say I’m nostalgic for the time spent debugging errors. Two days and several pots of coffee later, I (somehow) managed to write a functional random game picker. 

Image courtesy of MEME
Pictured: Me throughout the entirety of my college career.

In a nutshell, here’s what it does:

  1. The program checks to see if the text file it has to read is empty. If it is, congratulations, there’s no backlog! Otherwise, it moves on to prompt the user for input.
Don’t lie to me…
  1. The console presents a basic Yes/No prompt. Entering “N” quits the program. Entering “Y” will initiate the random choice function, print a game, then exit.
Presumably one would enter “Y.”
The long game program functions exactly like this.
  1. On exit, the program will rewrite the text file with a new list of the remaining games, excluding the chosen game.
Game is deleted from text file.

For an alpha version, it’s not terrible. There are several things I’d like to someday improve:

  • The program assumes you have a neat and tidy text file ready. That file also needs to be placed in the same folder as the program files, and the name of it hardcoded in. Not everyone will have that immediately handy.
  • It’s not neatly packaged and wrapped with a GUI, so to execute it as it is now you would need Python + IDLE to see it in action.
  • As mentioned before, the program currently overwrites the text file. Users should get an option to not do that if desired.
  • It would flow better if users had the option to get both a short game and a long game in one session. Right now, it’s broken into two separate files. 
  • Newly acquired games must be added to the text files by hand. I’m not sure how best to improve that process yet.  

In the end, I’m thrilled it works, even if there’s no practical application for it. Now I need to get back to the drawing board, as I’m going to take it out of the sandbox starting in May. Stay tuned!

Further Reading

AP in gaming Reddit results

What Should I Steam? 

The Backloggery

Leave a Reply

%d bloggers like this: