LearnersGuild / game-prototype

Lightweight, minimal implementation of game mechanics for rapid experimentation and prototyping.
0 stars 0 forks source link

Players have Experience Points #21

Closed jeffreywescott closed 7 years ago

jeffreywescott commented 8 years ago

(depends on #68)


Strategic Goals this issues impacts

Experience Points (XP) are how we measure productivity and duration of practice. They are roughly equivalent to "effective hours worked", but with more nuance.

XP are measured in hours, up to two decimal places. They can grow indefinitely, but will never recede. In this sense, they are different from a "health" stat that fluctuates.

Eventually, we'll likely introduce gating or leveling mechanisms around XP, to create semantic distinctions between a player with 50 XP and one with 5000 XP.

Data Sources

For each project, use the following data from retro (note: depends on #68):

To calculate XP earned for a single project, use the formula:

XP = total hours contributed * relative contribution * mean internal project completeness * mean internal project quality

Where:

For example, given the values:

player 1 hours contributed = 40
player 2 hours contributed = 45
player 3 hours contributed = 10
player 1 actual contribution = 0.14
mean internal project completeness = 0.89
mean internal project quality = 0.94

Then XP player 1 for working on this project for this cycle is 11.12

XP = ( (40+45+10) * 0.14 * 0.89 * 0.94) = 11.12.

Addenda:

Update the post-project DM to each team member to include XP:

**RETROSPECTIVE RESULTS:** #${project.name}

**Internal project reviews:**
Completeness: ${project.avgInternalCompleteness} (avg of: ${project.internalCompletenessReviews.join(', ')})
Quality: ${project.avgInternalQuality} (avg of: ${project.internalQualityReviews.join(', ')})

**Feedback from your team:**
${teamFeedbackList.join('  \n\n')}

**Hours contributed:**
Team size: ${team.length}
Your hours: ${stats.hours || 0}
All team hours: ${stats.teamHours || 0}

${teamHoursList.join('  \n')}

**Contribution to the project:**
Self-assessed: ${stats.rcSelf || 0}%
Team-assessed: ${stats.rcOther || 0}%

Your estimated contribution to the project: ${stats.rc || 0}%
Expected contribution for # of hours: ${stats.ec || 0}%
Contribution difference: ${stats.ecd || 0}%

**Stats earned for this project:**
Experience Points (XP): ${stats.xp || 0}
  = (${stats.teamHours} team hours * ${project.avgInternalCompleteness} completeness * ${project.avgInternalQuality} quality * ${stats.rc} contribution)
Culture Contribution: ${stats.cc || 0}%
Team Play: ${stats.tp || 0}%

Original issue: https://github.com/LearnersGuild/game/issues/150

tannerwelsh commented 7 years ago

update language and then move to RFI

tannerwelsh commented 7 years ago

Builds towards goal: !Learner stats match our subjective reality, elicit honest feedback, and promote self-directed, collaborative growth

shereefb commented 7 years ago

related #68

tannerwelsh commented 7 years ago

updated description

tannerwelsh commented 7 years ago

ready for review @shereefb + @LearnersGuild/software

shereefb commented 7 years ago

Love it. One suggestion is to show the math behind how XP was calculated. Which contributes to: - !Players know how to increase low stats

**Stats earned for this project:**
Experience Points (XP): 11.12 ( (40+45+10) * 0.14 * 0.89 * 0.94)
Culture Contribution: ${stats.cc || 0}%
Team Play: ${stats.tp || 0}%
tannerwelsh commented 7 years ago

incorporated @shereefb's suggestion

jeffreywescott commented 7 years ago

For each project, use the following data from retro (note: depends on #68):

  • Actual Contribution
    • % of project completed by learner (mean of all teammate's evaluations, incl. self)
  • Internal project review scores (i.e. those submitted by the team members)
    • Project Completeness
    • Project Quality
  • Hours contributed to project per team member

I thought we had moved away from project reviews being used as part of XP? Is the description out of date?

Moving back to Review.

tannerwelsh commented 7 years ago

@jeffreywescott it depends on having https://github.com/LearnersGuild/game-prototype/issues/68 complete, which is why it specifies internal reviews (i.e. those submitted with the team retros).

jeffreywescott commented 7 years ago

Got it. Thanks for the clarification, @tannerwelsh.

jeffreywescott commented 7 years ago

Cannot move this over to implementation because it depends on #68.

tannerwelsh commented 7 years ago

@jeffreywescott I'm not sure I understand why the inter-issue dependency is blocking movement of this card. Does every issue that gets moved to RFI need to have zero dependencies on other issues?

jeffreywescott commented 7 years ago

@tannerwelsh how can something be "ready for implementation" if another issue is not yet "ready for implementation" and it is a dependency? I look at "ready for implementation" as a signal that it can move to the implementation board and be prioritized, but if it is dependent on issues that aren't also ready ... that's not the case, right?

How do you look at RFI?

tannerwelsh commented 7 years ago

@jeffreywescott yes I see it as the same, but in this case its dependency is in RFI also, so they could both be moved over at the same time. Might just be a case of review-lag. When you wrote that it couldn't be moved to implementation, the dependency was still in review. But now it's not. :)

jeffreywescott commented 7 years ago

Ah -- okay. Thanks ... planning to review the RFI column sometime today.

jeffreywescott commented 7 years ago

Issue moved to LearnersGuild/game #500 via ZenHub