Skip to content

Feature request: The goal of Box session gameplay #904

Description

@tickBit

What do you want to see in the API?

This is to be re-defined

Support teacher-led scoring rules for box session gameplay only.

A box session should allow the teacher/group admin to configure task packages for teams. These tasks should define what atomic gameplay events are tracked, how many of those events are required, and how many rewards are granted when the whole task is completed.

The task setup should allow different team strategies:

  • A team may focus only on playing battles.
  • A team may focus only on completing non-battle tasks.

The first team to reach the configured target score, default 100 points, should be considered the winner of the box session.

How do you think this should work?

Box sessions should use a predefined task configuration model similar to:

{
  monday: [
    {
      id: 1,
      title: { fi: "Voita 5 peliä" },
      content: { fi: "Sun pitää voittaa tänään 5 peliä" },
      amount: 5,
      type: "win_battle",
      coins: 10,
      points: 20
    }
  ]
}

The outer key defines the task period or grouping, for example monday, tuesday, week, or month.

Each task should work as follows:

  • id is a unique task identifier, similar to SQL auto increment.
  • title is the localized task title.
  • content is the localized task body/description.
  • type is an enum value for the atomic task event to track, for example win_battle.
  • amount defines how many atomic task events are required to complete the whole task.
  • coins defines how many coins are awarded after completing the whole task.
  • points defines how many points are awarded after completing the whole task.

For example, type = "win_battle", amount = 5, and points = 20 means:

  • each battle win advances the task by 1
  • after 5 battle wins, the task is completed
  • completing the task gives 20 points total
  • it does not give 20 points per battle win

If the intended session rule is “each battle win gives 10 points”, the box session should configure a task with type = "win_battle", amount = 1, and points = 10.

The teacher/group admin should be able to configure task sets so that one team can earn points through battle-related tasks while another team can earn points through non-battle tasks. Box session scoring should still come from completed tasks, not directly from playing or winning battles outside the configured task model.

When a clan in a box session reaches the target score, the session should be marked as ended and the winning clan should be identifiable from the API.

Any additional info?

This should be scoped to box sessions only.

There was already a separate issue for changing normal gameplay scoring so that a battle win gives +10 points. This issue should not redefine normal gameplay scoring. Given scores/points now lives at scoring.values.ts. The amount of coins given from a task could be defined in this file, too.

Implementation-wise, this likely fits best on top of the existing box predefined daily task configuration and daily task completion reward flow.

The missing box-session-specific pieces seem to be:

  • support for task period/grouping such as monday, week, or month, if needed for box sessions
  • localized task content, in addition to the current localized title
  • support for assigning/configuring different task sets per team, if the teams should have different strategies
  • session target score, default 100
  • winner clan tracking
  • ending the box session when the target score is reached
  • ensuring box-session scoring is awarded on whole task completion, not per atomic event, unless amount = 1
  • The frontend should provide the teacher/group admin with controls to add and configure daily tasks for box session players, using the existing API support for adding box daily tasks.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature to add

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions