Jump to content

Math Can Be Hard.


8 replies to this topic

#1 Parmeggido

    Member

  • PipPipPipPipPip
  • The People's Hero
  • The People
  • 158 posts

Posted 16 March 2016 - 10:25 PM

I'm sure this has been discussed before, but I'm far too lazy to go looking for an old thread to necro. Most of us have probably been in this situation. The matchmaker for CW isn't given a very hard job, but it sure seems to find ways to complicate things. Look, I'll just give you the picture, and you can figure out what's wrong with it.

Posted Image

Now, I can understand that just maybe, this system is this way to try and give singles a chance to group up with larger units and learn how to do things. Even if that is the case, it doesn't change how frustrating it is to sit and wait when you have the right numbers to make a match. I guess it won't matter for too much longer, with phase 3 supposedly around the corner, but it bugs me. So, how about it you clever programming people? How would PGI go about fixing this if they cared too? For that matter, what would be a fair system that wouldn't just let big groups constantly suck up all the single players, and give some weight to smaller groups in the que?

Edited by Parmeggido, 16 March 2016 - 10:26 PM.


#2 BSK

    Member

  • PipPipPipPipPipPipPipPip
  • Mercenary Rank 7
  • Mercenary Rank 7
  • 1,040 posts

Posted 16 March 2016 - 10:53 PM

In programming and business structures there are methods like First Come First Serve and alike, which do not add up the current available numbers, but stacks them by appearance.

#3 Divine Retribution

    Member

  • PipPipPipPipPipPipPip
  • Shredder
  • Shredder
  • 648 posts
  • LocationArizona

Posted 17 March 2016 - 05:16 AM

Modified FIFO (First in, first out). Here's a likely flawed, brute force, inefficient example (but the underlying logic is sound!) that would prevent logjam and large groups jumping the line:

Say 15 objects in the queue, Q1 - Q15, each with the a value from 1 - 12 (number of players in each queued object).

Begin with knowing the number of Qs in the queue, listed as Q1 - Q(x), which would be Q1 - Q15 in this case.

Start with Q1. players=Q1. If players=12 a drop is formed. If players<12 then

players=players+Q2. If players>12 or players<12, then players=players-Q2. If players=12 a drop is formed.

players=players+Q3. If players>12 or players<12, then players=players-Q3. If players=12 a drop is formed.

players=players+Q4. If players>12 or players<12, then players=players-Q4. If players=12 a drop is formed....

This cycle continues until a drop is formed from the first person in the queue and any other single Q in the queue or no drop can be formed after cycling through Q15. If no drop can be formed then

players=Q1. players=players+Q2.

If players>12 then players=players-Q2 [would proceed to Q1+Q3+Q(x) combinations unless Q1+Q3>12, and continue skipping invalid combos as needed, but I'm not going to type out all that]. If players=12 a drop is formed (not going to happen since it didn't the first time), else players=players+Q3(now Q1+Q2+Q3).

If players=12 a drop is formed, else players=players-Q3.
players=players+Q4 (which is now Q1+Q2+Q4). If players=12 a drop is formed, else players=players-Q4.

That continues trying to make a group from Q1+Q2+Q(x). If no group is formed then it would try Q1+Q3+Q(x). Then Q1+Q4+Q(x). That trend continues until it tries Q1+Q14+Q15 and can't form a drop.

Then it tries in groups of 3+1: Q1+Q2+Q3+Q4 to Q1+Q13+Q14+Q15. Then groups of 4+1, 5+1, etc. After all that it would move on to Q2 as the start instead of Q1 and do the whole thing over, then start with Q3, then Q4, etc.

Players/groups that leave the queue before drop formation have their Qs removed from consideration. Once a drop is made it reorganizes the Qs to be Q1-Q(x) sequentially, those that have joined the planetary queue are added to the next round of creating a drop, then the next round of forming a drop begins.

Not very efficient. It wouldn't perform every possible permutation because, for example, if Q1+Q2>12 then it wouldn't need to calculate Q1+Q2+Q(x), but it could still end up performing a lot of calculations if there was another Tukayyid or a large influx of CW players.

In most cases it wouldn't take long though provided there was some way to make a drop. Even 50 groups of varying sizes in a queue would find drops quickly, it just doesn't seem efficient for the server hardware. Just as inefficient but prioritizing the first players in the queue would to start by adding Q1-Q(x), e.g. Q1+Q2+Q3+Q4+Q5+Q6+Q(x), as needed before trying to make smaller groups, a variation of the first long example in reverse. Both would make the 12-player group at the end of the line wait until there was literally no other way to make a drop.

---------------------------------------------------------------------------

Alternatively, the system could do the FIFO it does now but keep in mind the pools of each drop number (groups of 1-11). If a logjam occurs it could wait 15 seconds(variable) for the drop to fill normally then simply compare pools if the drop isn't formed. It would likely start with the largest for simplicity (and because the groups make the jam), then checks other pools for a combination that forms a drop.

In the OP image it would take the 7 then check for a 5 and form a drop. If there wasn't a 5 it would check for a 4+1, then a 3+2, then a 3+1+1, then a 2+2+1, then a 2+1+1+1, then finally 5 1's. It would prioritize the first in each pool but still prioritize larger groups.

Almost 6am here so I'm expecting there to be errors in what I wrote above. If I was just rambling because I couldn't sleep: Math will help solve the problem. Apply Combinatorics.

Edited by Divine Retribution, 17 March 2016 - 06:07 AM.


#4 sycocys

    Member

  • PipPipPipPipPipPipPipPipPipPip
  • Moderate Giver
  • Moderate Giver
  • 7,600 posts

Posted 17 March 2016 - 05:27 AM

Divine you take Common Core to the next level son!

#5 dervishx5

    Member

  • PipPipPipPipPipPipPipPipPip
  • The Workhorse
  • The Workhorse
  • 3,473 posts

Posted 17 March 2016 - 05:47 AM

I thought the title said meth.

I am disappointed.

#6 Void Angel

    Member

  • PipPipPipPipPipPipPipPipPipPip
  • The Marauder
  • The Marauder
  • 6,640 posts
  • LocationParanoiaville

Posted 17 March 2016 - 11:13 AM

You guys realize that there's no opposing team, so the matchmaker is trying to wait for one, right?

#7 Noesis

    Member

  • PipPipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 4,436 posts
  • LocationIn the Lab

Posted 17 March 2016 - 11:22 AM

Like the sands of time in an hour glass the solo players real purpose is to cement the holes that form in the matchmaker.

#8 happy mech

    Member

  • PipPipPipPipPipPip
  • 392 posts

Posted 17 March 2016 - 01:32 PM

View PostNoesis, on 17 March 2016 - 11:22 AM, said:

Like the sands of time in an hour glass the solo players real purpose is to cement the holes that form in the matchmaker.

true

#9 Jack Booted Thug

    Member

  • PipPipPipPipPipPipPip
  • IS Exemplar
  • IS Exemplar
  • 549 posts
  • LocationSan Diego

Posted 17 March 2016 - 03:15 PM

View PostVoid Angel, on 17 March 2016 - 11:13 AM, said:

You guys realize that there's no opposing team, so the matchmaker is trying to wait for one, right?



You realize that we were attacking and once you have a team of 12 attackers a 10 minute countdown should start, right?





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users