[mods - not sure if this is the right forum. I think so, but if not, feel free to move it where you see fit]
Recently, I conducted some tests to find out the full scoop on what the worker mineral gathering rate was, and how it scaled with # of workers. I realize this has been discussed, but I've never seen any real hard data other than "somewhere between 2-3 per node", so I set out to do some analysis and thought I'd share in case it's of value to anybody else.
Assumptions
- Steppes of War is a good representative of most maps. Obviously, mineral field placement will affect these tests, so I tried to pick a map that was "common" in this regard. I did test a few other maps. They compared with SoW, so I settled on using it for the rest to try to keep the relative tests as similar as possible.
- All races gather equally. I'm not ready to assert this 100%, but I did do by baseline tests across all three races (see below), with very minor differences so I'm pretty convinced it's true enough to assume for *most* usage.
Notes
- Steppes of War has 8 mineral patches.
How did I test?
I started up a game versus the computer, easiest AI and on the "novice" maps to make sure the computer would not bother me, droned up to the appropriate number of workers for the given test, and the let the game sit. I tried to let it go as long as possible to get a good representative sample, but I did compact a few of the 16-24 worker tests into a single game. I'm fairly confident the results are accurate enough, again, for most applications.
Once I was confident enough time had passed for an interesting sample, I exited the game. Then I loaded the replay and advanced it to the point that I felt was a good start to the test. The reason I had to do this is because it would take me some time at the beginning of the game recording to get to the correct number of drones. So, if I was doing the 24 drone test, I would have to first create 24 drones (including pylons/etc), and then let those drones "settle" a bit to make sure that the entire test was only repetition of mining, and no other actions by me, or nearness to the creation of a drone, would perturb the results.
Once I found a good place to start the test, I would record the number of minerals, and the time. I would then let the replay execute until wherever I determined was the correct ending (usually end of reply, but I collapse some of the tests into a single game to expedite the process - so in those cases, I would stop before the next worker creation), record the results into the spreadsheet, and that would complete that test.
Range of tests
I independently tested 6, 8, 16, 17, 18, 19, 20, 21, 22, 23 and 24 workers.
- 6 = base number you start with. (tested as zerg)
- 8 = one worker per mineral patch. (tested as protoss)
- 16 = two workers per mineral patch. (tested as terran)
- 24 = three workers per mineral patch.
- 17-23 = gradient between 16 and 24 to gauge decrease in worker efficiency.
6 and 8 workers are clearly 100% worker efficiency. 100% efficiency is defined as the maximum amount that a worker could collect if it did not ever have to compete with any other worker for access to minerals. Obviously, when a worker has a mineral field all to itself (as is the case on Steppes of War [8 mineral patches as above] for 8 or less workers), it is going to be able to yield a 100% efficiency since it will never have to wait for access to a mineral field.
16 workers actually turn out to be 100% worker efficiency as well. You can observe this by noticing that no worker is ever waiting for minerals. While one worker is carrying its payload back to the base, the other is mining. That worker finishes mining its 5 mineral payload before the other work gets back, so they swap without interference with one another.
Anything over 16 workers observes a drop in efficiency, as expected, since some workers are actually having to wait for access to minerals. See analysis section below for discussion/graph on the magnitude.
Results
Here is the spreadsheet
I think it's pretty self-explanatory, but for clarity:
Column C = the amount of minerals banked (displayed at top of game) at the beginning of this test
Column D = amount of minerals banked at the end of this test
Column E = Difference between Col D and C for this test, or in other words, the amount of minerals gathered over this test.
Column G = Time (in seconds) at the start of this test.
Column H = Time at the end of this test.
Column I = Delta time for test, or the total number of seconds this test was run
Column K = Minerals mined per second.
Column L = Minerals mined per minute.
Column M = Minerals mined per second for each drone.
Column N = Worker efficiency. Since I know 6, 8, and 16 workers will be 100% efficient, I average the gather rates of all 3 of those tests (cells M3, M4 and M5) to get the gather rate of a 100% efficient worker. I average the 3 just to smooth in anomalies in the sample, but as you can see, they are all 3 very close to each other. You can see this averaged value in cell B24, and the entire N column efficiency calculation is arrived at by comparing a given rows min / s / drone rate (from column M) to the ideal value in cell B24.
Column P = name of replay file the test was conducted in - mainly for my own records.
I will reproduce the two graphs included in the spreadsheet below for an analysis.
Analysis
As you can see, all three races are very close to one another for optimal gathering conditions (cells N3, N4 and N5).
Anything up to 8 workers is, as expected, 100% efficient - meaning they are gathering as many minerals as they can based on the mechanics of the game.
Ideal (100% efficient) collection rate for a worker is approximately 0.711 minerals per second.
While the efficiency of workers drops off after 16 workers, there is a nearly linear increase in minerals gathered up to around 24 or so. This means it's still worth making more drones over 16, although less "worth it" than before. 16 workers gathers 683 min/s, 24 gathers 793 min/s. 110 min/s is nothing to sneeze at. Whether or not 110 min/s is worth 400 minerals? Well, it is if the game is going to last more than 4 more minutes, but you have to also consider the impact to your economy during that time. My gut feeling here is that there is a sweet spot somewhere around 20-22 workers.
To be more precise on that last point, consider two graphs constructed from the data in the above spreadsheet.
1. How did the mineral gather rate scale as I added workers past 16 (maximum number of workers you can have on 8 patches with 100% efficiency).
The graph has a little roughness to it, but this is expected for the sample size we're considering. It might not be very clear from the graph, but I believe this is a non-linear function. I'm going to work on a few resamples when I get some time, and then I will find a decently fitting quadratic. Nevertheless, for most intents, we can consider this a fairly linear progression over this range. I was actually expecting the degradation to be more severe.
I wasn't surprised at the drop at the end, because when you get up around 24 workers on 8 mineral patches, it's a little bit of chaos. The AI starts thrashing a little bit trying to find places for the workers to go, rather than just put 3 on each patch and calling it good. My guess is that this behavior will accelerate as the number of workers increases.
2. How does work efficiency degrade as a function of # of workers.
Nothing too surprising here. Fairly linear, but more samples near 24 workers could yield non-linear function. Again, it would be interesting to see it over 24, and I'd like to explore that if I get some time.
Anyway, there it is. Nothing that we really didn't already know, but I like to see it laid out. Call me OCD.

Definitely interested to hear any comments on any of this, particularly my conclusions if you disagree.
Hopefully it will be of use to somebody else somewhere. This is all the basis of something pretty cool I'm working on, but I'll leave that announcement for another day.
