• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 07:24
CEST 13:24
KST 20:24
  • 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
[ASL22] Ro16 Preview: Holy Diver5[ASL22] Ro16 Preview: Rough Waters10[ASL22] Ro24 Preview: Siren's Call8[ASL22] Ro24 Preview: Summer's End9Serral wins HomeStory Cup 2915
Community News
Weekly Cups (Sep 7-12): SHIN, ByuN, MaxPax double down1StarCraft open world shooter announced at BlizzCon98Weekly Cups (Aug 30-Sep 7): herO thrives amid growing schism10Official StarCraft website teases new content ahead of BlizzCon?179Stellar Fest TWO the Moon (Dec 16-20)9
StarCraft 2
General
How do you feel about the StarCraft shooter announcement at BlizzCon 2026? Weekly Cups (Sep 7-12): SHIN, ByuN, MaxPax double down Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool StarCraft open world shooter announced at BlizzCon Balance hotfix patch 5.0.16b (July 16)
Tourneys
RSL Revival: Season 6 - Qualifiers and Main Event RSL goes to London! 2026 Offline Finals Nov 21-22 SC2 AI Tournament 2026 Fall Sparkling Tuna Cup - Weekly Open Tournament KSL Week #92
Strategy
[G] Having the right mentality to improve
Custom Maps
Nexus Wars 2021 GUIDE [M] (2) Industrial Park
External Content
Mutation # 543 Enhanced Defenses The PondCast: SC2 News & Results Mutation # 542 The Ascended Mutation # 541 Binary Choice
Brood War
General
ASL22 General Discussion a Announcement on the JEDI Ringing BGH Auto Balance -> http://bghmmr.eu/ Syncronization issues and can't find games [ASL22] Ro16 Preview: Holy Diver
Tourneys
KCM Race Survival 2026 Season 3 [ASL22] Ro16 Group D [ASL22] Ro16 Group C [Megathread] Daily Proleagues
Strategy
Replay Review Process - What do you do? Simple Questions, Simple Answers Odyssey Mineral Stack Saturation Game Theory for Starcraft
Other Games
General Games
Warcraft III: The Frozen Throne Nintendo Switch Thread Stormgate/Frost Giant Megathread EVE Corporation Diablo IV
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
[TL LoL EUW IHs] Teemo shall perish
Heroes of the Storm
Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
TL Mafia Community Thread
Community
General
US Politics Mega-thread Things Aren’t Peaceful in Palestine Russo-Ukrainian War Thread Canadian Politics Mega-thread Post Your Watch!
Fan Clubs
MarineLorD Fan Club The Creator Fan Club The ShoWTimE Fan Club
Media & Entertainment
[Manga] One Piece Movie Discussion! Diablo Animated Series on Netflix
Sports
Football (Soccer) Thread TeamLiquid Health and Fitness Initiative For 2023 MLB/Baseball 2023
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List Northern Ireland Global Starcraft
Blogs
[meme] I finally understa…
LUCKY_NOOB
Virtual Romance, Real-Life C…
TrAiDoS
Regacy Esports:Our Goa…
regacyesports
Dreaming of BW patches (mod…
c3rberUs
Customize Sidebar...

Website Feedback

Closed Threads



Active: 8882 users

Math in Starcraft pt.1

Blogs > ShinyGerbil
Post a Reply
1 2 Next All
ShinyGerbil
Profile Blog Joined June 2008
Canada519 Posts
January 10 2010 11:22 GMT
#1
Hey guys,

I've been wanting to do this for a while now, 'this' being make a blog about mathematical analysis of certain StarCraft phenomenon.

This edition will be looking at the following situation:

Problem: Mirror match, 10 Zerglings vs 8 Zerglings. How many Zerglings will survive on the 10 side once the 8 side is completely dead?

Obviously this takes many, MANY unrealistic assumptions into account. For one, 'no micro' (or perfect micro) is involved, because that would introduce references to chaos dynamics which are near impossible to deal with >_>. Second, I'm going to approximate damage and the life of the army as continuous functions. This has a larger percentage margin of error with such small numbers, but better approximates asymptotic results near infinity. However, I still think the end result is somewhat interesting, so just bare with me.

Note: to everyone in the future who wants to comment about how unrealistic and imperfect starcraft battles are, I completely agree. This blog is mostly meant to tackle abstractions and related ideas in math, for any type of real battle outcome expectation, I would suggest playing around with it yourself in the campaign editor.

Denote functions F and G as life/time for the two armies. That is, when we solve for x_0 when G[x_0] = 0, and then F[x_0] will be our answer.

Some things we know:
F[0] = 10
G[0] = 8

Also importantly, the rate of change of F is directly proportional to the size of G. (the more Zerglings the other guy has, the faster yours will die.) We can represent this with differential equations:

F' [x] = -kG[x] (1)
Similarly,
G' [x] = -kF[x] (2)
(Where k is the damage per second of 1 unit of F, i.e. 1 Zergling. )

Taking the derivative of (1) and subbing in (2) yields:
F'' [x] = -kG[x] = -k(-kF[x]) = (k^2)F[x] (and the same result for G'' [x])

Now we begin to think about the possible functions to represent such an equation. Immediately e^kx comes to mind, and possibly a trigonometric function. However with something like cos[kx], F'' [x] = (-k^2)cos[kx], which is not equal to the right side. The other less obvious solution to this equation is e^-kx, and thus functions F and G are actually linear combinations of e^kx and e^-kx.

Note: For the remainder of these calculations, we will disregard this 'k-factor', since intuitively, if Zerglings did half or twice as much damage, the battle would finish slower or faster, but the end result would be the same. So,

[image loading]


Answer: 6. If 10 Zerglings engaged 8 Zerglings in a perfect world, math says 6 Zerglings would survive.

Of course, the natural followup question is, how can we generalize this equation to starting armies of size a,b for any values with a>b. Since this blog is getting kind of long, I’ll leave this final problem to spoilers:

+ Show Spoiler +
Ok assuming F[0] = a and G[0] = b. We know that a = C1+C2 and b = C2-C1. Solving this yields:
C1 = (a-b)/2 and C2 = (a+b)/2

Now we once again find the root of G[x], and sub the result into F[x]:

[image loading]


So as we can see, if an army of ‘a’ Zerglings engages an army of ‘b’ Zerglings with a>b, the remaining number is speculated at sqrt(a^2-b^2), which I found very interesting because it maps out the sides of a right angled triangle (Pythagorean Triples). Some interesting applications include:
5 vs 4, 3 survive
13 vs 12, 5 survive
17 vs 15, 8 survive


This concludes my first blog post. I'm new at this, so please let me know what you think. I'm currently a first year math major in university, so I'm not infallible in the subject. Anything would be helpful, challenging my logic, suggestions for communication, layout, organization, or ideas in StarCraft that you would like analyzed.

Thanks again,
ShinyGerbil.

****
[s]savior[/s] jaedong fighting! // member of LighT eSports
Aim Here
Profile Blog Joined December 2009
Scotland672 Posts
January 10 2010 11:33 GMT
#2
If you're interested in this sort of thing, you might want to google the Starcraft course that took place at Berkeley at the start of last year, which had a roughly game-theoretic approach - video of a few of the lectures are available on Youtube.
alffla
Profile Blog Joined November 2005
Hong Kong20321 Posts
January 10 2010 11:35 GMT
#3
x_0 looks like a face :D:D

interesting but unfortunately i'm totally not a maths person

welcome to TL!
Graphicssavior[gm] : What is a “yawn” rape ;; Masumune - It was the year of the pig for those fucking defilers. Chill - A clinic you say? okum: SC without Korean yelling is like porn without sex. konamix: HAPPY BIRTHDAY MOMMY!
exeexe
Profile Blog Joined January 2010
Denmark937 Posts
January 10 2010 11:36 GMT
#4
you need to include that a damaged zerg heals and thus constantly will get more health. yes math like this is hard.
And never forget, its always easier to throw a bomb downstairs than up. - George Orwell
searcher
Profile Blog Joined May 2009
277 Posts
January 10 2010 12:05 GMT
#5
By using calculus you use a continuous solution to solve the problem. I'm not entirely sure the assumption is valid with only 8 zerglings. It is probably not far off but with 8-10 zerglings being off by one is a margin of error that sort of makes it a bit pointless. Also, unless you use Pythagorean triples like you have, you'll get non-integer results which are also not very useful. Furthermore it is unlikely you'll be able to build upon this solution, greater accuracy would require a discrete solution which would probably be a lot of tedious and difficult work into the simulation of zergling combat.
So you've probably done the best possible without writing a 10 page thesis and it was interesting. Thanks!
UFO
Profile Blog Joined August 2009
582 Posts
January 10 2010 12:23 GMT
#6
You can actually make it very useful in game but its usefulness depends on how close it is to perfect equation, meaning how close it is into including all possible factors. Still the experience based knowledge usually means learning the discernment faster for most people, so they don`t need maths at all to differ whether its worth for them to engage or not. In 95 % situations its not worth to engage with inferior number anyways so .....


Still - one who would understand the subtle difference between 95 % and 5 % situations - he would be able to use it, form new or modifyed strategies that would make use of this factor and what he would learn from that would let him gain even more knowledge about this and become even better player so - in the end this subtle difference would skyrocket his skills to lvls even unimaginable for those who ignore this 'little' things, to say he would be absolutely unbeatable

Actually this isn`t even crazy assumption nor is it exaggeration - its the reality.

There is a tremendous amount of usable knowledge even behind such seemingly vague concept. 10 lings vs 8 lings , if you understand this situation in and out and use it to full potential - then 8 lings can win vs 10 lings even if both players are good. Yes it is that useful.




d3_crescentia
Profile Blog Joined May 2009
United States4054 Posts
January 10 2010 13:01 GMT
#7
This is absolutely interesting and I just created a UMS map which will test this theory. I'm going to leave it running for the next few hours so I can get some nice data. Will post sometime later this afternoon!
once, not long ago, there was a moon here
StRyKeR
Profile Blog Joined January 2006
United States1739 Posts
Last Edited: 2010-01-10 15:55:13
January 10 2010 15:52 GMT
#8
Nice work!

As it stands, it underestimates the damage output of a unit, because in reality, a damaged unit does not do any less damage than a fully healed unit.

In order to compensate, you could let F(x), G(x) be the total hp of the armies and work out the equations

F' [x] = -k * CEILING(G[x] / 35.0)
Similarly,
G' [x] = -k * CEILING(F[x] / 35.0)

35.0 is the HP for a zergling. I don't think there is a closed form solution. It's probably close to the sum of exponentials solutions you got, but you never know -- discretization might have a bigger effect. It would be interesting to have a numerical solver output the solution curves (or steps, I guess).

Also the benefit of using hp is that it assumes the armies are "smart". As in, the damage being dealt will ALWAYS focus fire to kill off one unit at a time. For example, once G(x), the sum of all HPs, falls by 35, it assumes that a Zergling has been killed.

Of course, since Zerglings don't have range, even with the best micro, 20 Zerglings cannot simultaneously deal damage to one Zergling at a time. I will think of something for later.
Ars longa, vita brevis, principia aeturna.
MannerMan
Profile Blog Joined July 2008
371 Posts
January 10 2010 16:08 GMT
#9
I think perhaps the best way to assign damage dealt would be to assume the larger army engages one on one first and then two on one with the extras.

For melee units, especially.
Ecrilon
Profile Blog Joined October 2009
501 Posts
January 10 2010 16:19 GMT
#10
Well a more pressing realistic issue is that you're having 10 zerglings surrounding 1 zergling while 7 other zerglings surrounding one the the 10. They are all happily hammering away. With no micro at all, 10 zerglings in a line would lose just one or two zerglings against a line of 8. With perfect micro (in which zerglings attempt to attack in 2v1 and 1v1 situations), you might realistically lose around 7 or 8.
There is but one truth.
fight_or_flight
Profile Blog Joined June 2007
United States3988 Posts
January 10 2010 16:32 GMT
#11
Your analysis might be reasonable for 100 zerglings vs 60 zerglings, but treating the hp and damage as continuous functions is not realistic enough to give meaningful results with only 6 or 10. Also, you need to use probability with such low numbers as well. It really depends on which side attacks first, because once one zergling dies (the one who attacked second), then the remaining zergling may only have 1 hp, but now you have 2 zerglings attacking 1 zergling. This is not a continuous math problem, its a discrete problem (not surprising since this is a computer program...).

On January 10 2010 22:01 d3_crescentia wrote:
This is absolutely interesting and I just created a UMS map which will test this theory. I'm going to leave it running for the next few hours so I can get some nice data. Will post sometime later this afternoon!

What would be really interesting is if you could keep increasing the number and see if you can converge with his result. Make a map with 6 vs 10, 12 vs 20, 24 vs 40, etc.
Do you really want chat rooms?
Nogardeci89
Profile Blog Joined September 2009
United States113 Posts
January 10 2010 17:18 GMT
#12
Why only zerglings? Wheres the protoss love? ^_^
Cambium
Profile Blog Joined June 2004
United States16368 Posts
January 10 2010 17:23 GMT
#13
I think it's hard to predict the outcome with equations alone. The best way to approach this is through empirical experimentation, i.e. running a scenario on a UMS a hundred times.

Ha, Engineering vs. Math
When you want something, all the universe conspires in helping you to achieve it.
KawaiiRice
Profile Blog Joined May 2007
United States2914 Posts
January 10 2010 17:37 GMT
#14
Ehh ~_~_~ in a perfect world the 8 lings would be sitting on the ramp in a concave formation.
@KawaiiRiceLighT
love1another
Profile Blog Joined December 2009
United States1844 Posts
January 10 2010 18:25 GMT
#15
You should reallllly use a step function rather than a continuous function. The math is not much harder... i.e. taking the integral is actually much easier.
"I'm learning more and more that TL isn't the place to go for advice outside of anything you need in college. It's like you guys just make up your own fantasy world shit and post it as if you've done it." - Chill
pangshai
Profile Blog Joined January 2005
Chinatown5333 Posts
January 10 2010 18:39 GMT
#16
i skipped most of the math but i think it'll be interesting to compare your results with crescentia's UMS map testing to see how it works out.
#1 midas fan
d3_crescentia
Profile Blog Joined May 2009
United States4054 Posts
Last Edited: 2010-01-10 18:49:07
January 10 2010 18:40 GMT
#17
A few images of 10v8 runs I tried earlier this morning, and a short explanation of the process:
+ Show Spoiler +

[image loading]

First attempt.

[image loading]

Second attempt.

[image loading]

Third attempt.

The two ling groups are unallied from each other and are left to acquire their own targets for attack until one side emerges victorious. The remaining lings are counted and then ordered to move out of the way and killed, for the next set of lings to spawn. This was repeated for 101 trials for each attempt - which by no means is definitive, but it should give an idea of how accurate the mathematical model is.

The varying distances of each run were attempts to simulate what I feel is the ideal situation, where two parallel lines of zerglings are engaging combat. Commenting on that, the first run wasn't a very good simulation. The second and third were better, with (I believe) the second faring significantly better than the third - in the third the ling formation to bulge more often than the 2nd, perhaps due to the targeting AI.

After recording how many zerglings survived for 101 runs per attempt, we get the following distribution:
[image loading]
Something I threw together in Excel.

The number of surviving zerglings is counted for the first player, who started out with 10 zerglings. The number of instances of the number survived was counted and plotted in the above graph. In these trials there were no instances was the second player victorious. Based on the data, it does seem that the most probable outcome is either 6 or 7 surviving zerglings if they engage in two parallel lines relying on only the computer AI to acquire targets for attacking. I may end up trying to do some error analysis later to figure out the uncertainty, but I do find it interesting that it does seem to suggest that the math sort-of predicts the most likely outcome, even if the approach still has some kinks to be worked out. Perhaps later this evening I'll run the next case; 13v12.

Again, I'd like to state that I am not a statistician and that this study was done for exploratory purposes (and entertainment, to a small degree), and so my results may not be 100% accurate, though I made painstaking efforts into getting good data. If you have a little knowledge of UMS mapmaking, feel free to reproduce my trials on your own by modifying the map below. Also, I do not profess to be an excellent mapmaker, though I was glad to see that I haven't forgotten everything about UMS mapmaking these past 6 or so years.

Link to map: http://www.mediafire.com/?wybxdo3iyoi

Lastly, I'd like to say that while this might not have any significant application to 1v1 BW as we know it, it was a lot of fun doing this, and I'll keep you guys updated with anything else I end up doing with this.
once, not long ago, there was a moon here
Kwidowmaker
Profile Blog Joined October 2007
Canada978 Posts
January 10 2010 18:42 GMT
#18
On January 10 2010 21:05 searcher wrote:
By using calculus you use a continuous solution to solve the problem. I'm not entirely sure the assumption is valid with only 8 zerglings. It is probably not far off but with 8-10 zerglings being off by one is a margin of error that sort of makes it a bit pointless. Also, unless you use Pythagorean triples like you have, you'll get non-integer results which are also not very useful. Furthermore it is unlikely you'll be able to build upon this solution, greater accuracy would require a discrete solution which would probably be a lot of tedious and difficult work into the simulation of zergling combat.
So you've probably done the best possible without writing a 10 page thesis and it was interesting. Thanks!


I thought so too, but then I realised that there would still be problems with a large number of zerglings. He makes the assumptions that the rate of change your zerglings is proportional to the number of enemy zerglings, but this is only true if all zerglings are in engagement, something that doesn't happen with large numbers.
Kk.
DivinO
Profile Blog Joined July 2009
United States4796 Posts
January 10 2010 19:32 GMT
#19
This is seriously some of the most awesome math ever!
LiquipediaBrain in my filth.
obesechicken13
Profile Blog Joined July 2008
United States10467 Posts
January 10 2010 20:16 GMT
#20
Might I make a request for an excel spreadsheet calculating whether it'd be better to upgrade or to build more units to increase your damage output? The spreadsheet should have all the required constants I need to change eg: base damage, damage/upgrade, cost/unit, armor etc...

This could be useful in defence games like sunken D.
I think in our modern age technology has evolved to become more addictive. The things that don't give us pleasure aren't used as much. Work was never meant to be fun, but doing it makes us happier in the long run.
1 2 Next All
Please log in or register to reply.
Live Events Refresh
IntoTheTV X SOOP
11:00
Monthly #1 - Day 1
Cure vs SHINLIVE!
herO vs Solar
Percival vs Classic
ByuN vs Rogue
IntoTheiNu 784
CranKy Ducklings SOOP22
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
Lowko112
Rex 25
StarCraft: Brood War
Shuttle 2712
Bisu 1692
Horang2 754
Hyuk 487
Larva 412
Soma 272
EffOrt 260
Light 207
Mini 195
Zeus 187
[ Show more ]
Rush 183
Last 139
Snow 115
Pusan 112
Hm[arnc] 84
ZerO 67
Mong 61
hero 53
Killer 46
ToSsGirL 45
Sharp 30
sSak 24
Aegong 22
NaDa 21
Noble 11
Sacsri 11
sorry 9
JulyZerg 8
ajuk12(nOOB) 6
Britney 0
Dota 2
Dendi394
League of Legends
JimRising 389
Counter-Strike
olofmeister1280
byalli741
markeloff78
zeus9
Other Games
singsing1666
B2W.Neo498
shoxiejesuss498
DeMusliM229
Pyrionflax211
Sick155
OGKoka 115
Mew2King98
QueenE38
ZerO(Twitch)9
Organizations
Other Games
gamesdonequick776
[ Show 11 non-featured ]
StarCraft 2
• Berry_CruncH231
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• Migwel
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Jankos1569
• Stunt474
Upcoming Events
OSC
10h 36m
Replay Cast
12h 36m
IntoTheTV X SOOP
23h 36m
Replay Cast
1d 12h
GSL
1d 23h
Replay Cast
2 days
GSL
2 days
Shopify Rebellion Sundays
3 days
Spirit vs Mixu
Replay Cast
3 days
Afreeca Starleague
3 days
Shine vs Rush
[ Show More ]
WardiTV Weekly
3 days
Monday Night Weeklies
4 days
Sparkling Tuna Cup
4 days
Afreeca Starleague
4 days
Light vs EffOrt
PiGosaur Cup
5 days
Kung Fu Cup
5 days
The PondCast
6 days
Liquipedia Results

Completed

Acropolis #5 - TRS
Blizzard Classic Cup 2026
Big Dog Cup 2026 Div 1

Ongoing

KCM Race Survival 2026 Season 3
K-JUNGMAN
ASL Season 22
Super Anchor Qualifying S3
CSL 2026 AUTUMN (S22)
Acropolis #5
Calamity Invitational
Logitech G Play Connect 2026
SL StarSeries Fall 2026
FISSURE Playground #3
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
XSE Pro League 2026

Upcoming

Acropolis #5 - GSA
Acropolis #5 - GSB
Acropolis #5 - GSC
SC4ALL II: Brood War
HSC XXX
Stellar Fest 2: Lunar Cup
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
RSL Offline Finals
Copium Cup
PGL Major Singapore 2026
Stake Ranked Episode 6
BLAST Rivals Fall 2026
IEM Beijing 2026
Stake Ranked Episode 5
PGL Masters Bucharest 2026
1win Private Club #2
Thunderpick World Champ. '26
ESL Pro League Season 24
Stake Ranked Episode 4
1win Private Club #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.