[engine] Achievement system

Brainstorm ideas of possible additions to the game. Read this before posting!

Moderator: Forum Moderators

Forum rules
Before posting a new idea, you must read the following:
Post Reply
Spixi
Posts: 91
Joined: August 23rd, 2010, 7:22 pm

[engine] Achievement system

Post by Spixi »

Hi there!

Since I did not find anything similar using the search function I am proposing this feature as a new idea.

One thing first: This feature is solely a incentive system and does not affect any aspects of the gameplay. However, I am convinced that it will be a great feature, because it will improve the experience and offer new challenges for players of all kinds.

Idea
There are many games with a great story and loads of scenarios. But after the main story most games will be boring after some time. So many players are looking for new challenges and that's where my idea comes on. There should be a kind of reward system which encourages to find new ways to play the game. If a player fulfills some conditions ("tasks") he should receive an "achievement" (quoted terms are open for discussion). The challenge is to collect these achievements and to complete all tasks.

Main benefits include:
  • Charm of finding alternative ways and new strategies
  • No impact on the gameplay like "mission systems" of other games
  • Progress continues even after playing all mainline campaigns
  • Endless further challenges can be added with UMC
Mockups
To show what I mean, I created some UI mockups. You will see that the screens are inspired by the existing user dialogues.

The first mockup shows that there should be a new option in the main menu. This option allows the player to access to overview over all "achievement groups". On the one hand an "achievement group" may contain any number of "achievements". If all "achievements" of a group are claimed, the group is shown as completed (e. g. with the laurel overlay). These achievements, on the other hand, consist of one ore more tasks. The tasks are linked with a logical AND, meaning that an achievement is attained when all oft its tasks are completed. Each tasks refers to one variable, a target value to complete the task and the method how the actual value is compared with the required one.
Mockup for Main Menu
Mockup for Main Menu
Mockup for Achievement Overview
Mockup for Achievement Overview
Mockup for Achievement Detail (this includes a tooltip which shows the current progress of the user)
Mockup for Achievement Detail (this includes a tooltip which shows the current progress of the user)
Examples for Tasks
  • Tutorial: Kill 20 quintains
  • HTTT: Win the scenario "A Choice Must Be Made" without killing one of the enemy leader's.
  • DW: Find the Storm Trident
  • ...
Implementation
Because of the required changes of the Main Menu and two new user dialogues this cannot be done with WML, so it will be a core enhancement. The advantage is that this feature can be used by the mainline and user-made content in the same way. This enhancement won't touch the main game in any way. I found out that it will be best to use build the solution on PersistenceWML. In this way a campaign writer just has to set a global variable and the achievement is "updated" when the user returns the the achievement screen. If a player "earns" an achievement, he does not get an instant message. Instead of this the completion of the tasks is (re-)calculated when and only when the player opens the corresponding dialogue. This is a very slim and KISSy solution, because there won't be any interrupts during the gameplay.

New "AchievementWML" proposal
The new changes in the engine also require additions to the WML API. After I studied the WML Reference I designed two new WML tags, as neer as possible to existing language elements. The new tags achievement_group and achievement are toplevel tags. They can be used in CFG files of core or UMC, but may not be placed in any multiplayer, test, tutorial and scenario tags. They are only processed if the user clicks the "Achievement" button in the main menu.

Code: Select all

[achievement_group]
    id=Example Group
    title= _ "My Example Achievement Group"
    icon="example_icon.png"
    description=_ "Lorem ipsum dolor est"
    image="example.png" #optional
[/achievement_group]

[achievement]
    id=Test Achievement
    group=Example Group
    icon="example_icon2.png"
    name= _ "The Answer"
    description= _ "Find the Answer to the Ultimate Question of Life, the Universe, and Everything!"
    [task]
         description=_ "Well, what's the answer?"
         namespace=test
         global_variable=the_answer
         #todo: how to handle the side key here

         #Only one of the following key-value pairs is allowed

         equals=42
         #contains=
         #not_contains=   #This does not exists for local variables, but because we have no NOT operator here.
                          #For example not_contains is usable for achievements which require that a special unit is not on the recall list
         #not_equals=
         #numerical_equals=
         #numerical_not_equals=
         #greater_than=
         #greater_than_equal_to=
         #less_than=
         #less_than_equal_to=
         #boolean_equals=
         #boolean_not_equals=
    [/task]
    #You may put another [task] tags as you want here
[/achievement]
I'm open to your opinions. What do you think about this idea?
User avatar
zookeeper
WML Wizard
Posts: 9742
Joined: September 11th, 2004, 10:40 pm
Location: Finland

Re: [engine] Achievement system

Post by zookeeper »

Personally, I'm not fond of achievement systems (not that I've played many games with them). I do very much enjoy pursuing special challenges (pacifist runs in games where it's possible, recruiting only a certain unit type, etc), but I do feel that those kind of things are best when not acknowledged by the game, or when acknowledged more like easter eggs (special ending for a non-lethal playthrough, for example).

If the game outright tempts me to "try this outlandish challenge!", then for me attempting that instantly loses most of its appeal. I no longer feel like I'm actually doing something special, and I know for certain that it's possible to achieve, achieved by lots of other people, and something that is supposed to be done. In other words, I no longer feel like I'm really achieving anything, I feel like I'm just playing the game as it was designed to be played.

I also think it's probably not entirely meaningless that self-imposed challenges and special playthroughs provides things for players to actually talk about with each other in a way that game-acknowledged achievements don't; if you're pursuing the trophies the game advertises, there's not really much to talk about it. The game tells you that you get a badge if you do this or that thing, and you do it and get the badge. Self-imposed challenges and special playthroughs on the other hand are often discussed with other players, in the form of first coming up with ideas, then wondering whether it's possible to do, what strategies might work and then possibly someone posting results. I think achievements should be about people coming up with new ways to have more fun with the game and sometimes provide some healthy competition, rather than the game listing the officially supported ways to have more fun with it.

At the very least, achievements should always be worthy of being called "achievements"; difficult, and not something you'd otherwise ever stumble across in the course of normal gameplay. For example you shouldn't get an achievement for finding a hidden storm trident item in a campaign, because even if it's hidden, it is there and supposed to be found. What you could get an achievement for would be for scoring 100 kills with that trident... :whistle:
User avatar
Xudo
Posts: 563
Joined: April 3rd, 2009, 5:26 pm

Re: [engine] Achievement system

Post by Xudo »

I think it can be done as WML add-on.
Spixi
Posts: 91
Joined: August 23rd, 2010, 7:22 pm

Re: [engine] Achievement system

Post by Spixi »

zookeeper wrote:If the game outright tempts me to "try this outlandish challenge!", then for me attempting that instantly loses most of its appeal. I no longer feel like I'm actually doing something special, and I know for certain that it's possible to achieve, achieved by lots of other people, and something that is supposed to be done. In other words, I no longer feel like I'm really achieving anything, I feel like I'm just playing the game as it was designed to be played.
Well I think that this system should be an optional feature, which should help new, advanced and even good players to develop new strategies and to find new ways to enjoy playing Wesnoth. But you are never forced to make use of it.
zookeeper wrote:I also think it's probably not entirely meaningless that self-imposed challenges and special playthroughs provides things for players to actually talk about with each other in a way that game-acknowledged achievements don't; if you're pursuing the trophies the game advertises, there's not really much to talk about it. The game tells you that you get a badge if you do this or that thing, and you do it and get the badge. Self-imposed challenges and special playthroughs on the other hand are often discussed with other players, in the form of first coming up with ideas, then wondering whether it's possible to do, what strategies might work and then possibly someone posting results. I think achievements should be about people coming up with new ways to have more fun with the game and sometimes provide some healthy competition, rather than the game listing the officially supported ways to have more fun with it.
Wesnoth is free software, so if you don't like the proposed achievements you may feel free to edit the WML to create your own challenges. You also may create addons which inject additional events into existing mainline campaigns to set or update special global variables and contain the corresponding acheivement description. So there will be endless possibilities.
zookeeper wrote:At the very least, achievements should always be worthy of being called "achievements"; difficult, and not something you'd otherwise ever stumble across in the course of normal gameplay. For example you shouldn't get an achievement for finding a hidden storm trident item in a campaign, because even if it's hidden, it is there and supposed to be found. What you could get an achievement for would be for scoring 100 kills with that trident... :whistle:
Okay, the thing with the storm trident was just bad example, but I think you know what I mean. You could create acheivements for pacific runs, one-unit-runs etc. As mentioned before, my proposed feature is only a global variable monitor which gives you an overview about what you have achieved and you never have to follow these suggestions.
Lawncable
Posts: 1
Joined: August 1st, 2017, 7:03 pm

Re: [engine] Achievement system

Post by Lawncable »

i think simple achievements are the way to go like:
completing campaigns
play a multiplayer game
win a game
lose a game
playing all factions once (not in a specific level, generaly)
discovering all units of a faction
...the list goes on...

It would be nice when we had such an engine achievement system, because then we would have a centralized place where plugins for platforms like steam, google play or Game Center can hook in and get their achievements from there.

We should integrate such platforms, especially in the app versions to be more attractive for new players.
Even if I don't care about achievements that much personaly. I belive it's a nice to have feature and I think it adds up to a more completed experience.
User avatar
Celtic_Minstrel
Developer
Posts: 2166
Joined: August 3rd, 2012, 11:26 pm
Location: Canada
Contact:

Re: [engine] Achievement system

Post by Celtic_Minstrel »

There sort of is the beginnings of an achievement system already in the campaign victory laurels, so it might not be that hard to expand that into a simple but fully-featured achievement system. The main thing I'd be worried about is discouraging cheating your achievements. I'm not opposed to an achievement system being added, but since no-one is particularly interested in implementing it right now, I don't expect it to be done in time for the Steam launch.
Author of The Black Cross of Aleron campaign and Default++ era.
Former maintainer of Steelhive.
User avatar
Bitron
Developer
Posts: 453
Joined: October 19th, 2015, 9:23 am
Location: Germany

Re: [engine] Achievement system

Post by Bitron »

zookeeper wrote:If the game outright tempts me to "try this outlandish challenge!", then for me attempting that instantly loses most of its appeal. I no longer feel like I'm actually doing something special, and I know for certain that it's possible to achieve, achieved by lots of other people, and something that is supposed to be done. In other words, I no longer feel like I'm really achieving anything, I feel like I'm just playing the game as it was designed to be played.
What if the player only knows about the number of achievements, but not exactly what he has to do to achieve them?
Example HttT - 4/13 Achievements.
You know, there are 9 more secrets to discover. You don't know what they are about. Infotexts and such would only be available for those you have achieved already.
User avatar
Zap-Zarap
Posts: 159
Joined: March 16th, 2015, 2:18 pm

Re: [engine] Achievement system

Post by Zap-Zarap »

zookeeper wrote:Self-imposed challenges and special playthroughs...
Btw: i did one the other day on "Isar's Cross" mp. My personal bonus challange was, to recruit once in all four castles on the map. I achieved it. 8)
Self-imposed challanges are fun, but i agree with zookeeper, i prefer to just do so and be happy after, and maybe talk about it in game chat, i -personally-don't need a laurel overlay for them.
Bitron wrote:What if the player only knows about the number of achievements, but not exactly what he has to do to achieve them?
Cool. That would be a bit like, what zookeeper was refering to with "easter eggs".
I like beavers.
Spixi
Posts: 91
Joined: August 23rd, 2010, 7:22 pm

Re: [engine] Achievement system

Post by Spixi »

Bitron wrote:
zookeeper wrote:If the game outright tempts me to "try this outlandish challenge!", then for me attempting that instantly loses most of its appeal. I no longer feel like I'm actually doing something special, and I know for certain that it's possible to achieve, achieved by lots of other people, and something that is supposed to be done. In other words, I no longer feel like I'm really achieving anything, I feel like I'm just playing the game as it was designed to be played.
What if the player only knows about the number of achievements, but not exactly what he has to do to achieve them?
Example HttT - 4/13 Achievements.
You know, there are 9 more secrets to discover. You don't know what they are about. Infotexts and such would only be available for those you have achieved already.
This actually sounds great.


This actually sounds great. So the [achievement] tag needs an optional attribute type= with the possible valuations default (always show name and tasks) or unknown (only show the name of the achievement and the completed tasks, but show the description and image of the achievement first, after all tasks are completed) or secret (hide the achievement until all tasks are completed)

Also the [task] tag needs an optional attribute type= with default (always show name, condition and current progress, unknown (only show the name of the task and suppress the tooltip until the condition is fulfilled; this may give you a small clue about what to do) or secret (hide the task until the condition is fulfilled)
Post Reply