Call for review of achievement system

Call for review of achievement system

Postby acme_pjz » 08 Dec 2012, 14:23

Hi everyone,

Recently I have implements a lot of the planned achievements and committed to SVN. :) Here is the list (in AchievementList.h) (Warning: contains spoiler :!: )

{l Code}: {l Select All Code}
// Format: {id, name, file, pos, description, [type]}
// id: Identifier of achievement. Should not change once the new achievement is added,
//   otherwise the old statistics will be lost.
// name: Name of achievement. Translatable.
// file: The icon file. NULL for no icon.
// pos: Specifies which part of the icon will be displayed (left, top, width, height).
// description: Description of achievement. Translatable. Can be multi-line text.
// type [optional]: Specifies the display type of achievement.
//   ACHIEVEMT_HIDDEN [default]: Show "Unknown achievement" when unfinished.
//   ACHIEVEMT_TITLE: Only show icon and title when unfinished.
//   ACHIEVEMT_ALL: Always show icon, title and description.
//   ACHIEVEMT_PROGRESS: Show icon, title and description and a progress bar.
//     StatisticsManager::getAchievementProgress() function should return the progress (between 0 and 1).

AchievementInfo achievementList[]={
   {"newbie",__("Newbie"),"themes/Cloudscape/player.png",{0,0,23,40},__("Congratulations, you completed one level!"),ACHIEVEMT_TITLE},
   {"experienced",__("Experienced player"),"themes/Cloudscape/player.png",{0,0,23,40},__("Completed 50 levels."),ACHIEVEMT_PROGRESS},
   {"goodjob",__("Good job!"),"gfx/medals.png",{60,0,30,30},__("Get your first gold medal."),ACHIEVEMT_ALL},
   {"expert",__("Expert"),"gfx/medals.png",{60,0,30,30},__("Earned 50 gold medal."),ACHIEVEMT_PROGRESS},

   {"tutorial",__("Graduate"),"gfx/medals.png",{60,0,30,30},__("Complete the tutorial level pack."),ACHIEVEMT_PROGRESS},
   {"tutorialGold",__("Outstanding graduate"),"gfx/medals.png",{60,0,30,30},__("Complete the tutorial level pack with all levels gold medal."),ACHIEVEMT_PROGRESS},

   {"addicted",__("Addicted"),"themes/Cloudscape/player.png",{0,0,23,40},__("Played Me and My Shadow for more than 2 hours.")},
   {"loyalFan",__("Me and My Shadow loyal fan"),"themes/Cloudscape/player.png",{0,0,23,40},__("Played Me and My Shadow for more than 24 hours.")},

   {"constructor",__("Constructor"),"gfx/gui.png",{112,16,16,16},__("Use the level editor for more than 2 hours.")},
   {"constructor2",__("The creator"),"gfx/gui.png",{112,16,16,16},__("Use the level editor for more than 24 hours.")},

   {"create1",__("Look, cute level!"),"gfx/gui.png",{112,16,16,16},__("Created your first level."),ACHIEVEMT_ALL},
   {"create50",__("The level museum"),"gfx/gui.png",{112,16,16,16},__("Created 50 levels."),ACHIEVEMT_PROGRESS},

   {"frog",__("Frog"),"themes/Cloudscape/player.png",{0,0,23,40},__("Jump for 1000 times."),ACHIEVEMT_PROGRESS},

   {"travel100",__("Wanderer"),"themes/Cloudscape/player.png",{0,0,23,40},__("Traveled for 100 meter."),ACHIEVEMT_PROGRESS},
   {"travel1k",__("Runner"),"themes/Cloudscape/player.png",{0,0,23,40},__("Traveled for 1 kilometer."),ACHIEVEMT_PROGRESS},
   {"travel10k",__("Long runner"),"themes/Cloudscape/player.png",{0,0,23,40},__("Traveled for 10 kilometer."),ACHIEVEMT_PROGRESS},
   {"travel42k",__("Marathon runner"),"themes/Cloudscape/player.png",{0,0,23,40},__("Traveled for 42,195 meter."),ACHIEVEMT_PROGRESS},

   {"die1",__("Be careful!"),"themes/Cloudscape/deathright.png",{0,14,23,40},__("The first death."),ACHIEVEMT_ALL},
   {"die50",__("It doesn't matter..."),"themes/Cloudscape/deathright.png",{0,14,23,40},__("Died for 50 times.")},
   {"die1000",__("Expert of trial and error"),"themes/Cloudscape/deathright.png",{0,14,23,40},__("Died for 1000 times.")},

   {"squash1",__("Keep an eye for moving walls!"),"themes/Cloudscape/deathright.png",{0,14,23,40},__("First time being squashed.")},
   {"squash50",__("Potato masher"),"themes/Cloudscape/deathright.png",{0,14,23,40},__("Squashed for 50 times.")},

   {"doubleKill",__("Double kill"),"themes/Cloudscape/deathright.png",{0,14,23,40},__("Make both player and shadow die.")},

   {"die5in5",__("Panic death"),"themes/Cloudscape/deathright.png",{0,14,23,40},__("Died 5 times in 5 seconds.")},
   {"die10in5",__("This level is too dangerous"),"themes/Cloudscape/deathright.png",{0,14,23,40},__("Died 10 times in 5 seconds.")},

   {"forget",__("You forget your friend"),"themes/Cloudscape/player.png",{0,0,23,40},__("Finish the level with player or shadow died.")},
   {"jit",__("Just in time"),"themes/Cloudscape/player.png",{0,0,23,40},__("Player and shadow come to exit simultaneously.")},

   {"record100",__("Recorder"),"themes/Cloudscape/player.png",{0,0,23,40},__("Record for 100 times."),ACHIEVEMT_PROGRESS},
   {"record1k",__("Shadowmaster"),"themes/Cloudscape/shadow.png",{0,0,23,40},__("Record for 1000 times."),ACHIEVEMT_PROGRESS},

   {"switch100",__("Switch puller"),"themes/Cloudscape/player.png",{0,0,23,40},__("Pulled the switch 100 times."),ACHIEVEMT_PROGRESS},
   {"switch1k",__("The switch is broken!"),"themes/Cloudscape/player.png",{0,0,23,40},__("Pulled the switch 1000 times.")},

   {"swap100",__("Swapper"),"themes/Cloudscape/player.png",{0,0,23,40},__("Swapped 100 times."),ACHIEVEMT_PROGRESS},
   {"swap1k",__("Player to shadow to player to shadow..."),"themes/Cloudscape/player.png",{0,0,23,40},__("Swapped 1000 times.")},

   {"save1k",__("Save scumm"),"themes/Cloudscape/player.png",{0,0,23,40},__("Saved the game 1000 times.")},
   {"load1k",__("This game is too hard"),"themes/Cloudscape/player.png",{0,0,23,40},__("Loaded the game 1000 times.")},

   {"panicSave",__("Panic save"),"themes/Cloudscape/player.png",{0,0,23,40},__("Saved the game twice in 1 second.")},
   {"panicLoad",__("Panic load"),"themes/Cloudscape/player.png",{0,0,23,40},__("Loaded the game twice in 1 second.")},

   {"loadAndDie",__("Bad saving position"),"themes/Cloudscape/deathright.png",{0,14,23,40},__("Loaded the game and died in 1 second.")},
   {"loadAndDie100",__("This level is too hard"),"themes/Cloudscape/deathright.png",{0,14,23,40},__("Loaded the same saving and died 100 times.")},

   {"quickswap",__("Quick swap"),"themes/Cloudscape/player.png",{0,0,23,40},__("Swap player and shadow twice in 1 second.")},

   //ripped from Achievements Unlocked
   {"horizontal",__("Horizontal confusion"),"gfx/emotions.png",{0,0,23,40},__("Press left and right button simultaneously.")},

   {"programmer",__("Programmer"),"gfx/gui.png",{112,16,16,16},__("Played the development version of Me and My Shadow."),ACHIEVEMT_TITLE},

   //end of achievements

Please test each achievement (and each game statistics) in game to check if there are any bugs. And I think we need some better achievement icon/name/description, because I'm not an English speaker, I'm afraid that some of the achievement names and descriptions contain speeling and grammar mistake, and some are completely Chinese-English :lol:

PS: Some unimplemented achievements can be found in ... r:Acme_pjz and any new idea is still welcome

PS2: Please disregard "ACHIEVEMT", it's a bad typo and fixed in latest SVN
Some of my open source games on GitHub
User avatar
Posts: 502
Joined: 10 Dec 2009, 15:32

Re: Call for review of achievement system

Postby Edward_Lii » 11 Dec 2012, 15:39

Hello acme_pjz,

Sorry for the late reply.

One thing I noticed is that some achievement descriptions are imperative (get, complete, etc) and others are past tense (played, earned, etc).
I think it would be best to change them all to imperative. This also means that messages like the one for the "newbie" achievement can't be done (that way).

Here's a list of things I think should change, feel free to comment/give suggestions:
    newbie - "Complete a level."
    experienced - "Complete 50 levels."
    goodjob - "Receive a gold medal."
    expert - "Earn 50 gold medals."
    tutorialGold - "Complete the tutorial level pack with gold for all levels."
    addicted - "Play Me and My Shadow for more than 2 hours."
    loyalFan - "Play Me and My Shadow for more than 24 hours." (perhaps change the title to "Loyal fan of Me and My Shadow")
    create1 - "Create a level for the first time."
    create50 - "Create 50 levels."
    frog - "Jump 1000 times."
    travel100 - "Travel 100 metres."
    travel1k - "Travel 1 kilometre."
    travel10k - "Travel 10 kilometres." (Title should be "long distance runner").
    travel42k - "Travel 42,195 metres."
    die1 - "Die for the first time."
    die50 - "Died 50 times."
    die1000 - "Die 1000 times."
    squash1 - "Get squashed for the first time." (Change title to "Keep an eye for moving blocks!")
    squash50 - "Get squashed 50 times."
    doubleKill - "Get both the player and the shadow dead."
    die5in5 - "Die 5 times in under 5 seconds." (Perhaps change the title to something like "bad luck"?)
    die10in5 - "Die 10 times in under 5 seconds."
    forget - "Finish the level with the player or the shadow dead." (Title should be "You forgot your friend")
    jit - "Reach the exit with the player and the shadow simultaneously."
    record100 - "Record 100 times."
    record1k - "Record 1000 times."
    switch100 - "Pull the switch 100 times."
    switch1k - "Pull the switch 1000 times."
    swap100 - "Swap 100 times."
    swap1k - "Swap 1000 times."
    save1k - "Save 1000 times." (Change the title to "Play it save")
    load1k - "Loaded the game 1000 times."
    panicSave- "Save twice in 1 second."
    panicLoad - "Load twice in 1 second."
    loadAndDie - "Load the game and die within 1 second."
    loadAndDie100 - "Load the same save and die 100 times."
    quickswap - "Swap twice in under a second."
    horizontal - "Press left and right simultaneously."
    programmer - "Play the development version of Me and My Shadow."

Also I think there shouldn't be too many hidden achievements.
Currently a lot of the achievements are based around the player undergoing one aspect a lot of times (mostly dying :p ).
We should have some more achievements that can form a goal for the player, getting a gold medal at the first try of a level, complete a level (with a checkpoint) without saving, etc...

Anyway, I really like the achievement system, it adds a lot to the game. :)
User avatar
MnMS Moderator
Posts: 770
Joined: 20 Dec 2010, 16:46

Re: Call for review of achievement system

Postby odamite » 11 Dec 2012, 21:53

Hello everyone,

Great job with the achievement system! It's a nice addition to game bringing new and different goals for a player. :)

About the names, in my opinion the "Addicted" achievement could be interpreted both as negative and positive thing depending on person. I'm not sure if it could be changed to something like "Hooked". Is this more positive term or is there any other options? In contrast to I really like the "Me and My Shadow loyal fan" because it kind of praises the player and his/her effort.

Also I'm not sure what "Save scumm" means exactly. I hope that it doesn't have anything to do with "scum" which wouldn't be nice...

I agree with you. However I couldn't help noticing that you use "metre" instead "meter". I know this is a difference with British and American English. I just wonder which one should be used... :D
User avatar
Posts: 166
Joined: 16 Jan 2012, 16:28

Who is online

Users browsing this forum: No registered users and 1 guest