-
Notifications
You must be signed in to change notification settings - Fork 103
Proposal for Group Management
This is a proposal for doing group management inside wouso. It considers wouso to be a generic engine that may be used to create a variety of learning games based on the imagination and requirements of game creators.
It only consists of high level ideas, not getting into implementation or interface aspects.
Any player can be part of multiple groups. Initially a player is part of no group. Players may be dynamically added or removed from a group.
A group is a set of one or more players. Groups are a generic term that incorporates teams, classes, races, houses, countries, territories, casts, guilds.
Groups may be used for:
- group-based leaderboards
- providing group-based modifiers (badges, artefacts, skills, spells) to players
- providing a sense of being a part of a team
- group-based games inside wouso
A group type marks a criteria for creating groups. For example a group type may be country while groups of country group type would be England, France, Germany. A group type may be race while groups of the race group type would be human, orc, elf, undead. A group type may be house while groups of the house group type would be Lannister, Stark, Tyrell. Each group must have a group type.
Each group type may be a top-level group type or may have a parent group type. Having a parent group type allos the creation of group hierarchies. For example, the race group type would be a top-level group type (no parent), we would then create several group types: clan, nation, forrest, faction. Each of the group types would be used to create orc clan groups (such as Blackrock, Shadowsong), human nation groups (such as Azeroth, Lordaeron), elf forrests such as (Kildare, Glademoore) or undead faction groups (such as Necromancer, Demoniac).
For the above, example we would have the following hierarchies for group types and groups:
race +----- clan
|
+----- nation
|
+----- forrest
|
+----- faction
orc (type: race) +----- Blackrock (type: clan)
|
+----- Shadowsong (type: clan)
human (type: race) +----- Azeroth (type: nation)
|
+----- Lordaeron (type: nation)
elf (type: race) +----- Kildare (type: forrest)
|
+----- Glademoore (type: forrest)
undead (type: race) +----- Necromancer (type: faction)
|
+----- Demoniac (type: faction)
Actions on group types may only be undertaken by a privileged role. These actions could be:
-
Create a group type
When creating a group type one must supply:
- the identifier of the group type (e.g. country or race or house or clan or nation or forrest or faction)
- the print name inside the game (e.g. Country, Race)
- the parent group type; it may be None for top-level groups or another group type
- the parent group in case you want the group type to only be available for given group; for example you may want thr clan group type to only be a group type for the orc parent group. The group type (race) of the parent group (orc) must be the parent group type (race) of the current group type (clan), the one supplied right before.
- mandatory attributes for the group type and their attribute type (e.g. attribute leader or type text, attribute banner or type image, attribute slogan of type text); these mandatory attributes must be supplied by each group of this group type; the group name is not an attribute; that will have to be provided when creating a group; an image file may be marked as group image identifier.
- optional attributes for the group type and their attribute type; these optional attributes may be supplied or ignored by each group of this group type
-
Edit a group type
Editing a group type means editing any of the above supplied information. Attributes may only be removed if there is no instance of a group of this group type. New group type attributes may be added.
-
Remove a group type
A group type may only be removed if there is no instance of a group of this group type. This is also the case for group type attributes.
Actions on groups may or not require a privileged role. These actions may be:
-
Create a group
A group may be created only if there is at least a group type. When creating a group one must supply:
- the group type of the group
- the group name
- filling of mandatory attributes
- optional filling of optional attributes
- marking whether a group can be joined by a player or adding/removing players may only be done by a privileged role (defaults to only being done by a privileged role)
-
Edit a group
Editing a group means editing any of the above supplied information.
-
Remove a group
A group may only be removed if there are no players part of the group.
-
Viewing a group
A group may be viewer by any user irrespective of its privileged role or not. This action will be done in the Game interface, not the Control Panel interface. When viewing a group, a user would be shown a page such as:
Group Name rendering of group identifier image (shorter letters) group type print name Parent group type print name: The parent group of the group type (if it exists) Parent of parent group type print name: The parent group of the parent group type (if it exists) Attribute1: Value of attribute1 Attribute2: Value of attribute3 ... List of players part of the group (paged view) ....
A sample view is:
Blackrock Clan specific image Clan Race: Orc (this is a link to the Orc Group) Leader: Orgrim Doomhammer Domain: Blackrock Spire .... .... Players John DOE (link to player) Robert ROE (link to player) ...
-
Add player to a group
Adding a player to a group may be achieved in two ways:
- when managing a player, you may select groups to be part of
- when managing a group, you may select players to join that group
-
Remove a player from a group
Removing a player from a group may be achieved in two ways similar to those above.
-
Request to join a group
A user may be able to join a group. The availability of this action depends on configuration. If a user requests to join a group that request may either be fulfilled immediately or it may need approval from a privileged role; this also depends on configuration.
-
Request to leave a group
A user may be able to leave a group. The availability of this action depends on configuration. If user requests to leave group, it happens instaneously.