User Rating 0.0
Total Usage 0 times
Players (0)
No players added yet. Add at least 2 players to generate teams.
Civilization Pool — click to ban (45 available)
Generated teams will appear here.
Is this tool helpful?

Your feedback helps us improve.

About

Uneven teams and civilization mirror matches degrade competitive Age of Empires II sessions. Manual randomization introduces bias - humans are poor entropy sources. This generator uses the Fisher-Yates shuffle algorithm seeded by crypto.getRandomValues to produce uniformly distributed permutations across n players and 45 civilizations from the Definitive Edition roster. It supports team size constraints, civilization bans, and optional tier-weighted balancing to reduce lopsided matchups. Results are deterministic per seed but non-reproducible across runs, ensuring fairness without requiring a trusted third party.

The tool accounts for practical edge cases: odd player counts with remainder distribution, duplicate civilization prevention across teams, and architecture-set diversity scoring. Note: balancing assumes a generalized tier list derived from community consensus (not tournament ELO). Actual game outcomes depend on map, strategy, and player skill - variables this tool cannot model. Pro tip: ban civilizations before generating to prevent arguments after results are revealed.

age of empires team generator aoe2 random civ team randomizer aoe team picker civilization picker

Formulas

Team assignment uses the Fisher-Yates (Knuth) shuffle to produce an unbiased permutation of the player array. For an array of n elements, the algorithm iterates from index n 1 down to 1, swapping each element with a uniformly random element at index j where 0 j i.

for i = n 1 down to 1: j random(0, i); swap(arr[i], arr[j])

After shuffling, players are distributed to k teams via modular assignment:

team(i) = i mod k

where i is the player index in the shuffled array and k is the number of teams. This guarantees maximum team size difference of 1 player when n mod k 0.

Tier-balanced mode calculates a team score by mapping tiers to numeric weights: S = 5, A = 4, B = 3, C = 2. The generator runs 1000 shuffle iterations and selects the configuration minimizing the score variance across teams:

score = mj=1 w(civj)

where m is the number of players on a team and w is the tier weight function.

Reference Data

CivilizationArchitectureStrengthsTierUnique Unit
AztecsMesoInfantry, MonksAJaguar Warrior
BerbersAfricanCavalry, NavyBCamel Archer
BohemiansEastern EuropeanGunpowder, MonksAHussite Wagon
BritonsWestern EuropeanArchersALongbowman
BulgariansEastern EuropeanInfantry, CavalryBKonnik
BurgundiansWestern EuropeanCavalry, EconomyACoustillier
BurmeseSouth East AsianMonks, ElephantsCArambai
ByzantinesMediterraneanDefense, VersatileBCataphract
CeltsWestern EuropeanInfantry, SiegeBWoad Raider
ChineseEast AsianArchers, EconomySChu Ko Nu
CumansCentral AsianCavalry, SpeedBKipchak
DravidiansSouth AsianInfantry, NavyCUrumi Swordsman
EthiopiansAfricanArchers, SiegeAShotel Warrior
FranksWestern EuropeanCavalrySThrowing Axeman
GothsWestern EuropeanInfantryCHuskarl
GurjarasSouth AsianCavalry, CamelsSShrivamsha Rider
HindustanisSouth AsianGunpowder, CamelsAGhulam
HunsCentral AsianCavalry ArchersBTarkan
IncasMesoInfantry, EconomyAKamayuk
ItaliansMediterraneanArchers, NavyBGenoese Crossbowman
JapaneseEast AsianInfantry, NavyASamurai
KhmerSouth East AsianSiege, ElephantsABallista Elephant
KoreansEast AsianTowers, NavyCWar Wagon
LithuaniansEastern EuropeanCavalry, MonksALeitis
MagyarsCentral AsianCavalry ArchersBMagyar Huszar
MalaySouth East AsianInfantry, NavyBKarambit Warrior
MaliansAfricanInfantry, CavalryAGbeto
MayansMesoArchers, EconomySPlumed Archer
MongolsEast AsianCavalry Archers, SiegeSMangudai
PersiansMiddle EasternCavalry, EconomyBWar Elephant
PolesEastern EuropeanCavalry, EconomyAObuch
PortugueseMediterraneanGunpowder, NavyBOrgan Gun
RomansMediterraneanInfantry, NavyACenturion
SaracensMiddle EasternCamels, MonksBMameluke
SiciliansMediterraneanInfantry, CavalryBSerjeant
SlavsEastern EuropeanInfantry, SiegeBBoyar
SpanishMediterraneanGunpowder, MonksBConquistador
TatarsCentral AsianCavalry ArchersBKeshik
TeutonsWestern EuropeanInfantry, DefenseBTeutonic Knight
TurksMiddle EasternGunpowderCJanissary
VietnameseSouth East AsianArchers, ElephantsBRattan Archer
VikingsWestern EuropeanInfantry, NavyABerserk
BengalisSouth AsianElephants, NavyCRatha
ArmeniansMediterraneanCavalry, DefenseBComposite Bowman
GeorgiansMediterraneanCavalry, DefenseBMonaspa

Frequently Asked Questions

The generator uses the Fisher-Yates shuffle with entropy sourced from crypto.getRandomValues(), which provides cryptographically secure randomness. Unlike Math.random(), which uses a PRNG with potentially predictable sequences, the Crypto API draws from the operating system's entropy pool. Each of the n! permutations has exactly equal probability of occurring.
The generator distributes remainder players one per team in shuffled order. For example, with 7 players and 3 teams, two teams receive 2 players and one team receives 3 players. The team that gets the extra player is randomized each generation to prevent systematic advantage.
When tier balancing is enabled, the generator assigns tier weights: S-tier = 5, A-tier = 4, B-tier = 3, C-tier = 2. It performs 1000 independent shuffles of the available civilization pool and scores each configuration by computing the variance of total tier weight across teams. The configuration with the lowest variance is selected, producing teams with approximately equal aggregate civilization strength.
Yes. Click any civilization in the pool to toggle its banned status. Banned civilizations are excluded from assignment but still visible (crossed out). This is useful for tournament rules that restrict certain civilizations or for personal preference. The generator validates that enough unbanned civilizations remain for all players before proceeding.
Yes. By default, each civilization is assigned to at most one player per generation. The tool draws without replacement from the unbanned pool. If you have 8 players and 45 available civilizations, all 8 will receive distinct civilizations. Mirror matches can only occur if the available pool is smaller than the player count, which the tool blocks with an error.
The shuffled player array is dealt in round-robin order across teams. Player at index 0 goes to Team 1, index 1 to Team 2, and so on, wrapping around. This ensures maximum balance: team sizes differ by at most 1 player. The assignment order is fully random because the input array was shuffled first.