Extra Builder

Imagine you are in a game jam. You want to publish to as many platforms as possible so more people would have a chance to play your game. But getting a build and uploading to itch takes time. And if you have more than one you have to wait until a build completes, switch to the new target platform, start a new build. While Unity is building you would try to upload the previous one to itch. It’s manageable if you have a few hours and are not very tired, frustrated, and angry. But if you’ve participated in a game jam before, you know it is never the case.

Wouldn’t it be great if there was a button to do it all for you? Which would get all builds, and without losing a second upload it to itch? Yes! Yes, it would!

Meet the Extra Builder! It is a package which does exactly that! Create a setting for each channel you want to post to, hit “Build All” then go make yourself a coffee. You deserved it!

Extra Builder in all its glory!

Requirements and setup

Of course, there is a little bit of setup which you have to do first. First of all, you need to have a page on itch.io for your game. Then you will need to have Butler installed and added to PATH. I’m not gonna explain how to do it. There is pretty good documentation for it on itch.

Finally, you will need to have a csc.rsp file in the Assets folder. It should have the following line:

-r:System.IO.Compression.FileSystem.dll

Without it, the package won’t compile. The reason for this is the compression. I’ve added a method to compress files to zip before uploading them to itch. And I’ve used the System.IO.Compression namespace, which lives in an assembly not referenced by default. This file adds the reference before compilation.

I couldn’t find a way to check for this file before compilation. If you know a way please let me know. It would be nice if everything worked out of the box.

Functionality

The basic functionality of this package is not complicated at all. If you check the Builder.cs script you will see that it is self-sufficient. Most of the code is related to additional functionality like configurations and report creation. The rest is just there to make your life a bit easier.

If you only use the base script you can get a build with set options using the context menu. But if you want to have a button for each individual build setup to get an individual build, then you will need the custom inspector drawer. Also, there is a small method to find all builders in the project.

If you check the build options you will see that you can have builds without uploading to itch. So this package should be useful even if you don’t plan to upload anything to itch.

Repo

Get the package from Github, check the code and let me know how bad it is. But more importantly, tell me how I can fix it and make it even more useful!