TeamManager Plugin¶
The TeamManager plugin handles team assignment and balancing in multiplayer games. It synchronizes team membership across all connected systems and enforces team size limits and balancing rules.
Basic Usage¶
Setting up teams:
#include "mafianet/TeamManager.h"
MafiaNet::TeamManager teamManager;
peer->AttachPlugin(&teamManager);
// Define teams
MafiaNet::TM_Team blueTeam, redTeam, spectators;
teamManager.AddTeam(&blueTeam);
teamManager.AddTeam(&redTeam);
teamManager.AddTeam(&spectators);
// Set team limits
blueTeam.SetMemberLimit(8);
redTeam.SetMemberLimit(8);
spectators.SetMemberLimit(0); // No limit
// Enable auto-balancing
teamManager.SetAutoBalanceTeams(true);
Managing team membership:
// Create team member for local player
MafiaNet::TM_TeamMember* myMember = teamManager.CreateTeamMember();
myMember->SetGuid(peer->GetMyGUID());
// Request to join a team
teamManager.RequestTeamSwitch(myMember, &blueTeam);
// Or assign directly (host only)
if (teamManager.GetHost() == peer->GetMyGUID()) {
teamManager.SetTeam(player, &redTeam);
}
Handling team events:
MafiaNet::Packet* packet;
while ((packet = peer->Receive()) != nullptr) {
switch (packet->data[0]) {
case ID_TEAM_BALANCER_TEAM_ASSIGNED:
printf("Assigned to team\n");
break;
case ID_TEAM_BALANCER_REQUESTED_TEAM_FULL:
printf("Requested team is full\n");
break;
case ID_TEAM_BALANCER_INTERNAL:
teamManager.DecodeTeamAssigned(packet);
break;
}
peer->DeallocatePacket(packet);
}
Key Features¶
Synchronized team state across all peers
Configurable team size limits
Automatic team balancing
Host-based authority model
Team switch requests and approval
Support for multiple teams per player
Spectator team support
Configuration Options¶
AddTeam()- Register a new teamRemoveTeam()- Remove a teamCreateTeamMember()- Create player representationRequestTeamSwitch()- Request team changeSetAutoBalanceTeams()- Enable/disable balancingSetHost()- Set authoritative host
See Also¶
ReadyEvent Plugin - Team-based ready coordination
Lobby2 Plugin - Pre-game team selection
FullyConnectedMesh2 Plugin - P2P team synchronization