Some time ago, I started using IGDB (the Internet Game Database) for tracking the games I’m playing. While I don’t feel great using an Amazon owned service, it’s incredibly comprehensive, and so much easier to update than using the various Python scripts I’d thrown together previously. The switch did however leave the game list on this site out of date and incomplete, so this weekend I found some time to address that. I also took the opportunity to bring the layout in line with my reading list which uses my current preferred balance between visuals and data density–‘Playing’ and ‘Reading’ sections show a grid of covers, while the longer ‘Played’ and ‘Read’ sections use simple bulleted lists.
Importing the data is fairly simple: since IGDB provides stable URLs for downloading CSVs of your ‘Playing’, ‘Played’, and ‘Want to Play’ lists, I use a Python script that downloads these, fetches covers using the IGDB API, and generates a Front Matter + Markdown file for each game. For example, ‘The Secret of Monkey Island’, which I’m currently playing, ends up being stored as
game-list/60.markdown with the following contents:
--- category: games link: https://www.igdb.com/g/1o platforms: - Amiga - Mac - Sega CD - DOS - FM Towns - Atari ST/STE status: Unbeaten thumbnail: 60-cover.jpg title: The Secret of Monkey Island ---
Modelling the data this way allows me to author a simple game list template for InContext (my static site generator) that iterates over all games, sorts them, and groups them by status. It’s an approach I’ve been using for my reading list that works well with most static site generators. (I even use it as the primary data model for my reading list manager, Bookshelf, which I hope to write up at some point.)