Achievements Unlocked: Gamifying the Editor


#1

Shameless plug of announcement!

You can now unlock achievements in Atom.

Just created a package to display achievements in the editor. Use it when teaching, use it with your packages.

To send achievements just emit an achievement:unlock event using this spec:

# event - The {Object} event to process.
#   :name        - The {String} message to display to the user
#   :requirement - The {String} that says how the user achieved this
#   :category    - The {String} category where it belongs with other
#                  achievements (e.g. linting, git, ruby)
#   :package     - The {String} package this event was emitted from
#   :points      - The {Integer} number of points
#   :iconURL     - The {String} URL of an icon to display for the user, which
#                  can be base64 encoded but must have a valid data prefix
#                  such as "data:image/png;base64,". Optional, defaults to
#                  spinning octocat.

atom.emit "achievement:unlock",
        name: "Now this is what I call an environment!"
        requirement: "Configure environment variables prior to running a script"
        category: "configuration"
        package: "script"
        points: 100
        iconURL: "http://i.imgur.com/qRXoLmE.png"

…and the achievements package will pick up the event.

Achievements can only be earned once (caveat in issue #3)

What else do you think this needs?

Care to sneak some one line achievements into your packages? :wink:


#2

Im defenetly going to add support for this :smile: but I miss categories


#3

going to add support for this :smile:

Awesome!

… but I miss categories

What do you mean by categories? Is this something I’m missing from the package?


#4
atom.emit "achievement:unlock", 
    cat: "Linting"
    msg: "You have done your first JavaScript linting!"

atom.emit "achievement:unlock", 
    cat: "Linting"
    msg: "You have done your first CSS linting!"

#5

Ah, I could add that. Then we could actually display a list of achievements unlocked per category/plugin.


#6

Exacly!
plugin is a nice sub as well


#7

Should we also have difficulty levels for achievements?

Bronze, Silver, Gold or EditorPoints?

Admittedly, anyone can emit achievements for themselves if they’re comfortable with the console.


#8

Like the idea with points!


#9

Awesome. These will be great! I’m hitting the road with family now so I won’t be able to work on this until later this weekend.

The items that need to be changed:

  • serialize the number of points (unless we’re just summing across the achievements)
  • deserialization will need to take into account the points, but also have a migration strategy for this version change
  • store the category/plugin with the message in unlockedAchievements
  • test it!

GitHub Issue for adding categories/plugins and points.


#10

Alright, after some back and forth we’re now approaching a new spec within PR #9:

# event - The {Object} event to process.
#   :name        - The {String} message to display to the user
#   :requirement - The {String} that says how the user achieved this
#   :category    - The {String} category where it belongs with other
#                  achievements (e.g. linting, git, ruby)
#   :package     - The {String} package this event was emitted from
#   :points      - The {Integer} number of points
#   :iconURL     - The {String} URL of an icon to display for the user, which
#                  can be base64 encoded but must have a valid data prefix
#                  such as "data:image/png;base64,". Optional, defaults to
#                  spinning octocat.

atom.emit "achievement:unlock",
        name: "Now this is what I call an environment!"
        requirement: "Configure environment variables prior to running a script"
        category: "configuration"
        package: "script"
        points: 100
        iconURL: "http://i.imgur.com/qRXoLmE.png"

Resulting achievement

Some other examples:


#11

One more, because I can.

I apologize for the non-uniform screengrabs. I’m haphazard with cmd-shift-4.


#12

Difficulty levels. We need them :smile:

  • Can I play, daddy?: Edit a file in Atom after more than a week since the last time you did it

  • Literate: Open and read files over
    5 days without editing any of them

  • Work hard, play hard: Open (and edit) some files only during week days, and open (and edit)
    other totally unrelated files during the weekend (work vs. hobby)

  • B0rn 2 (0d3: Edit source code files in any language over all the days in one month

  • I <3 the smell of compiled code in the morning: Open Atom and compile a file between 6:00AM and 7:00AM

  • Commit Friends Club novice: 5 commits in one day

  • Commit Friends Club aprentice: 15 commits in one day

  • Commit Friends Club master: 30 commits in one day

  • Commit Friends Club guru: 50 commits in one day

  • Commit Friends Club Zen sacerdothise: 150 commits in one day

U know, I love Steam badges… :stuck_out_tongue:


#13

I love those! Here’s one of yours with an alternate display than above.

I’m kind of partial still to

Achivement Unlocked
Witty Message


#14

Alright!

Now that PR #9 has been merged in and v0.6.0 has been released, we’ve got the new achievement structure available to everyone.

Anyone who used the original structure should migrate to the new spec, but old messages will be handled cleanly.


#15

Not that this idea here is bullshit, but I think that reading Ian Bogost’s ‘Gamification is Bullshit’ should give us all insights.

EDIT: The general idea, I think, is: when things get gamificated, we usually work more on them. But it doesn’t get any funnier. The process of gamification doesn’t turn one activity into a game. It doesn’t bring fun. It just bring a little increase in the hours wasted on the thing.


#16

@vmussa

Coding is already fun and Atom is already enjoyable. There is no need for achievements and certainly no need for gamificiation. We’re not putting :lipstick: on a :pig: here. It’s still an editor.

This is all silliness based on how I saw the “Updating package dependencies” loader:

Ian is right in that blatant “gamification” for marketing drudgery and dull bureaucratic materials makes it incredibly bullshit. People see right through it.

I will be surprised if people go out of their way to earn any achievements, as they can trigger any achievement they want from the dev console. They’re more or less meant to be Easter Eggs.