This game architecture requires everyone in an island to communicate with everyone else, as well as the server - so for N players in the island, you need N*(N+1)/2 working network links. So an island with 32 players would need about 10 times as many working connections as one with 10 players.
Each machine tracks stats like packet loss rate, sizes of queues of messages to send, response times from other machines, and numbers of messages awaiting ack; it boils these together into a "QualityOfService" score that it sends to the server every few seconds. The Server averages the score for an island, to derive the island's "Health". If an island's health drops below a certain threshold (currently 70%) we do not add new players to it, but will create a separate island.
Yesterdays experiment seems to show that the island sizes were not being limited by the maximum size cap, but by this QOS health system: if there's someone in the island that's getting lots of packet loss, or slow responses from other players, adding more players to the island will only make things worse.
I'm working on further diagnostic tools for the servers so we can understand this better, so that eventually we can optimise the network to allow larger p2p groups.