Cloud compiling with Azure

Nov 20, 2020

I use Microsoft's Azure to do cloud compiles of the c++ engine for my new game. For Thimbleweed Park builds were hand compiled which took a lot of time and was very error prone. More than once I made DEBUG builds rather than RELEASE builds or forgot to change some debug setting back. It's nice to have builds compiled in the cloud and know they are from a pristine environment each time. I also don't have to keep a Windows machine (or a VM) around just to do a build.

Cloud builds are also critical for my (slow) move off the Mac to Linux (more on that later).

To compile the Windows build on Azure takes between 6 and 15 minutes which is crazy since I can compile the game locally in 1-2 minutes. Same with the Mac build. For me to get a new playtest or (more importantly) a dev engine build can take 15-30 minutes.

While waiting on compiles to fix a critical bug, I can't help but imagine Azure is running hundreds of jobs on some pour Windows machine stuffed in the corner of Steve Ballmer's old and forgotten office. I know this isn't true, but it's what it feels like when I desperately need a new engine.

I might give AppVeyor another try now they can do Mac builds. The .yml files for Azure and AppVeyor are annoyingly different so I've resisted doing a compile speed run-off.

On Azure you can pay for 2 jobs which does allow the Mac and Windows builds to compile concurrently, but what I really want is to run on less overloaded machines. It's not worth paying for a dedicated machine due to it being idle 99% of the time. Self-hosting is another option but it defeats the purpose of wanting to make maintaining machines "someone else's problem".

Ideally I would be able to get builds in less than 5 minutes.

Bitch. Bitch. Bitch.

Alexandre Garcia Mayans Nov 21, 2020
You should give bazel a go. It would allow you to recompile very efficiently.

Rex Bain Nov 21, 2020
Bazel doesn't provide cloud based CPUs to run xcode and VS jobs. I think that's what Ron wanted.

Rado Nov 21, 2020
What new game

Alexandre Garcia Mayans Nov 21, 2020
@Rex what? Bazel makes builds fast. Which is mostly what he is complaining about (slow builds)

Rex Bain Nov 21, 2020
Maybe I'm missing it, but Bazel doesn't maintain virtual machines in the cloud that users can runs compiles on?  It looks like a build system where you supply your own machine which is not what Ron was asking for?

Albert Nov 21, 2020
Both CircleCI and Github Actions also offer MacOS machines in addition to Windows and Linux, in case you want to give those a try. Are local builds incremental? I maintain CIs for a living and I'm surprised with the time difference between local and cloud if both are non-incremental builds.

David 🏴‍☠️ Nov 22, 2020
Virtual machines are a hog, self hosted servers have to be stable and secure, and Azure is slow.

I think it is reasonable to buy a dedicated testing computer.

Have a nice day!

Francesco Favia Nov 22, 2020
Well Ron, when are you going to tell us about the new game? :)

Ron Gilbert Nov 22, 2020
I don't have the time to fall down the rabbit hole of maintaining a self-hosted build machine.  The whole point of a cloud based solution is I can focus on my game and not be a IT person.  Azure works great, I just wish it was faster. Plus I'd have to buy 3 machines (Mac, Windows, Linux).

David 🏴‍☠️ Nov 22, 2020
[bold]I don't have the time to fall down the rabbit hole of maintaining a self-hosted build machine.[/bold]

But you have the time to wait 6 to 15 minutes / build, right?

[bold]Plus I'd have to buy 3 machines (Mac, Windows, Linux)[/bold]

Occupational hazards!

Steve Brown Nov 22, 2020
Apologies if it's too early to bring up things like launch-day platform support....but I recently acquired a Switch Lite as part of Steve Mnuchin's "How much can a loaf of bread even cost? $1200? Let's give everyone $1200, I guess" initiative and now I hope that Switch (or android) gets support nice and early.

After all, TWP is delightful to play outside on a pleasant day, on a hand-held I'll just quietly assume that [next game] will be likewise.

btw I'm willing to sweeten the deal by dropping another $5 in the tip jar, if that'll help! WHICH I ASSUME IT WILL!

Johan Windh Nov 24, 2020
Is there any chance of getting a single word of info on what this new game is about before the Orange is thrown out of the White House?

Paul Nov 25, 2020
I think the new game will probably be a prequel to Monkey Island called "A Portrait of the Pirate as a Young Man" and it will be a character study, charting Guybrush's turbulent adolescent years. The game ends around the time that Guybrush (who isn't called that back then) decides to cut all ties to his previous life, change his name to "Guybrush Threepwood" and head to Melee Island.

Big Red Button Nov 27, 2020
I fully understand that it makes you think about it, if your local device is so much faster than the cloud. I know the impact of load times on the speed of the work flow from my own job as well, since I essentially do CAD.
But sometimes it makes me think that we ought to get more patient. Our economies and lives are moving faster and faster. The whole world has become extremely fast moving already. So, I believe, people can stay healthy only if they slow down frequently. When my computer is busy for a longer while, I often just make the best of it, like going into the kitchen in order to refill my cup for example, instead of being annoyed about the waiting. In fact, we know that the computer is a hard worker in any case.
By the way, I have been watching your recent video conversation with the founder of the Video Game History Foundation (embedded in the blog entry above this one), in which you mention that it had taken hours to rebuild the first Monkey Island game back when you were developing it. So, it could have been worse, couldn't it?
However, I hope that you will successfully find an appropriate cloud service that is faster. Computing capacity is of course important for a smooth work flow.

Arvenius Nov 28, 2020
Im a total Azure Noob but I would imagine everything on there is virtualized anyway and runs on a huge cluster of boxes (probably ARM ones ;). So why shouldnt MS allow you to book more performance? The cloud is all about scaling things after all...

Bl@ster Nov 28, 2020
> Cloud builds are also critical for my (slow) move off the Mac to Linux (more on that later).

Waiting for that. _Now_ I'm thrilled.

David 🏴‍☠️ Nov 28, 2020
I totally agree with Arvenius and Big Red Button above, FWIW. I'm curious - why not upgrade the performance of the cloud server? My current hosting company allows us to upgrade or downgrade during high / low load dates (and charge more or less in doing that).

Just sayin' ;-)

gonzalo casas Nov 30, 2020
try github actions, it's much much faster compared to the alternatives I've tried so far (Travis, AppVeyor, circle ci).

angusmf Dec 06, 2020
Builds can usually be optimized to a fraction of the time. Try not to pull source every time and cache everything you can. That's low-hanging fruit usually.

ken Dec 12, 2020
Jonathan Blow would probably shed a tear to know Ron has to wait up to 15 minutes for a build. This is the kind of thing that has led to jai being a thing.

CaryMGVR Apr 02, 2021
You're making a another game AFTER "Thimbleweed Park" [TP] ...??
I hope it's not a graphic adventure, 'cause nothing will ever EVER top TP.
TP is the graphic adventure to end all graphic adventures.
It is the end all, be all, and represents the absolute PINNACLE of the artform.

Add your comment:

Here are the rules for commenting.