Conception
Les groupes sont utilisés pour associer des collections d'usagers, ce qui est utile pour représenter les organisations dans les applications et les clans et guildes dans les jeux.
- Lorsque vous déterminez si votre jeu bénéficiera des groupes, la conception doit déterminer s'il est possible de créer des objectifs basés sur les groupes et des systèmes de récompense basés sur les groupes pour les prendre en charge. 
- Les défis et récompenses pour les activités de groupe créeront une pression sociale pour que les joueurs du groupe s'engagent dans le jeu plus longtemps et plus fréquemment. 
- Par exemple, pour stimuler activement le temps de jeu, suivez les victoires globales de tous les joueurs d'un groupe, en plaçant ces scores dans un tournoi mensuel ou bimensuel qui récompense les meilleurs groupes. 
- Les joueurs doivent avoir les moyens de trouver, de rejoindre et de quitter des groupes à volonté. 
- Il est fortement recommandé de prendre en charge la communication du clan avec un panneau de discussion de groupe en jeu. 
- La taille des groupes pour les applications sociales varie généralement entre 25 et 50. En général, une taille maximale plus élevée est préférable. 
Mise en œuvre
Pour créer un type de groupe, accédez à la page Groupe > Types de groupe sur le tableau de bord.
Créer un type de groupe
- Cliquez sur le bouton [Nouveau type de groupe...] avec l'icône plus. 
- Saisissez un nom du type de groupe. Lors de la création d'un groupe avec l'appel d'API CreateGroup , votre application spécifiera un nom de groupe, ainsi que le nom de ce type de groupe. 
- Saisissez la taille maximale d'usagers. Ce nombre doit être compris entre 2 et 50. 
- Lors de la suppression du propriétaire - Choisissez la manière dont le groupe gère l'utilisateur propriétaire en cours de suppression. - Attribuer un nouveau propriétaire : un administrateur du groupe sera désigné aléatoirement comme propriétaire. En l'absence d'administrateur, un usager de niveau membre sera sélectionné. 
- Supprimer le groupe - Si le compte d'un propriétaire est supprimé, le groupe lui-même est supprimé. 
 - Quand utiliser l'option "Assigner un nouveau propriétaire" ou "Supprimer le groupe" ? Si votre application est un jeu proposant une fonctionnalité de guilde et que le propriétaire de la guilde décide de supprimer son compte, votre jeu préférera probablement l'attribution d'un nouveau propriétaire plutôt que la suppression du groupe. Cependant, si vous avez créé une application payante, où le propriétaire payait pour le groupe en tant que service, votre application pourrait souhaiter que le groupe soit supprimé lorsque l'usager payant n'existe plus. 
- Lors du départ d'un membre - Choisissez la manière dont le groupe gère les entités de groupe appartenant aux membres lorsque l'usager propriétaire a quitté. - Supprimer les entités possédées - Les entités détenues par le membre seront supprimées lorsque ce membre aura quitté. 
- Conserver les entités possédées - Les entités détenues par les membres seront conservées dans la liste des entités du groupe même si ce membre a quitté. 
 
Écrire le code
Maintenant que vous avez créé des types de groupes, vous souhaiterez que vos joueurs rejoignent et créent des groupes.
Dans votre code client
- Ajoutez le client brainCloud à votre application. 
- Associez le client au tableau de bord. 
- Authentifiez votre usager dans brainCloud. 
- Demandez une liste de groupes que le joueur peut rejoindre et demandez au joueur de rejoindre ces groupes. 
- Demandez à votre joueur de créer son groupe. 
- Consultez les autres appels liés au groupe pour votre application dans la référence de l’API. 
private BrainCloudWrapper _bc;
private string _wrapperName = "default";
void Start() {
// Unity
GameObject go = new GameObject();
_bc = go.AddComponent<BrainCloudWrapper>();
_bc.WrapperName = _wrapperName; // éventuellement définir un nom de wrapper
_bc.Init(); // des données supplémentaires, telles que : _appId, _secret et _appVersion, sont extraites du plugin brainCloud Unity.
DontDestroyOnLoad(go); // conserver l'objet de jeu brainCloud pendant les changements de scène
_bc.AuthenticateAnonymous((response, cbObject) => { LookForGroups(); });
}
List<string> groupList = new List<string>();
// Recherchez les groupes qui existent dans votre application
void LookForGroups()
{
var contentJson = BrainCloud.JsonFx.Json.JsonWriter.Serialize(new Dictionary<string, object>
{
{"pagination", new Dictionary<string, object> {
{"rowsPerPage", 50},
{"pageNumber", 1}
}
},
{"searchCriteria", new Dictionary<string, object> {
{"groupType", "clan"}
}
},
{"sortCriteria", new Dictionary<string, object> {
{"createdAt", 1},
{"updatedAt", -1}
}
}
});
_bc.GroupService.ListGroupsPage(contentJson, (response, cbObject) =>
{
var jsonMessage =
(Dictionary<string, object>) BrainCloud.JsonFx.Json.JsonReader.Deserialize(response);
var jsonData = (Dictionary<string, object>) jsonMessage["data"];
var results = (Dictionary<string, object>) jsonData["results"];
var items = (Dictionary<string, object>[]) results["items"];
foreach (var group in items)
{
var groupId = group["groupId"];
groupList.Add((string)groupId);
}
JoinFoundGroups();
});
}
// Demander à l'utilisateur final de rejoindre ces groupes
void JoinFoundGroups()
{
foreach (var group in groupList)
{
_bc.GroupService.JoinGroup(group);
}
CreateYourGroup();
}
// Demandez-leur de créer leur propre groupe
void CreateYourGroup()
{
var groupName = "Coffee on Monday";
var groupType = "clan";
var isOpenGroup = true; // Si vous utilisez des groupes fermés, implémentez GetMyGroups pour obtenir la liste des demandes.
var groupAcl = new GroupACL(GroupACL.Access.None, GroupACL.Access.ReadWrite);
var jsonData = BrainCloud.JsonFx.Json.JsonWriter.Serialize(new Dictionary<string, object>
{
{"description", "Beginner Friendly"}
});
var jsonOwnerAttributes = BrainCloud.JsonFx.Json.JsonWriter.Serialize(new Dictionary<string, object>
{
{"clanType", "PREMIUM"}
});
var jsonGroupAttributes = BrainCloud.JsonFx.Json.JsonWriter.Serialize(new Dictionary<string, object>
{
{"clanPoints", 1500}
});
_bc.GroupService.CreateGroup(
groupName,
groupType,
isOpenGroup,
groupAcl,
jsonData,
jsonOwnerAttributes,
jsonGroupAttributes,
(response, cbObject) => { Debug.Log("Successfully made the group."); });
}



