New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Achievements #33

Open
oestrich opened this Issue Oct 21, 2018 · 3 comments

Comments

Projects
2 participants
@oestrich
Owner

oestrich commented Oct 21, 2018

Gossip will soon have achievements, games can unlock them for players and they will be displayed on Grapevine if the character has been associated to a profile.

Attributes

This is what Gossip will hold on to. Grapevine will handle the character association.

  • ID: generated by Gossip, a UUID used to reference the achievement via events
  • Game: required, game associated with the achievement
  • Title: required
  • Description: required
  • Display: required, default true, if false the achievement is hidden on the public game view
  • Points: required, default 0, min 0, max 100
  • Icon URL: optional, if provided

Managing Achievements

Games will manage their achievements on Gossip, from the game show page, similar to connections. Create, edit, update achievements. Possibly delete them, deleting would clear out all associated player unlocks.

On any state change for an achievement, a backbone sync event will occur and update on Grapevine for display. Grapevine will have a public listing on the game profile page.

Games can have a maximum of 500 points in achievements.

Websocket API

Unlock an achievement for a player

To unlock an achievement for one of your players, send this event. The achievement must be from your game's list.

{
  "event": "achievements/unlock",
  "ref": "22d61b78-5ad4-4cfa-933f-02c6172d0964",
  "payload": {
    "achievement": "bbba4676-ac94-4e47-ad6c-f24c0192ac23",
    "name": "Player"
  }
}

Response if a ref is provided:

{
  "event": "achievements/unlock",
  "ref": "22d61b78-5ad4-4cfa-933f-02c6172d0964"
}

This will echo to the system backbone for Grapevine to catch on and unlock the achievement from there.

Questions

  • Should we include points? If so, what is the maximum number for a game?
    • If a game is 20 years old, should they be allowed to have "expansion pack" points added to their maximum?
  • How does a game know about the achievements on Gossip?
    • REST API?
    • Websocket sync events similar to the backbone events?
  • Should the game be able to CRUD achievements via websocket events?
@lorecrafting

This comment has been minimized.

lorecrafting commented Oct 21, 2018

Any opinions on using GraphQL?

@oestrich

This comment has been minimized.

Owner

oestrich commented Oct 21, 2018

I am not a big fan of GraphQL, so I'd lean against it. I've heard a lot of opinions about how it doesn't fit a platform like Gossip, but works great if say Gossip's front end was using it and expected no one else to.

I am also biased because I help run an API unconference! 😄

@lorecrafting

This comment has been minimized.

lorecrafting commented Oct 21, 2018

Ahhh icic cool!

@oestrich oestrich added this to Todo in Main Oct 28, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment