Gaming.WithAPlan

Game backlog clearing planner

Overview

I have a lot of games, purchased either through Steam Sales or Humble Bundles. I haven't played half of them half as much as I should like; and I have played less than half of them half as much as they deserve. I needed some help getting started.

I decided to write a tool to help organize my backlog. Originally, I was going to sort by Nearness to Completion, but that ended up not being possible, at least with the Steam API. Instead, I sort by peer pressure - it calculates which games you are missing achievements from, prioritizing ones a lot of people have first.

It also gave me a chance to build something using React, Python (Flask), and AWS - especially Lambda and Elastic Beanstalk

Current Status

Prototype usable, more work to do. Gaming.WithAPlan

Core Problems

  • Too Many Games!!!
  • I wanted to experiment with React
  • I wanted to experiment with AWS lambdas and Elastic Beanstalk
  • I wanted to experiment with the Steam API (and eventually other game library APIs)

Lessons Learned

  • The Steam API is surprisingly limited, especially when trying to retrieve statistical data. I actually talked to some of their API developers about it - its because people use it to "derive Valve's internals" and then invest accordingly. I had to do all the statistical analysis on my side.
  • React is pretty cool. It's architecture is a lot more opinionated, so it is harder to make bad choices. I still prefer Angular because it feels more flexible, though that may just be because I am more used to it.
  • I don't really care much for Flask. It is a little opaque and hard to get rolling - there are other tools that could let me accomplish the same tasks more easily. For instance, I might convert the Web API side to node instead.
  • Using a Lambda to build a reverse proxy in Cloudfront was the first time I felt like an AWS developer!

Current Objectives

  • Add some persistence so you don't have to recalculate your peer pressure scores every time.
  • Once the persistence is there, build out the "Find my soulmate" feature - it will find someone who has a similar playlist, so you can play together!

Tools

  • React
  • Python Flask
  • AWS S3
  • AWS Lambda
  • AWS Elastic Beanstalk
  • AWS Route53
  • AWS Cloudfront
  • Github