(Written by MrGreen)

If you're impatient, you probably want to skip down to the analysis section and look at the graph.

How does resource collection rate vary with number of miners? I tested this on Blood Bath, where there are 8 mineral patches per starting position and not all patches are the same distance from the starting position. I used protoss, but this data should be race-independent.


  1. Modified Blood Bath to be single player, start in bottom right, and start with 0 minerals. Victory is triggered upon collection of 8000 minerals.
  2. Started game.
  3. Immediately changed game speed to slowest possible,
  4. Ordered all miners to start mining, going to separate mineral patches.
  5. Set game speed up to fastest possible.
  6. Go do something else while game runs.
  7. On victory, save the replay.
  8. Run through the replay on fastest possible*16.
  9. Record the length of time of the game as reported by the replay.
  10. Repeat for various numbers of starting probes.

Note that I edited the map to give a certain number of starting probes each time. I never built any.

The reason I used this roundabout method of finding the game time is that starcraft time is different than real, wall-clock time. Real time is the same as game time only when game speed is set on "Fast" (two lower than the maximum possible speed). Setting the game speed faster or slower alters game time. The replay screen reports game time, but the victory screen reports real time. So that's why I used this method for gathering times.



gametime to get to 8000 ore


987 (16:27 game time) (16:37 real time)


810 (13:30 game time) (13:44 real time)


715 (11:55 game time) (12:11 real time)


643 (10:43 game time) (11:06 real time)


598 (9:58 game time) (unknown real time)


552 (9:12 game time) (9:32 real time)


518 (8:38 game time) (8:56 real time)


499 (8:19 game time) (8:47 real time)


459 (7:39 game time) (7:52 real time)


452 (7:32 game time) (7:50 real time)


430 (7:10 game time) (7:26 real time)


430 (7:10 game time) (7:23 real time)


430 (7:10 game time) (7:26 real time)

bad measurements (didn't fit in with the curve very well, so I did them again.):


1323 (22:03 game time) (16:35 real time)


796 (13:16 game time) (10:10 real time)


530 (9:50 game time) (10:02 real time)


457 (7:37 game time) (07:50 real time)

Note that for some reason, these are all an integer multiple of the number of resource patchs: 8. I'm still not satisfied with the second measurement for 24 miners, but it came out roughly the same both times.



postscript graph: minerals.ps

After 3.5 miners per mineral patch, the times stayed the same, so I assume that's as far as you can go in that direction. More miners don't help. Anthing less than 1 miner per mineral patch will simply be a linear function, since one miner mining from one mineral patch with no other miners interfering gives a constant collection rate. I really don't know what the best curve is for the range [1.0,3.5]. I tried using a logarithmic curve, but I'm not entirely happy with it. It fits the lower values much better than it does the higher ones. A logarithmic curve is definitely wrong, though, because it doesn't turn into a constant function for x >= 3.5. Thoughts?

The data and gnuplot commands used to make the plot: minerals.data minerals.gnuplot

I'm not absolutely confident in this data. It was collected from ONE particular mining position on ONE particular map. Those things could have a significant effect on the details of the curve, I dont' know. Nevertheless, I'm confident that the overall shape will always be like in the graph.

Starcraft/ResourceCollectionRate (last edited 2014-09-16 09:20:04 by RichardDarst)