Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Rozřazování po skupinkách

Ahoj,

chystám funkci do jedné minihry na jednom serveru a řeším, jak to co nejefektivněji a nejlogičtěji provést.

O co jde:
Zkrátka, když se teď hráči do té minihry připojí, tak je server automaticky přidělí do jedné z osmi frakce - konkrétně do té, kde je nejmíň hráčů. Pokud je ve 2 nebo více frakcích stejný počet hráčů, server náhodně jednu z nich vybere.

No a já chci přidat funkci, že si hráči budou moci založit skupinu se svými přáteli - skupina bude velká 2-7 lidí - a pokud se ti hráči s danou skupinou do hry připojí, tak budou všichni ve stejné frakci. Nutno podotknout, že všichni hráči a všechny skupiny jsou do frakcí přidělení ve stejnou chvíli - na začátku kola.

Otázka zní, jak to naprogramovat tak, aby se server o přidělení automaticky postaral a to tak, že ve všech frakcích bude pokud možno stejně hráčů, nebo se to tomu bude hodně blížit. Skupin může být samozřejmě víc, platí, že každý hráč může být jen v jedné skupině naráz.

Takže bude třeba
20 jednotlivců
4 skupiny po dvou
3 skupiny po třech
6 skupin po čtyřech
atd...

a server to musí nějak rovnoměrně rozdělit mezi těch 8 frakcí, aby všude bylo pokud možno stejně hráčů.

Nějaké nápady? Budu moc rád, pokud mi pomůžete.

Díky :)

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
To je v podstatě tohle: Batoh
Wikan 02.03.2015 15:28
Wikan
není to zbytečně složité? V podstatě může nechat prvotní rozřazování, jen před něj vřadí ještě jede… poslední
touchwood 02.03.2015 16:09
touchwood

není to zbytečně složité?

V podstatě může nechat prvotní rozřazování, jen před něj vřadí ještě jeden proces - Seřadit jednotlivé "klany" podle počtu hráčů, těm největším osmi přidělit tým (pokud je klanů více než maximálních 8 týmů), zbylé klany přidat do týmu k menšímu klanu a zbytek ponechat na algoritmu původního rozdělení.

Teoreticky to může vygenerovat nerovnováhu v počtu hráčů jednotlivých týmů (pokud např. budou všichni klanoví, a jen pár neklanových), ale to by šlo ošetřit na úrovni rozřazování těch nejmenších klanů.

Zpět do poradny Odpovědět na původní otázku Nahoru