Looking4Group / L4G_Core

Looking4Group Core
http://looking4group.eu
GNU General Public License v2.0
37 stars 69 forks source link

Faction queue ineffective if below cap #3259

Open summitsama opened 7 years ago

summitsama commented 7 years ago

While the current implementation, (allow cap/2 of for each faction), the faction queue will do nothing even if as little as 1500 people are playing (allows 1:2 ratio). At non-peak times (such as NA prime time), the faction queue is going to have no impact.

Current (see #3214) :

if (((accountTeamId == TEAM_ALLIANCE) && (GetLoggedInCharsCount(TEAM_ALLIANCE) >= (pLimit / 2))) [...]

Proposed solution is to enforce 50/50 + wiggleroom at all times.

const float FACTION_BALANCE_WIGGLE = 1.1
int allowableAlliance = std::min((int)(FACTION_BALANCE_WIGGLE * GetLoggedInCharsCount(TEAM_HORDE)) , pLimit/2)
if ((accountTeamId == TEAM_ALLIANCE) && (GetLoggedInCharsCount(TEAM_ALLIANCE) >= allowableAlliance)) [...]

In the example above, you'd be allowed to have 330/300, 550/500, up to 1000/1000.

honeyhoney commented 7 years ago

Aware of the side effects of the current implementation. I wouldn't say the queue is ineffective, rather it's just not written to enforce any limitations until it reaches a threshold. 👍 Not sure if enforcing a strict 50:50 +/- 10%(or other) faction balance is the intention or rather just ensuring a faction isn't allocated more than half of server capacity. Whether this is necessary for release will depend on numbers but definitely looks like something worth adding pending launch results.

honeyhoney commented 7 years ago

Unrelated: good to see there's a bunch of people contributing their thoughts. Always good to see people getting involved. Keep it up lad.