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
