FMCorz / moodle-block_xp

A gamification plugin for Moodle allowing students to gain experience points and level up.
https://levelup.plus/?ref=github
150 stars 41 forks source link

Simplistic filter that would get points from total grade category #77

Closed Canx closed 4 years ago

Canx commented 6 years ago

This is an idea to consider, but is a radical one. It would simplify a lot the plugin because it would delegate all the rule system to the Moodle grade system. It would directly get the total points of a grade category. No events, no rules, nothing. The category would be of "natural" type, adding all the activities points in the category.

FMCorz commented 6 years ago

Interesting. Does this mean that you would want to give 80 points of experience when such category grade is 80/100 for instance? Can you expand a bit more on how you would use it and why?

Canx commented 6 years ago

Ok, I'll try!

This is an example of a grade category that I used last year, using the natural weighting aggregation: aggregation

As you see in the first column I can have more than 100 points because activities sum up with no limits. Because I need an official grade I usually encapsulate this aggregation into another one, that scales down the points obtained (2nd column), in Spain from 0 to 10.

This simulated a gamification system using only the Moodle grading system. The poins gained are not the maximum of each activity, are the ones obtained in their grade. The problem I had was that the student had to go inside the grading page to realize how many points they had. But that problem is well solved with the LevelUp! block.

If I could use directly the first column as the current student points in LevelUp! I could leverage all the Moodle grade system (maximum activity points, pass grade, current obtained points, inner aggregations...) instead of trying to replicate it using custom rules in the plugin, and I would have the visuals and reports that LevelUp! has.

If I had time I would change the LevelUp GUI to something similar to this: points

Grade category would be filtered only to the ones with natural type weighting because it doesn't make any sense to have other type. The other ones doesn't increment with time, doesn't get the "progress feel" a gamification system should have.

Some problems that I haven't thought about are how to check the object which gave the points and how many points were obtained, as the plugin would get only the total points directly from the grade system. Maybe "user_grade" event could also be checked to see if total aggregation points have changed, and save the component which triggered and the points variation.

Hope this makes any sense. I came to this after realizing that #76 would be difficult to implement (and you confirmed it!), but I think this would solve it better.

Edit: natural weighting seems more complex, I'm refering here to this subtypes:

Ok, let me know the problems I haven't seen ;)

FMCorz commented 6 years ago

It's a great idea you're having, and it's definitely worth analysing in details what the different outcomes can be when using such a feature. For now, the biggest problem I'm seeing is that experience points could go backwards, which is not something I designed the plugin for. I'm not against it, but it can be tricky.

I also know from experience that gradebook setups are extremely complex at times, and the result very strange. It's not uncommon for teachers to change grades, or weights, in the middle of a course, which means that we could have very unpredictable results.

Moreover, the one issue I still have with grades is that they do not depend on a student's action, they occur only when the teacher performs something. That in turn may make the student wonder why they XP does not change when they do stuff, only when they log back in (typically after a teacher's grading).

I had forgotten about passive XP. And we actually have the same issue with "Course completion" as it's only triggered by cron. I'm not sure how effective the plugin is when students do not directly see the positive result of their actions.

Going back to the main topic, I had requests to reward for a grade, so I'd see larger and not just limit this to a category. The main issue we'll face is how to reconcile grade going up and down. If we give teachers the option to "Allow regrades", "Allow lower grades", etc... we may add so many options that it would in turn be too complex.

It's always difficult to find a good compromise between the "That would be awesome", and "Who is going to use this". Sometimes I already find that the plugin is getting complicated, and that's definitely not something I want. Not saying that I am against your idea, just that I want to make it right. People from other teachers would definitely be valuable!

Canx commented 6 years ago

I'm glad you liked it! I understand that this must be first of common interest to other teachers, maybe the Moodle Grade System became so difficult because of teachers that overcomplicated things like me hahaha :)!

About the issues you are right.... This idea is only for teachers that master the grade system, and I know very few... But the natural weight system is the default now in Moodle, and creating a unique category and adding all the activities to it is not so complicated.

It's true that feedback must be fast to sustain motivation. That's why I use a lot of question activities. If I configure them with passing grade and unlimited attempts the fast iteration feedback is very addictive. Also workshops are very fast because of P2P grading. Grades can be fast if the teacher is not the bottleneck, but it's true that usually we are slow, unfortunately we are still single-core!

About the ups and downs in grades, yes it can occur and the student can feel confused. But I think that it's more a teacher problem than a technical issue. Don't worry too much!

Anyway I'm going to experiment with this idea and see where it drives me. Today I created a minimalistic block that shows the points associated with a category (https://github.com/Canx/showgrade).

It's my first plugin, I used a template and the code is superdirty but I could check the idea. This is two blocks associated with different categories in the same course:

showgrade

It has some problems but I think is a low risk addition to LevelUp and has a lot of potential.

Or maybe it could be a standalone plugin if it gets too complicated...

FMCorz commented 4 years ago

Grade-based rewards from Level up! Plus can point to any grade item from the gradebook, grade categories included. More information on the feature is available here: https://levelup.plus/docs/article/grade-based-rewards