The goal of the site is to let users track their game library, progress completing games, time played, scores for games, etc.
Existing game tracking sites:
Similar tracking sites for movies/television/anime:
- Users
- Authentication with Devise
- 2FA (via devise-two-factor probably)
- Username
- Avatar
- External account links (Discord, Steam, Epic Games, Xbox Live, PSN, etc.)
- Users have a Game Library which contains Games
- Users have a profile
- Profiles
- Profiles can be Public or Private (only visible to Friends/Yourself? Username, Display Name, and Avatar will always be visible.)
- Bio (a longer-form description of the user)
- Game Library with scores, completion status, time played, etc.
- Should there be more granular access options, e.g. hiding time played?
- Should the user that owns the profile be able to choose what's visible by default in their profile's Library list?
- Followers/Following
- Activity Feed
- Game Library
- A "plan-to-play" list (different from a Wishlist?)
- Steam Importer (connect your Steam account and import/sync all the game data from it)
- Should be able to sync with Steam after you've imported your games.
- How to handle duplication, e.g. if I add my games and then use the Steam importer?
- Should also support importing from other platforms, but I don't know how many even have APIs for this.
- Score (like AniList's multi-score-system system? e.g. have 1/10, 1.0/10, 10/100, and thumbs-up/thumbs-down)
- Games (General): Games are an entity with a name, platforms, developers, publishers, a cover image, release dates, etc.
- Name
- Platform(s) (Windows, macOS, Linux, Nintendo Switch, Xbox 360, etc.)
- Should games have separate entries for each platform (e.g. Team Fortress 2 on Windows is very different from Team Fortress 2 on Xbox 360)?
- Should this differentiate between, e.g. Steam vs. Discord vs. Epic, etc?
- Developer (can have more than one)
- Publisher (can have more than one?)
- Cover image
- Release date(s) (
note that a game can have more than one release date due to platform differences or due to regional differencesThis was too complex to implement so games just have one release date) - External Links (Steam page, Discord store page, Discord server, PCGamingWiki, SteamDB, etc.)
- Relationships with other games (sequels, prequels, spinoffs, DLC, Special Editions, GOTY/Complete Editions, Remakes, Deluxe Editions, "sibling"(?) titles (e.g. Pokemon Red and Blue), etc?)
- For now, this adds too much complexity. Series' are sufficient.
- Series
- Official Website
- Note there can be more than one, e.g. for multiple languages.
- Genres
- I don't look forward to figuring out how to manage genres, but it seems kind of necessary.
- Average Rating
- Maybe also Median or a more detailed bar graph of the scores?
- Number of users who own the game / have completed it / plan to play it
- Companies
- Companies can both develop and publish games.
- Developers
- Publishers
- Game Purchase: A game in someone's library can be rated, can have time played, platforms upon which it's owned, etc. It is essentially a subclass of Games (General).
- Rating
- Time played (hours)
- Platform
- Owned
- Boolean? This is complicated by the fact that you can own a game on multiple platforms.
- What about previously-owned?
- Completion Status
- Unplayed, In-Progress, Dropped, Completed
- Should there be a status like
Completed (100%)
? I can see that being useful, but it also feels unnecessarily complicated. - Some games can't be completed (e.g. Overwatch, Counter-Strike, etc.), should that have a specific status?
- What about games that are in development, like Early Access games?
- Also worth noting that you can rent or borrow games, so you may not own them but have completed them.
- Maybe also have Completed*, which is "Essentially Completed" for games where you didn't quite complete it, but you feel you're finished with it?
- Start Date / Completion Date
- Comments (any notes you want to add about the game, essentially a mini review)
- Replayed (A counter for the number of times you've replayed a game)
- Favorite (you can favorite games in your library, which is tracked separately from your Score)
- Physical/Digital
- I'm really not sure how to handle this, theoretically you can own a game for Switch digitally as well as physically.
- Exporter, for exporting your games list as JSON
- Build the initial system for importing game information from another source (build the game database from the GiantBomb Wiki? Wikipedia/Wikidata? PCGamingWiki? A combination of these? Somewhere else?)
- Ended up getting data from Wikidata, as well as covers from PCGW and MobyGames.
- API
- GraphQL API
- Game creation / modification
- AniList has a concept of "moderators" that can update information on anime, e.g. adding missing genres or tags, changing the release date when it's delayed, etc.
- We'll need some way for the user to create a game when a new one comes out.
- All users can create games, but usually games are created when they're imported from Wikidata once every few days/weeks.
Some decisions that need to be made:
- Should scores work like AniList's multiple-score-types system? e.g. have 1/10, 1.0/10, 10/100, and thumbs-up/thumbs-down, you can theoretically represent all of those integer values of 1-100, but converting between some formats to others can be "lossy", though it doesn't have to be.
- A: Right now it's only a 100-point scale, though those other representations are still worth considering.
- Should there be an API? If so, should it be a REST API or use GraphQL?
- A: Yes, GraphQL.
- Should games have separate entries for each platform (e.g. Team Fortress 2 on Windows is very different from Team Fortress 2 on Xbox 360)?
- A: No. One game entry that covers all platforms.
- Should this differentiate between, e.g. Steam vs. Discord vs. Epic, etc?
- A: Not really, though you can set which store(s) you own a game on.
- How to handle completion statuses, especially for games that are multiplayer with no real "win state", e.g. Counter-Strike or Overwatch.
- A: It's pretty much just
N/A
for multiplayer games.
- A: It's pretty much just