App purchases, online/offline, and piracy...

AdmanAdman Posts: 37Member
Let's say I have a trial game with an "unlock full game" option.

Obviously, the person needs to be online to buy the game.  So they buy the game, and the full version is unlocked.

The next day, they turn on their Ouya, and I can use the "get receipts" function to again verify that they have purchased the game.  They get the full game.

Now, for whatever reason, they lose internet access.  They should still be able to play the full version of the game.

So, fine, at time of purchase, I store a little crumb on their machine that indicates that they've purchased the game.  If they have that crumb, then the full game is unlocked.  A naive approach would be a little text file or something that said "unlocked=true" or whatever.

With regard to piracy, how do I make that crumb so that it can't be shared with everyone?

I have my own answers to this, but curious what others think?

Comments

  • Killa_MaakiKilla_Maaki Posts: 504Member
    Store their gamer UUID as well. This is unique from one gamer to the next, as well as from game to game (different games get different UUIDs even for the same account)

    Additionally, just to be safe, the next time the user does have internet access you could check their receipts and update the crumb file.
    You didn't remember the plot of the Doctor Who movie because there was none; Just a bunch of plot holes strung together.
  • KonajuGamesKonajuGames Posts: 560Member
    I believe the gamer UUID is unique per publisher, not per game.  This allows games from the same publisher to share data via a web service using the gamer UUID as the key.

    The crumb you store on the system could be encrypted with the gamer UUID as the key.  This means that if someone was to get that crumb from their device, it would be useless on anyone else's device.
  • MagnesusMagnesus Posts: 304Member
    edited May 2013
    Easiest approch: save also a hash of the data using UUID (maybe modified a little) as salt (so the hash is unique to the device). Be sure to set every of your games with different data, so people don't copy unlock code to your other games. :)
    Post edited by Magnesus on

  • SpoonThumbSpoonThumb Posts: 426Member
    If it's just for when people don't have internet access, then you might as well lock that purchase against the console ID as well as the UUID (I assume that's possible? Not really looked into it). After all, that purchase receipt shouldn't appear on a different console since it's only ever meant to be local storage.

    How you encrypt that is another matter
  • AdmanAdman Posts: 37Member
    Is there a specific way to get a console ID that you know of? 
  • KonajuGamesKonajuGames Posts: 560Member
    There is no public API to retrieve a console ID.  The Gamer UUID is the only identifier available to you.
Sign In or Register to comment.