Submissions by saluk tagged dataformatsareannoyingandawesome

A submission for Make games. 111

MyBacklog - the march forward continues!

I'm nearly done with data conversions now. I've created a separate json file that stores the information about your game library that only makes sense to have local, rather than synced to the server. Currently, the only information here, is a list of files associated with the game. And to be even more specific, there is only one file in the list, which is either the exe to launch the game, or the rom file in the case of emulated games.

I've also done a little bit of refactoring, and fixed numerous bugs (yes, there were still some bugs that sent me into nervous fits about whether my data was safe or not).

Almost everything left that I would want to do to the data could be handled by adding fields, which is a much less dangerous operation. I could add a tags system, or do other interesting things, but I think I'm going to call the current data format final. Baring any bugs I find.

Remaining tasks lie in user interface (editing games is pretty off, and there are big features missing), networking (syncing the game information across devices is pretty important), and integrations (humble isn't quite there, I'd like to add itch.io and desura, and being able to upload to other tools like backloggery or howlongtobeat would be cool to at least get started).

The data format SUPPORTS having one entry of a game that shows what stores it was purchased from, over the current layout of each store purchase being a separate copy of the game. I am not sure if I want to actually create code that handles and creates these unified entries however. It's definitely cleaner from a user perspective (do I have this game? oh yes I do, and look I bought it from gog and steam) - but I'm not sure if it's enough of a convenience to bend over backwards to make it happen. I think this is something I'm going to put in the future bucket :P

I leave y'all with a gif showing real time search of my library, and a frivolous but fun total time played counter, which sums up the time for the games in the search. You can see I am a big Assassin's Creed fan, playing the series collectively for roughly 11 days! This is not including the first 2 games, that I played previously outside of time tracking systems (steam or otherwise). Creed III is the longest so far, and I'm almost done with Unity - it's 42 hours is never going to hit 3's 72. III is actually my favorite of the series... despite some of it's problems. I think I am pretty alone there! Titles in green I have marked as "finished".

mybacklog

Two data format changes, one not so significant another quite significant. And a bugfix.

Firstly, I added a field to each game showing the last change that was made to it's data. Then I allow the client to sort by change date. This isn't really meant for end users, more as a way for me to more easily audit when I mess up my own data and how to possibly fix it.

Second, and more important, I changed how bundling was stored. Sometimes when you buy a "game" from a store, you will get more than 1 game along with that bundle. GoG has many games that are bundled (although they are moving away from this system as they update for GoG Galaxy). For instance, you can buy a game called Alone in the Dark 1 - but it actually comes with Alone in the Dark 2 and 3 as bonus downloads. The humble store (and humble bundles obviously) also has this notion where one "purchase" is tied to a collection of games. My previous implementation of this concept was very fiddly, done totally different for GoG and humble, and would not scale well (fetching the list of games inside a bundle would have to look at the entire game list).

I've unified the 2 current systems, and of course it will work for other stores as well.

In fact - it is possible if you so wish to make your own "bundle" of games in the list. For instance, you could collect all of the Geneforge/Avernum games as your own "Avernum Collection". The options for displaying this information on the game list aren't great, as the game list is flat and you will see the bundles along with the items inside the bundle just laid out side by side. So currently there is no real reason to do this. However maybe somewhere down the line I make it show bundles as their own single item that you then drill down into, or something.

More importantly, I'm a little more confident in other people building collections with the more clear data format, rather than the confusing custom fields I used to have.

And the bugfix: Also realized my matching algorithm to see if a game you are adding is already in the database had a huge typo error that may have been preventing it from working properly. So my local database may be royally messed up without my knowledge. And with 1200 games in the list it is really hard to check that they are all correct. Possible errors would be duplicate entries for a game, which is BAD. I have enough games to try and manage without duplicates! It's possible that the error did not actually apply to my data set and the test operations I was running last night, and I caught it in time.

Next up: Take another look at tasks and how the game .exe location is stored. I realize that currently, if I just switch over from my pc to the mac and sync the database over there, all of my games with hardcoded exe paths are going to crash when I try to launch them. I need to be careful of where I am storing local platform information that shouldn't be synced and needs to be recreated.