How are optimal Starcraft 2 builds discovered? Just trial and error?

You're looking for standard openings. Obviously by now with SC being out for years, there is an established meta with each patch changing it slightly.

This is subjective, as the things that separates builds from being successful are micro, player skill, opponent's decisions, maps and tons of other variables.

There have been hundreds of unit combinations that have been successful over the years. Terran has Marine Medivac Marauder as the standard for a very long time, then mech got buffed after years and was stronger than MMM.

To your question, there isn't going to be a standard answer that is acceptable. There IS however something you can look into...

Standard timings - you should have marines up at X time, stimpack done at X time, expansion done at X time...etc. There are thousands of guides out there that would take days to look into - which is what makes SC so fun!


Starcraft is a game about timing

Having the right structures/army at the right time is what starcraft builds are all about. Time is the most sacred resource in Starcraft. Builds are basically "time-tabled" guides to give you an advantage over your enemy at the right time, while avoiding your enemies timings. Avoiding in this context means stuff you can get away with. Simple example is a very large map where you know you can get away with an economical build without getting rushed down.

Getting the right units/structures at the right time is how Sc2 builds are developed. The focus is always a certain timewindow (early, mid and late game) where your structre and unit composition is most effective. You normally start with an generic build and trim it to make it faster/more efficent to suit your build goals. You can use algorithms help to trim a build, but you still need to know what you want at which time, so i dont know if "build generator" would really help ... since no AI can evalutate a build like a human can in the end.

And yes builds are tested by using them in matches, which is basically trail and error