View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
871 | Composr | core_adminzone_dashboard | public | 2012-10-09 19:26 | 2025-01-02 03:34 |
Reporter | Chris Graham | Assigned To | PDStig | ||
Priority | normal | Severity | feature | ||
Status | resolved | Resolution | fixed | ||
Summary | 871: Admin achievements system (gamification) | ||||
Description | Make being a Composr webmaster fun, by bringing in some game mechanics: - Ongoing positive feedback (simple rewards for doing stuff, even if it's just getting some points and little success messages) to provide encouragement - Levelling up (trying to get to the top level) The intent is to guide the webmaster to make a well-rounded website, and to learn the system. Composr would have hooks defining particular achievements. Each hook would define: - a list of achievements, each with - a name (there'll be a corresponding 'label' language string, and a corresponding 'pass message' language string) - a level number - a point score - a function to measure if a named achivement was passed (Hooks would be bundled across different addons) Each level will have a name... - Level 1, Acolyte - Level 2, Apprentice - Level 3, Disciple - Level 4, Master - Level 5, Wizard A database table would track which achievements were currently passed and skipped. Every page request in the Admin Zone and CMS zone would trigger a check to see what achivements may have just been passed. It would be smart enough to not checked any already skipped or passed, or any from a higher level (it would detect what level you're on). Achievement checks would also happen during CRON. The levels would be as follows (each with 16 items, except there are 4 hidden achievements also - for a total of 100)... - Level 1 - Ran Setup Wizard - First forum topic - First news article - First new Comcode page - First poll - First gallery image or video - First quiz - First calendar event - First download - First smartphone user - First tablet user - First Microsoft Edge hit - First Firefox hit - First Safari/Chrome hit - Configured your own account with a photo and/or avatar - Set some configuration - Level 2 - First incoming hit from compo.sr forums TIP: Post in introduction forum - First new member joined - Adding a forum - First banner - Received first content comment [if enabled] - Received first rating [if enabled] - First forum topic with a reply - First active chatroom conversation - First catalogue entry - Hit 5000 words of content - First non-bundled addon installed - Received points on compo.sr forums [compo.sr username has to be configured] - Configured what custom profile fields you want - Done an admin search - Done a website search - Done a 'mention' in Comcode - Set some permissions - Level 3 - First Wiki+ page - First search engine indexing hit - Customise the inbuilt random quotes - Created a page with multiple header tags - Hit 15000 words of content - Reached 5 members - Have customised menu - Uploaded a custom logo - Given points to a member - Received a support ticket - Set favicon and webclipicon - Added media to File/Media library - Added image or video attachment - Given out an award to some content - Investigated an IP address - Changed a default language string - Level 4 - Have blocks on home page or panel with custom parameters - Aggregate points of your members over 500 - Sent out a newsletter - First mention on Twitter [Twitter handle has to be configured] - First like on Facebook [Facebook page has to be configured] - Hit 5 unique visitors in a day - First incoming search engine results hit - More than 5 users online at once - First inbound link - Reached 10 members - First log in from someone on Facebook - Received 100 points on compo.sr forums [compo.sr username has to be configured] TIP: Help people on compo.sr forum - Manually edited the CSS - Added hot-text banner within Comcode, and used it - Ran a Health Check - Used keep_su feature - Level 5 - Adding a custom PHP miniblock or minimodule - Run a command in Commandr - Running with SSL - Customised a template - Written some Tempcode inside a Comcode page - Reached 20 members - Accessed WebDAV - Set up a URL Scheme - Set up CRON - Got a working custom 404 page - Set up a robots.txt - Setup eCommerce settings (e.g. PayPal) - Added usergroup subscriptions - Used GUIDs in a template - Created a custom template set for a catalogue - Bonus achievements - Setting up a 2-way redirect to 'move' a module - Used the MATCH_KEY_MATCH symbol - Written some Selectcode for a block - Created a custom panel type (referencing it, and having a panel for it) - Added a multi-moderation - Got a newsletter subscriber - Changed default breadcrumbs - Changed fields.xml - Done an upgrade - Displayed an RSS feed via the side_rss or main_rss block - Added a custom zone - Exported a member CSV - Created a mutual friendship - Added a theme image - Created a backup - Added a Custom Comcode tag - Hidden achivements - Running the 'bsod' command in Commandr - Enabled a 'stupidity_mode' via a hidden option - Having any item of Comcode that contains the keywords 'Kirk', 'Spock' and 'McCoy' - Added a new emoticon that is an animated gif The staff checklist block would say: - What achievement level you are on - What percentage you are through the level, with number passed and number skipped in brackets - How many points you have - List of remaining achievements on your achievement level (integrated into the normal set of tasks on the dashboard, but with an achievement icon next to it) - (achievements already achieved would be visible when showing completed tasks; you can already show completed tasks on the checklist block so it's not a big change) You can skip achivements, and it just tells you you will level up without as many points. When you pass an achievement it would show the 'pass message' in an attached message. There'd be a new 'achievement' message type (alongside current warn/notice/inform). (Sometimes it would happen in the background and be detected with CRON, so the above would not always happen) It would also send out an achievement notification. Points would be given also as a 'system gift'. Therefore every achievement has an associated gift point transaction with it (assuming points are installed). When you go up a level, it will send a special notification. The particular message will be customised for each level, and probably include some gif animation. It should also tell the compo.sr site, so that a non-editable CPF of the member can be updated to reflect the level. The achievements system should be a non-core bundled addon. Some installation profiles would remove it. Product a tutorial listing all the achievements and giving hints on how to win them. (See 'Tips' above, but would have something for everything, except the Hidden achivements.) Ideas I don't think we should go for: - Direct competition between Composr webmasters. It would be too easy to cheat, and it would turn off some business users. - Making achivements separate per-staff-member - Fancy artwork and sound effects built into the main Composr UI (we'll restrict ourselves to artwork in notifications) Important design considerations: - I don't want this to be too challenging. It should be fun, not stressful. - I don't want people to be forced to do stuff they might not want to do, so everything should be skippable. Particularly special stuff will be in 'hidden' achievements. | ||||
Additional Information | Possible future extension would be to open up achivements to being a public website feature: - Segregate achievements per-user - Allow non-admins to achieve some particular achievements - Defining what achievements are enabled, and which are on which level, and how many points each is worth - Associating 'badges' graphics with achievements (optional) - Defining the levels - Showing achievements under a new profile tab - Also have a block to be able to display recent achievements (across all members) - Some new achivevements - Any award would automatically carry through as a dynamically-defined achievement, that award on that date given - Configurable achievements based on patterns (for each you define 'X', 'Y' (if applicable), the achievement graphic, and how many points you get.), e.g. - Xth entries of Y content posted - Xth time content liked by another member - Xth time being given points by another member - First X contiguous minute block of talking to other member(s) in the chat room - Receiving X points within Y days - Create a block that shows all achievements attainable - [Also look at Arbo's 'rewards' addon for ocPortal, which may have some ideas to merge in] - Optionally tying usergroup ladders to levelling up rather than point thresholds (allow both at once, operates as an 'AND' condition) - Add synonyms to Admin Zone search: rewards, ribbons, badges, achievements, milestones, trophy - Remove pre-existing badge synonym from synonyms.txt - Document everything in tut_points tutorial, and cross-reference with tut_subcom and tut_featured tutorials We had an issue for this (1118), but I closed that off as I thought it only made sense as an extension of this issue. (Split this into a separate issue if the rest is implemented) | ||||
Tags | Good for training, Roadmap: v11 partial implementation, Skills: Graphic design | ||||
Attach Tags | |||||
Time estimation (hours) | 60 | ||||
Sponsorship open | |||||
|
I think there's a lot to be said about this issue. Give users a dopamine hit, to keep them going with their Composr journey. It's obvious why it hasn't been prioritised, practical things like basic user experience, fixing bugs, features people really need, come first. But I'd argue that implementing this would do more to promote Composr use than say better drag and drop editing. So as soon as the project has the bandwidth to try something big, I think this should be considered. |
|
I think I might decide to implement this for v11, not necessarily for v11 itself but for composr.app, first targeting members rather than webmasters. Given we are changing to a Bazaar model, I can see how a feature similar to this would encourage more community participation, which would be very beneficial for composr.app . I think for the time being it will be a non-bundled addon, but just like hybridauth and karma, it will show up on the Setup Wizard for immediate install if desired. I see it being useful, but not on a mass scale. As far as its functionality, I think what I'll do is instead of everything being hooks, I'll use an XML configuration. The XML will define each achievement in a tag block with qualification tags inside (which all have to be met to receive the achievement, or perhaps I could also allow for simple "AND/OR" logic). Qualification tags can be focused on number of content types posted (and can define categories limited to, for example), pages accessed, or the values of custom profile fields. Maybe also allow for using a raw count of rows in a database table as a qualification. Hooks can define additional non-bundled XML configuration that can be used, for example, karma. Qualifications could also be other things, like usergroup membership or specific members for manual awarding. Manual achievements can also be defined as well given the ability to define usergroups or specific members as the qualifications for earning. This could prove very useful for a manual account verification process to vet verified members, as an example. In the future, the achievements system will need to have a special XML attribute for achievements specific to webmasters. Or perhaps I can just mark an attribute as visible only to the member who receives it, and that would be true for webmaster achievements. An additional attribute would mark whether the achievement is visible publicly on a special page that would list the achievements that can be earned (and a member's progress towards that, if applicable). Earned achievements would be public on a member's profile. I might re-do the rank tab a bit to accommodate achievements, and make rank public (but change it up when another member is viewing). |
|
Actually a better solution may be to use XML as the overall configuration, but the qualifications are defined as hooks. So each qualification to determine if an achievement can be earned would be a hook. The XML can take attributes for the qualification which are then passed as a map of parameters to the hook's function. And the hook returns either true if the qualification passes, false if it does not, or null if the qualification should be ignored for whatever reason (e.g. addon not installed). Hooks would have an additional optional function for determining the % progress towards completion of that particular qualification. In cases where multiple qualification blocks are defined (an "OR" condition), whichever block has the highest overall percent is what will be used for the actual percent towards completion for that achievement. And for qualifications within a block (an "AND" condition), achievements will take the sum of every returned % progress from each qualification (a float between 0 and 1), and divide it by the total number of qualifications which returned a progress, to get the overall progress for that block of qualifications. Example: <qualifications> <qualification name="content" types="image,video" galleries="nature" condition=">=" count="100" /> <qualification name="content" types="image" galleries="space,politics" condition=">=" count="10" /> </qualifications> <qualifications> <qualification name="content" types="post" forum="1" condition=">=" count="10" /> </qualifications> <qualifications> <qualification name="group" condition="in" id="1" /> <qualification name="group" condition="not_in" id="2" /> </qualifications> This defines that the achievement is "earned" if: - The member posted 100 or more collective images and videos in the nature gallery AND 10 or more images collectively in the space and politics galleries... OR - The member made 10 or more posts in the forum ID 1... OR - The member is in usergroup 1 but not usergroup 2 Let's say they made 10 image/video posts in nature, 1 image in space/politics, and 9 posts in forum ID 1. The member is in usergroup 3. Qualification block 1 is only 10% complete. But qualification block 2 is 90% complete. And block 3 does not report a progress since progresses are not applicable to usergroups. Since only one block needs to be 100% to earn the achievement, we take the highest value (90%) as the overall progress towards this achievement. |
|
In progress |
|
Marking resolved. While I do not have achievements for everything listed implemented by default, theoretically a large majority of the missing ones can be implemented especially with the actionlog hook for achievements. I will think on whether to implement webmaster specific ones by default. This isn't practical right now since achievements is a non-bundled addon (I made the determination to set it non-bundled for now since configuring it requires some XML expertise; if multiple people declare they find this addon useful, I may move it bundled in the future). |
Date Modified | Username | Field | Change |
---|---|---|---|
2016-12-08 12:46 | Chris Graham | Relationship added | related to 2300 |
2016-12-08 12:46 | Chris Graham | Relationship added | related to 1118 |
2017-11-26 16:19 | Chris Graham | Tag Attached: Can implement during live chat | |
2017-12-31 23:30 | Chris Graham | Relationship deleted | related to 2300 |
2018-01-01 05:32 | Chris Graham | Relationship deleted | related to 2258 |
2018-01-01 05:33 | Chris Graham | Relationship deleted | related to 2257 |
2018-01-01 05:33 | Chris Graham | Relationship deleted | related to 1118 |
2018-01-01 05:58 | Chris Graham | Time estimation (hours) | 20 => 60 |
2018-01-01 05:58 | Chris Graham | Summary | Admin gamification (encouragement) => Admin achievements system (gamification) |
2018-01-01 05:58 | Chris Graham | Description Updated | |
2018-01-01 05:58 | Chris Graham | Additional Information Updated | |
2018-02-07 20:36 | Chris Graham | Tag Attached: ocProducts client-work (likely) | |
2018-11-28 16:24 | Chris Graham | Tag Attached: Skills: Graphic design | |
2019-06-27 19:42 | Chris Graham | Tag Renamed | Can implement during live chat => Good for training |
2020-11-21 03:09 | Chris Graham | Additional Information Updated | |
2021-04-06 01:30 | Chris Graham | Tag Detached: ocProducts client-work (likely) | |
2023-02-20 23:07 | Chris Graham | Note Added: 0007936 | |
2024-11-27 16:10 | PDStig | Note Added: 0009685 | |
2024-11-27 16:14 | PDStig | Note Edited: 0009685 | |
2024-11-27 16:16 | PDStig | Note Edited: 0009685 | |
2024-11-27 16:17 | PDStig | Tag Attached: Roadmap: v11 partial implementation | |
2024-11-27 16:38 | PDStig | Note Added: 0009686 | |
2024-11-27 16:50 | PDStig | Note Edited: 0009686 | |
2024-11-27 16:51 | PDStig | Note Edited: 0009686 | |
2024-12-13 19:17 | PDStig | Assigned To | => user4172 |
2024-12-13 19:17 | PDStig | Status | Not Assigned => Assigned |
2024-12-13 19:17 | PDStig | Note Added: 0009696 | |
2025-01-02 03:31 | PDStig | Status | Assigned => Resolved |
2025-01-02 03:31 | PDStig | Resolution | open => fixed |
2025-01-02 03:31 | PDStig | Note Added: 0009748 | |
2025-01-02 03:34 | PDStig | Note Edited: 0009748 |