• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 08:09
CET 13:09
KST 21:09
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
Team Liquid Map Contest #22 - Presented by Monster Energy4ByuL: The Forgotten Master of ZvT30Behind the Blue - Team Liquid History Book19Clem wins HomeStory Cup 289HomeStory Cup 28 - Info & Preview13
Community News
Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool22Weekly Cups (March 9-15): herO, Clem, ByuN win32026 KungFu Cup Announcement6BGE Stara Zagora 2026 cancelled12Blizzard Classic Cup - Tastosis announced as captains18
StarCraft 2
General
Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool Serral: 24’ EWC form was hurt by military service Weekly Cups (March 9-15): herO, Clem, ByuN win Team Liquid Map Contest #22 - Presented by Monster Energy Weekly Cups (August 25-31): Clem's Last Straw?
Tourneys
KSL Week 87 [GSL CK] #2: Team Classic vs. Team Solar 2026 KungFu Cup Announcement [GSL CK] #1: Team Maru vs. Team herO RSL Season 4 announced for March-April
Strategy
Custom Maps
Publishing has been re-enabled! [Feb 24th 2026] Map Editor closed ?
External Content
The PondCast: SC2 News & Results Mutation # 517 Distant Threat Mutation # 516 Specter of Death Mutation # 515 Together Forever
Brood War
General
ASL21 General Discussion BGH Auto Balance -> http://bghmmr.eu/ JaeDong's form before ASL Gypsy to Korea BSL Season 22
Tourneys
Small VOD Thread 2.0 [Megathread] Daily Proleagues [BSL22] Open Qualifiers & Ladder Tours IPSL Spring 2026 is here!
Strategy
Simple Questions, Simple Answers Soma's 9 hatch build from ASL Game 2 Fighting Spirit mining rates Zealot bombing is no longer popular?
Other Games
General Games
Nintendo Switch Thread Path of Exile General RTS Discussion Thread Stormgate/Frost Giant Megathread Dawn of War IV
Dota 2
Official 'what is Dota anymore' discussion The Story of Wings Gaming
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Five o'clock TL Mafia Mafia Game Mode Feedback/Ideas Vanilla Mini Mafia TL Mafia Community Thread
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread Things Aren’t Peaceful in Palestine Mexico's Drug War Canadian Politics Mega-thread
Fan Clubs
The IdrA Fan Club
Media & Entertainment
[Req][Books] Good Fantasy/SciFi books [Manga] One Piece Movie Discussion!
Sports
2024 - 2026 Football Thread Formula 1 Discussion Tokyo Olympics 2021 Thread General nutrition recommendations Cricket [SPORT]
World Cup 2022
Tech Support
Laptop capable of using Photoshop Lightroom?
TL Community
The Automated Ban List
Blogs
Funny Nicknames
LUCKY_NOOB
Money Laundering In Video Ga…
TrAiDoS
Iranian anarchists: organize…
XenOsky
FS++
Kraekkling
Shocked by a laser…
Spydermine0240
Unintentional protectionism…
Uldridge
ASL S21 English Commentary…
namkraft
Customize Sidebar...

Website Feedback

Closed Threads



Active: 7713 users

Worker Saturation

Forum Index > BW General
Post a Reply
1 2 Next All
CDRdude
Profile Blog Joined May 2007
United States5625 Posts
Last Edited: 2008-12-04 00:02:31
December 03 2008 08:26 GMT
#1
Here at teamliquid, we take note of post counts. We might not admit it, but we do, to one extent or another. Part of post counts has morphed into something of a tradition; marking important post numbers (read: numbers many zeroes) with great posts, trying to give something back to the community. CharlieMurphy’s great post is an example of this. I wanted to join in this tradition, and do something special with my two thousandth post. I’m not a great starcraft player, I’m not a good starcraft player, or even a mediocre starcraft player. So that eliminates a replay pack.

This leaves me with my rapier wit and wondrous sense of humor to make a post that is talked about for years weeks an hour however long you can last during sex. Because of my masterful and brilliant wit, my two thousandth post will consist of...wait, what? Hot_Bid is funnier than I am? Shit, change of plans. Anyway, during my two and a half minutes of fame, I welcome you to my two thousandth post!

As I mentioned, I’m not much of a player. That said, I still like starcraft; I post on teamliquid after all. What has captured my interest today is workers mining minerals. The very basis of starcraft. One of the things we take for granted here is the respective mining speeds. I have heard several times that protoss mines faster than the other races, due to the acceleration of the probe. I set out to find out just what the difference was, and I also hoped to fine out more about what the ideal number of workers is.

My experiment was born; take each race, and mine minerals with different amounts of workers. I started with 9 workers (one per patch on python), and moved up to 30 workers (3.33 per patch).

The Experiment:

Bearing in mind that the mineral position is different for different maps, I decided to use what I’m pretty sure is still the most common map normal map on bnet: Python. Basically, for a number of workers (starting at 9 and moving up to 30), I mined minerals for five minutes, and took note of how much my minerals had changed by. Then I did it again at a different location. The locations used were the 12:00 main and the 6:00 main. No other locations were used.

+ Show Spoiler [Method detail] +

      Using chaoslauncher windowed mode with BW patch 1.15.3 (I started before 1.16 came out and I didn’t want to change in the middle)I started a on UDP LAN latency, I started a 1v1 game with me and a comp. During the countdown, I closed the comp’s spot. When the game started, and reported a draw, I elected to continue playing. I mined minerals until I had the desired number of workers, and a base at both 12 and 6. If I had started at 12 or 6, I mined minerals from the nat. The map was the melee version of Python 1.3 from the iCCup map pack, updated as of 5/10/2008.

After I had everything ready (worker number, bases in the right spots), I noted my initial number of minerals, and then sent them all to one of the bases, trying to stack them somewhat so they arrived at more or less the same time. I did my best to split to each mineral patch, with extras starting at the closest patches, and then branching out to the further ones as I got more workers. When the number of workers high, I started making some mistakes in worker splitting, but that’s why I did 5 minute trials.

Since apparently one of the chaoslaucher plugins includes a timer that starts when the game does (I had it at the top of the screen), that’s what I used to measure out 5 minutes. I noted the time when the workers reached the mineral patches, and five minutes later, I gave all my workers a stop command (1s2s3s). After I wrote down the number of minerals mined, I maynarded all of my workers to the other base, and did it at the new base.

I repeated this for each number of workers for each race, for a total of over 50 trials.



Anyway, with two five minute tests for each number of workers per race, I eventually came up with what I hope is an accurate representation of mining speed, as it varies with worker number. The graph of this result is in figure 1a below:

[image loading]
Figure 1a


To my surprise, my results painted a picture different from what I was expecting. I expected the conventional wisdom to be correct, that protoss mined minerals faster than other races, due to the probe’s superior acceleration. On the other hand, Elyvilon pointed out that as each mineral patch gets a worker mining, the acceleration will not matter as much; perhaps this is to be expcted. Also to my surprise, was that the results remained linear for far longer than I had expected. I thought that I would find a fairly rapidly decaying exponential curve. Although the curve looks logarithmic, the decay is very gradual, and is nearly a linear regression.

This also has implications on killing workers via storm drops and the like. Losing 4 workers when you had 15 to start out is pretty much the same mineral loss as losing 4 workers when you have 30 to start with. Losing one of your initial workers is obviously a much bigger deal than I realized. This also makes me think about when it's a good idea to pull probes or SCV's in defense.

Also important, is the increased amount of variation as the worker count increases. I believe this is due to small variations in the initial conditions, which leads the AI to choose different paths each time. If the worker AI was perfect, I have no doubt that there would be a clear ideal amount of workers.

To my mind, the most important thing to take away from this is just how well mining scales with the number of workers. I had thought that between 1 and two workers per patch would be the ideal number of workers. It’s clear that more workers than that is better. However, I’m not sure just how many is ideal. Clearly, with a main and natural operating with 30 workers each, it would be a prohibitive limitation to your food count. However, the data clearly shows that it would be advantageous to do so. When should the line be drawn?

[image loading]

Figure 2a


Figure 2a, above, shows the number of minerals mined per worker, using the same data as the previous graph. It appears to be more of an exponential decline than the other graph, but is still quite linear. Looking at this graph, we can get a much clearer sense of when we want to stop producing workers. Getting 200 minerals for a 50 mineral worker doesn’t seem so worth it. But still, those workers stay with you to use later, unless you suck at starcraft like me, and wind up losing all of them to a storm/reaver/DT/vulture/m&m drop. Again though, it seems to scale fairly well.

[image loading]

Figure 3a


Shown above, Figure 3a shows the extra amount of minerals gained by adding each worker. For example, a point at 15 workers shows how many extra minerals you get for adding your 15th worker up from 14. As you can see, the effective randomness in worker AI causes very drastic fluctuations. Because of the wild jumps in the graph, it might be less useful to add workers when you already have a high worker number. But also because of the wild jumps in the graph, it’s not so clear just when to stop.

Basically, this shows that worker AI is huge, and with a lot of workers, the AI is the determining factor. While I was testing this, I frequently saw something like 5 or 6 workers running around looking for mineral patches while there was an open patch or two on the edges. That kind of thing is the reason why the worker increment is so inconsistent.

Ultimately, it’s the individual’s choice as to how many workers to get. However, I hope I’ve provided you with enough data for you to make the choice for yourself. Well, I guess that was longer than two and a half minutes. I suppose you all aren’t as impotent as I thought you were. Thanks for reading, and I look forward to posting with a mutalisk.

Thanks to Elyvilon for editing help


On December 04 2008 08:42 SonuvBob wrote:
http://www.yellowchrome.org/1com/sclegacy/final_review.pdf

Above is a fascinating look at the same problem, but approached from a theoretical standpoint. Antrax (the author) brings up the problem of workers wandering, but can not address it. However, his results show the best numers in theory:

[image loading]

Note that this is theoretical results only


In starcraft and in real life, theory and practice are always different. In practice, the ideal number of workers is not clear, but antrax's report brings up an interesting comparison between theory and practice.
Force staff is the best item in the game.
NarutO
Profile Blog Joined December 2006
Germany18839 Posts
December 03 2008 08:36 GMT
#2
This is a really really good post. I'd say 2 1/2 workers / mineralblock is the best saturation. For most of the maps that would be 22. (at least at the starting position).

This is really worth a 2000 post :-)! Maybe I'll write more, but right now I just can't think about more than just "this is a good post!" Should be stickied imo, because we can discuss a lot.
CommentatorPolt | MMA | Jjakji | BoxeR | NaDa | MVP | MKP ... truly inspiring.
Guybrush
Profile Blog Joined December 2002
Spain4744 Posts
December 03 2008 08:42 GMT
#3
Wow, good job man
Live2Win is awesome. Happy new year scarabi!
thedeadhaji *
Profile Blog Joined January 2006
39489 Posts
December 03 2008 09:00 GMT
#4
I think it would be really interesting to see what happens with 40 workers, b/c as naruto says, the "conventional" knowledge saturation amount is 2.5'ish workers per patch, which corresponds to roughly 22.5 workers.

We should expect the minerals/5 mins to level off rapidly, and seeing how and where this occurs should be of interest.
CDRdude
Profile Blog Joined May 2007
United States5625 Posts
December 03 2008 09:18 GMT
#5
On December 03 2008 18:00 thedeadhaji wrote:
I think it would be really interesting to see what happens with 40 workers, b/c as naruto says, the "conventional" knowledge saturation amount is 2.5'ish workers per patch, which corresponds to roughly 22.5 workers.

We should expect the minerals/5 mins to level off rapidly, and seeing how and where this occurs should be of interest.

I'm actually interested in that too, but quite frankly, I was pretty damn sick of doing the trials, they take way too long. I also wanted to make my 2k post, so I didn't have to avoid posting out of fear of my post count rising. I'll probably expand it later in the week up to 3 control groups of workers.
Force staff is the best item in the game.
Signal
Profile Joined October 2008
United States9 Posts
December 03 2008 09:40 GMT
#6
This is odd. Someone else did the same test a while back and found that the marginal gains for each worker are actually greatest for the workers that bring you to the range of 2-3 per patch (with 0-1 being nearly as good and 1-2 being surprisingly awful), with the final worker being the most valuable. Their explanation was that the AI is particularly stupid in the 1-2 worker/patch range since they spend a lot of time finding empty patches, while once you get to 3/patch they don't see empty patches and therefore wait their turn.

Unfortunately, I can't find the study, but I do remember that the guy who did it started timing after his workers had stabilized (i.e. he had them mine for a few minutes and then started timing) whereas you took the opposite approach. The discrepancy between the two studies is predictable in terms of direction, but I would have thought that it wouldn't have been so severe (he found that the final worker is worth something like 100minerals/minute after stabilizing).
iLoveKT
Profile Blog Joined October 2008
Philippines3615 Posts
December 03 2008 09:45 GMT
#7
really good post. imo, ai pathfinding has a lot to do with this.
Woo Jung Ho
PH
Profile Blog Joined June 2008
United States6173 Posts
December 03 2008 10:10 GMT
#8
This is a great post. I'm VERY surprised at the nearly linear results of the first graph...

Great job. (:
Hello
stenole
Profile Blog Joined April 2004
Norway869 Posts
December 03 2008 10:16 GMT
#9
I would have expected to see the gain drop more when you got above 25 workers. I guess the implication of this is that delaying your expo isn't quite as damaging as it might seem.
CDRdude
Profile Blog Joined May 2007
United States5625 Posts
December 03 2008 23:07 GMT
#10
I should point out that this also has implications on killing workers via storm drops and the like. Losing 4 workers when you had 15 to start out is pretty much the same mineral loss as losing 4 workers when you have 30 to start with. Losing one of your initial workers is obviously a much bigger deal than I realized.

Also, worker AI is huge. While I was testing this, I frequently saw something like 5 or 6 workers running around looking for mineral patches while there was an open patch or two on the edges. That's the reason why the worker increment is so inconsistent. I'll add this to the OP.

@Signal: If there's any way you could find that study you referenced, I'd love to read it. I'm most surprised by the magnitude difference between that one and mine.
Force staff is the best item in the game.
Racenilatr
Profile Blog Joined August 2008
United States2756 Posts
December 03 2008 23:13 GMT
#11
wow....nice 2000th post. I wonder how big your10,000th post celebration will be :O
kemoryan
Profile Blog Joined December 2007
Spain1506 Posts
December 03 2008 23:17 GMT
#12
You can tell a game is great when 10 years after its release people are still studying it and making these awesome posts. Keep it up! =)
Freedom is a stranger
Mikilatov
Profile Blog Joined May 2008
United States3897 Posts
December 03 2008 23:24 GMT
#13
Happy 2,000.

Really interesting study and nice graphs to go with it. =) It's nice to have some data to go by rather than just basing it off rules of thumb which originated who knows where.
♥ I used to lasso the shit out of your tournaments =( ♥ | Much is my hero. | zizi yO~ | Be Nice, TL.
KwarK
Profile Blog Joined July 2006
United States43720 Posts
December 03 2008 23:28 GMT
#14
This means a lot for both storm drops and saturation. I'm very surprised at the linear results and the level of saturation required.
ModeratorThe angels have the phone box
Pokebunny
Profile Blog Joined June 2008
United States10654 Posts
December 03 2008 23:42 GMT
#15
WOowwowoo. I actually tried to do something like this but it was so tedious and I gave up. Thanks! It satisfied my curiousity which I tried to satisfy and failed. ^^

PS - For mining, did you split them? did you send them all to a certain patch? I just want to know which, not discrediting your results at all.
Semipro Terran player | Pokebunny#1710 | twitter.com/Pokebunny | twitch.tv/Pokebunny | facebook.com/PokebunnySC
SonuvBob
Profile Blog Joined October 2006
Aiur21550 Posts
December 03 2008 23:42 GMT
#16
http://www.yellowchrome.org/1com/sclegacy/final_review.pdf
Administrator
Pokebunny
Profile Blog Joined June 2008
United States10654 Posts
December 03 2008 23:44 GMT
#17
PSS - Wow, toss and terran had an epic 27th worker?!
Semipro Terran player | Pokebunny#1710 | twitter.com/Pokebunny | twitch.tv/Pokebunny | facebook.com/PokebunnySC
Nytefish
Profile Blog Joined December 2007
United Kingdom4282 Posts
December 03 2008 23:49 GMT
#18
On December 04 2008 08:42 Pokebunny wrote:
WOowwowoo. I actually tried to do something like this but it was so tedious and I gave up. Thanks! It satisfied my curiousity which I tried to satisfy and failed. ^^

PS - For mining, did you split them? did you send them all to a certain patch? I just want to know which, not discrediting your results at all.


It sounds weird to say this, but for the most accurate results you could use the auto-split function on oblivion.

People like to throw around 'exponential' a lot, but it's not really a very suitable word.
No I'm never serious.
CDRdude
Profile Blog Joined May 2007
United States5625 Posts
December 03 2008 23:52 GMT
#19
Pokebunny: I'm pretty sure I mentioned splitting the workers in the spoiler 'method detail'. Anyway, I split workers to each patch, with extras starting at the closest and working outwards. For example, 9 workers was 1 per patch, 13 was 1 worker per patch with 2 workers on 3 of the closest minerals. 17 was 1 worker per patch, and then a second worker per patch for every mineral patch except the furthest away. I don't think I'm phrasing this well, but I hope I get the point across.

The epic 27'th worker comes from variations in worker AI, which I think I mentioned.

SonuvBob: That's really interesting look at the theoretical aspect of mining, thanks for linking that! I'm going to add that to the OP if you don't mind.
Force staff is the best item in the game.
SonuvBob
Profile Blog Joined October 2006
Aiur21550 Posts
December 03 2008 23:55 GMT
#20
Sure, credit it to antrax

I think there was another one on TL somewhere, but I'm not sure.
Administrator
1 2 Next All
Please log in or register to reply.
Live Events Refresh
WardiTV Team League
12:00
Group B
WardiTV170
3DClanTV 12
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
Lowko309
SortOf 152
ProTech28
TKL 13
IndyStarCraft 5
StarCraft: Brood War
Britney 39945
Sea 2164
Killer 803
Jaedong 720
BeSt 463
Rush 381
Mini 283
EffOrt 268
Larva 241
Soma 225
[ Show more ]
Stork 184
Light 176
Snow 171
ZerO 106
Sharp 99
hero 78
ToSsGirL 78
Sea.KH 48
Mind 45
Shine 45
Backho 40
Barracks 27
[sc1f]eonzerg 25
soO 23
Movie 18
Bale 17
Icarus 14
Terrorterran 12
Noble 10
Dota 2
XaKoH 490
XcaliburYe324
canceldota80
BananaSlamJamma49
Counter-Strike
fl0m1912
pashabiceps1499
Fnx 1379
shoxiejesuss700
x6flipin280
Super Smash Bros
Mew2King48
Westballz17
Other Games
singsing3365
B2W.Neo894
crisheroes276
Sick193
hiko90
ToD62
QueenE43
Trikslyr18
ZerO(Twitch)8
Organizations
Dota 2
PGL Dota 2 - Main Stream149
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 14 non-featured ]
StarCraft 2
• musti20045 8
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• iopq 7
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• lizZardDota290
League of Legends
• Jankos675
Upcoming Events
Big Brain Bouts
4h 51m
LetaleX vs Babymarine
Harstem vs GgMaChine
Clem vs Serral
Korean StarCraft League
14h 51m
RSL Revival
21h 51m
Maru vs Zoun
Cure vs ByuN
uThermal 2v2 Circuit
1d 2h
BSL
1d 7h
RSL Revival
1d 21h
herO vs MaxPax
Rogue vs TriGGeR
BSL
2 days
Replay Cast
2 days
Replay Cast
2 days
Afreeca Starleague
2 days
Sharp vs Scan
Rain vs Mong
[ Show More ]
Wardi Open
2 days
Monday Night Weeklies
3 days
Sparkling Tuna Cup
3 days
Afreeca Starleague
3 days
Soulkey vs Ample
JyJ vs sSak
Replay Cast
4 days
Afreeca Starleague
4 days
hero vs YSC
Larva vs Shine
Kung Fu Cup
4 days
Replay Cast
5 days
The PondCast
5 days
WardiTV Team League
5 days
Replay Cast
6 days
WardiTV Team League
6 days
Liquipedia Results

Completed

Proleague 2026-03-18
WardiTV Winter 2026
Underdog Cup #3

Ongoing

KCM Race Survival 2026 Season 1
Jeongseon Sooper Cup
BSL Season 22
CSL Elite League 2026
RSL Revival: Season 4
Nations Cup 2026
BLAST Open Spring 2026
ESL Pro League S23 Finals
ESL Pro League S23 Stage 1&2
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual

Upcoming

ASL Season 21
Acropolis #4 - TS6
2026 Changsha Offline CUP
CSL 2026 SPRING (S20)
CSL Season 20: Qualifier 1
Acropolis #4
IPSL Spring 2026
Kung Fu Cup 2026 Grand Finals
HSC XXIX
uThermal 2v2 2026 Main Event
NationLESS Cup
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026
CCT Season 3 Global Finals
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.